Defining fontsets
Emacs creates a standard fontset automatically according to the value
of standard-fontset-spec. This fontset's name is
-*-fixed-medium-r-normal-*-16-*-*-*-*-*-fontset-standard
or just fontset-standard for short.
Bold, italic, and bold-italic variants of the standard fontset are
created automatically. Their names have bold instead of
medium, or i instead of r, or both.
If you specify a default ASCII font with the Font resource or
the -fn argument, Emacs generates a fontset from it
automatically. This is the startup fontset and its name is
fontset-startup. It does this by replacing the foundry,
family, add_style, and average_width fields of the
font name with *, replacing charset_registry field with
fontset, and replacing charset_encoding field with
startup, then using the resulting string to specify a fontset.
For instance, if you start Emacs this way,
emacs -fn "*courier-medium-r-normal--14-140-*-iso8859-1"
Emacs generates the following fontset and uses it for the initial X
window frame:
-*-*-medium-r-normal-*-14-140-*-*-*-*-fontset-startup
With the X resource Emacs.Font, you can specify a fontset name
just like an actual font name. But be careful not to specify a fontset
name in a wildcard resource like Emacs*Font--that wildcard
specification matches various other resources, such as for menus, and
menus cannot handle fontsets.
You can specify additional fontsets using X resources named
Fontset-n, where n is an integer starting from 0.
The resource value should have this form:
fontpattern, [charsetname:fontname]...
fontpattern should have the form of a standard X font name, except
for the last two fields. They should have the form
fontset-alias.
The fontset has two names, one long and one short. The long name is
fontpattern. The short name is fontset-alias. You
can refer to the fontset by either name.
The construct charset:font specifies which font to
use (in this fontset) for one particular character set. Here,
charset is the name of a character set, and font is the
font to use for that character set. You can use this construct any
number of times in defining one fontset.
For the other character sets, Emacs chooses a font based on
fontpattern. It replaces fontset-alias with values
that describe the character set. For the ASCII character font,
fontset-alias is replaced with ISO8859-1.
In addition, when several consecutive fields are wildcards, Emacs
collapses them into a single wildcard. This is to prevent use of
auto-scaled fonts. Fonts made by scaling larger fonts are not usable
for editing, and scaling a smaller font is not useful because it is
better to use the smaller font in its own size, which is what Emacs
does.
Thus if fontpattern is this,
-*-fixed-medium-r-normal-*-24-*-*-*-*-*-fontset-24
the font specification for ASCII characters would be this:
-*-fixed-medium-r-normal-*-24-*-ISO8859-1
and the font specification for Chinese GB2312 characters would be this:
-*-fixed-medium-r-normal-*-24-*-gb2312*-*
You may not have any Chinese font matching the above font
specification. Most X distributions include only Chinese fonts that
have song ti or fangsong ti in family field. In
such a case, Fontset-n can be specified as below:
Emacs.Fontset-0: -*-fixed-medium-r-normal-*-24-*-*-*-*-*-fontset-24,\
chinese-gb2312:-*-*-medium-r-normal-*-24-*-gb2312*-*
Then, the font specifications for all but Chinese GB2312 characters have
fixed in the family field, and the font specification for
Chinese GB2312 characters has a wild card * in the family
field.
The function that processes the fontset resource value to create the
fontset is called create-fontset-from-fontset-spec. You can also
call this function explicitly to create a fontset.
See Font X, for more information about font naming in X.
|