Quack's pretty-lambda fontification may work out the the box with Carbon Emacs, but when it doesn't it can be a pain to configure. There are two main stumbling blocks you may encounter.


First, you'll want to use a recent CVS version such as 2005-12-11. Version 2005-04-28 does not like the iso10646-1 font encoding, which limits your font options greatly. Additionally, version 2006-03-25 crashed frequently for me. Once you have a version with iso10646-1 support, lambda display generally works out of the box, and the dreaded 'hollow box' issue rarely rears its head.

Second, Quack uses composition to replace the word lambda with the Greek letter, but for whatever reason, composition does not work correctly with bitmapped fonts. Included in bitmapped fonts here are fonts that are not anti-aliased at small sizes, such as Monaco 10 and Symbol 10.

Default fontsets

Using a recent version of Carbon Emacs, the default fontset fontset-default (Monaco 12) will display the letter lambda correctly. This is because this fontset maps all the Emacs charsets (such as greek-iso8859-7, containing lambda) to iso10646-1 (Unicode) versions of Monaco, and because Monaco 12 is anti-aliased.

Furthermore, fontset-mac (ETL 14) works as well; it has a large number of special cases for various characters, including Symbol 12 for the Greek lambda.

A smaller version of Monaco

Most likely you'll have your own font preference, and you may have created a fontset for it. Quack uses the lambda character from greek-iso8859-7, so your fontset must a) be able to display this character and b) display it anti-aliased. Here is a simple example using Monaco 10:

; Create a fontset called fontset-monaco

; Use fontset-monaco in all frames
(setq initial-frame-alist `((width . 103) (height . 67) 
                            (font . "fontset-monaco")))
(setq default-frame-alist initial-frame-alist)

You haven't specified a font for greek-iso8859-7, so Emacs defaults it to -*-iso10646-1, which should map to the Unicode encoding for Monaco 10, and be displayed correctly.

(In an odd twist, any -iso10646-1 encoded font will be displayed with anti-aliasing, no matter the size or whether you have requested anti-aliasing be disabled. This is to our advantage due to the composition problem mentioned earlier, although it can be annoying when working with Unicode in general.)

Advanced: Using a font lacking lambda

You might like to use a font which does not contain a lambda character. For example, I use a font of my own design which covers only ASCII. In this case Emacs maps greek-iso-8859-7 to another font--Abadi MT on my system. To change to Monaco 10, which meshes better with the ASCII font, add a greek-iso8859-7 charset to the fontset:


or alternatively, set a font for only one character:

(set-fontset-font "fontset-fixedr12" 
		  (make-char 'greek-iso8859-7 107)   ; lambda is code point 107

Lack of iso10646-1 support

If you're stuck with an earlier version of Carbon Emacs that cannot display iso10646-1 encodings, you can use the Symbol font:


I use Symbol 12 here because Symbol 10 is not anti-aliased and the lambda will not be composed correctly.