changeset 100288:90ed2da05d21

(Font X): Distinguish between client-side and server-side fonts. List valid Fontconfig properties. Add reference to Fontconfig manual. List valid GTK font properties. Explain use of fc-list.
author Chong Yidong <cyd@stupidchicken.com>
date Tue, 09 Dec 2008 14:32:16 +0000
parents 7dc87d36d23b
children 69c56e35242e
files doc/emacs/cmdargs.texi
diffstat 1 files changed, 85 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/doc/emacs/cmdargs.texi	Tue Dec 09 14:32:02 2008 +0000
+++ b/doc/emacs/cmdargs.texi	Tue Dec 09 14:32:16 2008 +0000
@@ -818,11 +818,19 @@
 font in your X resources file, you should not quote it.
 
 @cindex fontconfig
+  Emacs recognizes two types of fonts: @dfn{client-side} fonts, which
+are provided by the Xft and Fontconfig libraries, and
+@dfn{server-side} fonts, which are provided by the X server itself.
+Most client-side fonts support advanced font features such as
+antialiasing and subpixel hinting, while server-side fonts do not.
+
   There are four different ways to express a ``font name''.  The first
-is to use the @dfn{Fontconfig format}, which has the following form:
+format consists of @dfn{Fontconfig patterns}.  Fontconfig patterns
+match only client-side fonts provided by Xft and Fontconfig, and have
+the following form:
 
 @smallexample
-@var{fontname}[-@var{fontsize}][:@var{property1}][:@var{property2}]...
+@var{fontname}[-@var{fontsize}][:@var{name1}=@var{values1}][:@var{name2}=@var{values2}]...
 @end smallexample
 
 @noindent
@@ -830,10 +838,38 @@
 Here, @var{fontname} is the ``family name'' of the font, such as
 @samp{Monospace} or @samp{DejaVu Serif}; @var{fontsize} is the ``point
 size'' of the font (one ``printer's point'' is about 1/72 of an inch);
-and the @var{property} entries specify font settings such as
-@samp{bold}, @samp{italic}, @samp{weight=bold}, @samp{slant=oblique},
-and so forth.  Here are some examples of specifying fonts using the
-Fontconfig format:
+and the @samp{@var{name}=@var{values}} entries specify settings such
+as the slant and weight of the font.  Each @var{values} may be a
+single value, or a list of values separated by commas.  In addition,
+some property values are valid with only one kind of property name, in
+which case the @samp{@var{name}=} part may be omitted.
+
+Here is a list of common font properties:
+
+@table @samp
+@item slant
+One of @samp{italic}, @samp{oblique} or @samp{roman}.
+
+@item weight
+One of @samp{light}, @samp{medium}, @samp{demibold}, @samp{bold} or
+@samp{black}.
+
+@item style
+Some fonts define special styles which are a combination of slant and
+weight.  For instance, the font @samp{Dejavu Sans} defines the style
+@samp{book}.  This property, if specified, overrides the slant and
+weight properties.
+
+@item width
+One of @samp{condensed}, @samp{normal}, or @samp{expanded}.
+
+@item spacing
+One of @samp{monospace}, @samp{proportional}, @samp{dual-width}, or
+@samp{charcell}.
+@end table
+
+@noindent
+Here are some examples of Fontconfig patterns:
 
 @smallexample
 Monospace
@@ -843,16 +879,40 @@
 Monospace-12:weight=bold:slant=italic
 @end smallexample
 
-  The second way to specify a font is to use the @dfn{GTK format}.
-This has the syntax
+See the Fontconfig manual for a more detailed description of
+Fontconfig patterns.  This manual is located in the file
+@file{fontconfig-user.html}, which is distributed with Fontconfig.  It
+is also available online at
+@url{http://fontconfig.org/fontconfig-user.html}.  In particular, the
+manual describes additional font properties that influence how the
+font is hinted, antialiased, or scaled.
+
+  The second way to specify a font is to use a @dfn{GTK font
+description}.  Like Fontconfig patterns, GTK font descriptions match
+only client-side fonts provided by Xft and Fontconfig.  They have the
+syntax
 
 @smallexample
 @var{fontname} [@var{properties}] [@var{fontsize}]
 @end smallexample
 
+@noindent
 where @var{fontname} is the family name, @var{properties} is a list of
-font properties separated by spaces, and @var{fontsize} is the point
-size.  For example:
+property values separated by spaces, and @var{fontsize} is the point
+size.  The properties that you may specify are as follows:
+
+@table @samp
+@item style
+One of @samp{roman}, @samp{italic} or @samp{oblique}.  If omitted, the
+@samp{roman} style is used.
+@item weight
+One of @samp{medium}, @samp{ultra-light}, @samp{light},
+@samp{semi-bold}, or @samp{bold}.  If omitted, @samp{medium} weight is
+used.
+@end table
+
+@noindent
+Here are some examples of GTK font descriptions:
 
 @smallexample
 Monospace 12
@@ -944,14 +1004,24 @@
 @end smallexample
 
 @noindent
-is equivalent to @samp{6x13}.
+is equivalent to @samp{6x13}.  This is the fourth and final method of
+specifying a font.
 
 @cindex listing system fonts
   You will probably want to use a fixed-width default font---that is,
-a font in which all characters have the same width.  Any font with
-@samp{m} or @samp{c} in the @var{spacing} field of the XLFD is a
-fixed-width font.  Here's how to use the @command{xlsfonts} program to
-list all the fixed-width fonts available on your system:
+a font in which all characters have the same width.  Here's how to use
+the @command{fc-list} command to list all fixed-width Xft and
+Fontconfig fonts available on your system:
+
+@example
+fc-list :spacing=mono
+fc-list :spacing=charcell
+@end example
+
+  For server-side X fonts, any font with @samp{m} or @samp{c} in the
+@var{spacing} field of the XLFD is a fixed-width font.  Here's how to
+use the @command{xlsfonts} program to list all the fixed-width fonts
+available on your system:
 
 @example
 xlsfonts -fn '*x*' | egrep "^[0-9]+x[0-9]+"