efaq: How to add fonts
10.4 How do I add fonts for use with Emacs?
===========================================
First, download and install the BDF font files and any auxiliary
packages they need. The GNU Intlfonts distribution can be found on the
GNU Software Directory Web site
(http://directory.fsf.org/localization/intlfonts.html).
Next, if you are on X Window system, issue the following two commands
from the shell’s prompt:
xset +fp /usr/local/share/emacs/fonts
xset fp rehash
(Modify the first command if you installed the fonts in a directory that
is not ‘/usr/local/share/emacs/fonts’.) You also need to arrange for
these two commands to run whenever you log in, e.g., by adding them to
your window-system startup file, such as ‘~/.xsessionrc’ or
‘~/.gnomerc’.
Now, add the following line to your ‘~/.emacs’ init file:
(add-to-list 'bdf-directory-list "/usr/share/emacs/fonts/bdf")
(Again, modify the file name if you installed the fonts elsewhere.)
Finally, if you wish to use the installed fonts with ‘ps-print’, add
the following line to your ‘~/.emacs’:
(setq ps-multibyte-buffer 'bdf-font-except-latin)
A few additional steps are necessary for MS-Windows; they are listed
below.
First, make sure _all_ the directories with BDF font files are
mentioned in ‘bdf-directory-list’. On Unix and GNU/Linux systems, one
normally runs ‘make install’ to install the BDF fonts in the same
directory. By contrast, Windows users typically don’t run the Intlfonts
installation command, but unpack the distribution in some directory,
which leaves the BDF fonts in its subdirectories. For example, assume
that you unpacked Intlfonts in ‘C:/Intlfonts’; then you should set
‘bdf-directory-list’ as follows:
(setq bdf-directory-list
'("C:/Intlfonts/Asian"
"C:/Intlfonts/Chinese" "C:/Intlfonts/Chinese.X"
"C:/Intlfonts/Chinese.BIG" "C:/Intlfonts/Ethiopic"
"C:/Intlfonts/European" "C:/Intlfonts/European.BIG"
"C:/Intlfonts/Japanese" "C:/Intlfonts/Japanese.X"
"C:/Intlfonts/Japanese.BIG" "C:/Intlfonts/Korean.X"
"C:/Intlfonts/Misc"))
Next, you need to set up the variable ‘w32-bdf-filename-alist’ to an
alist of the BDF fonts and their corresponding file names. Assuming you
have set ‘bdf-directory-list’ to name all the directories with the BDF
font files, the following Lisp snippet will set up
‘w32-bdf-filename-alist’:
(setq w32-bdf-filename-alist
(w32-find-bdf-fonts bdf-directory-list))
Now, create fontsets for the BDF fonts:
(create-fontset-from-fontset-spec
"-*-fixed-medium-r-normal-*-16-*-*-*-c-*-fontset-bdf,
japanese-jisx0208:-*-*-medium-r-normal-*-16-*-*-*-c-*-jisx0208.1983-*,
katakana-jisx0201:-*-*-medium-r-normal-*-16-*-*-*-c-*-jisx0201*-*,
latin-jisx0201:-*-*-medium-r-normal-*-16-*-*-*-c-*-jisx0201*-*,
japanese-jisx0208-1978:-*-*-medium-r-normal-*-16-*-*-*-c-*-jisx0208.1978-*,
thai-tis620:-misc-fixed-medium-r-normal--16-160-72-72-m-80-tis620.2529-1,
lao:-misc-fixed-medium-r-normal--16-160-72-72-m-80-MuleLao-1,
tibetan-1-column:-TibMdXA-fixed-medium-r-normal--16-160-72-72-m-80-MuleTibetan-1,
ethiopic:-Admas-Ethiomx16f-Medium-R-Normal--16-150-100-100-M-160-Ethiopic-Unicode,
tibetan:-TibMdXA-fixed-medium-r-normal--16-160-72-72-m-160-MuleTibetan-0")
Many of the international bdf fonts from Intlfonts are type 0, and
therefore need to be added to font-encoding-alist:
(setq font-encoding-alist
(append '(("MuleTibetan-0" (tibetan . 0))
("GB2312" (chinese-gb2312 . 0))
("JISX0208" (japanese-jisx0208 . 0))
("JISX0212" (japanese-jisx0212 . 0))
("VISCII" (vietnamese-viscii-lower . 0))
("KSC5601" (korean-ksc5601 . 0))
("MuleArabic-0" (arabic-digit . 0))
("MuleArabic-1" (arabic-1-column . 0))
("MuleArabic-2" (arabic-2-column . 0)))
font-encoding-alist))
You can now use the Emacs font menu to select the ‘bdf: 16-dot
medium’ fontset, or you can select it by setting the default font in
your ‘~/.emacs’:
(set-default-font "fontset-bdf")