home *** CD-ROM | disk | FTP | other *** search
- Path: sparky!uunet!stanford.edu!apple!cambridge.apple.com!lynch@ils.nwu.edu
- From: lynch@ils.nwu.edu
- Newsgroups: comp.lang.lisp.mcl
- Subject: view-font/set-view-font
- Message-ID: <9212220055.AB16498@aristotle.ils.nwu.edu>
- Date: 22 Dec 92 00:55:53 GMT
- Sender: info-mcl-request@cambridge.apple.com
- Lines: 81
- Approved: comp.lang.lisp.mcl@Cambridge.Apple.C0M
-
- I've been having trouble with fonts.
-
- I have some fancy windows that have 2 different fonts mixed.
-
- set-view-font seems to be additive, rather than wholesale font-setting as
- the docs seem to indicate. This seems kind of goofy, but I can almost see
- a logic to it. Unfortunately, it's not at all indicated in the manual, and
- mixing :plain with :bold to change :italic to :bold was sheer inspiration
- on my part, since I'm used to the convention that :plain doesn't mix with
- anything; it gets rid of everything. ['Least, that's how the various
- applications that have a style menu do it.]
-
- All that said, I am still at a loss to explain how :italic creeps in and
- stays there in the following code:
-
- (defclass sample (dialog)
- ()
- (:default-initargs
- :view-font '("Helvetica" 30 :plain :bold)
- :view-size #@(600 400)
- ) )
-
- (defmethod view-draw-contents :after ((view sample))
- (print (view-font view))
- (let ((font '("Helvetica" 18 :italic))
- (old-font (view-font view))
- )
- (set-view-font view font)
- (print (view-font view))
- (with-pstrs ((str (format nil "~A" font)))
- (#_MoveTo 4 50)
- (#_DrawString str))
- (set-view-font view old-font))
- (let ((old-font (view-font view)))
- (with-pstrs ((str (format nil "~A" '("New York" 18 :bold))))
- (set-view-font view '("New York" 18 :bold))
- (print (view-font view))
- (#_MoveTo 4 100)
- (#_DrawString str)
- (set-view-font view old-font)))
- (let ((old-font (view-font view)))
- (with-pstrs ((str (format nil "~A" '("New York" 18 :plain :bold))))
- (set-view-font view '("New York" 18 :plain :bold))
- (print (view-font view))
- (#_MoveTo 4 150)
- (#_DrawString str)
- (set-view-font view old-font)))
- (with-pstrs ((str (format nil "~A" (view-font view))))
- (print (view-font view))
- (#_MoveTo 4 200)
- (#_DrawString str)))
-
- (make-instance 'sample)
-
- Note that the only time '("Helvetica" 30 :plain :bold) is achieved is
- before anything is drawn: Once drawing has occurred, it remains :italic
- and :bold.
-
- The only fix I could find was to ignore the original view-font and simply
- hard-wire each font I wanted at any given time, using :plain mixed with
- :bold or :italic to cancel the unwanted styles. I had hoped that the
- windows could have *one* font that I could change in only *one* place to
- alter all the windows, but even that modicum of modularity proved
- impossible.
-
- btw, I thought about using set-font-codes just because the docs say: "You
- should not write methods for this function; use set-view-font-codes
- instead", but:
-
- A: There's no chart in the MCL manual [that I could find] for what codes
- mean what. Probably in some Inside Mac volume, but those are locked up
- right now. Oh well.
-
- B: I really don't think it's good style [pun intended] to have code that
- goes:
- (set-view-font-codes view XXXX XXXX XXXX XXXX) when
- (set-view-font view '("Helvetica" 30 :bold)) is an option that should work.
- Any idiot can read and maintain the latter; the former is gibberish.
- --
- --
- -- "TANSTAAFL" Rich lynch@ils.nwu.edu
-