docs/51770: [PATCH] Update anti-alias font section of handbook

Joe Marcus Clarke marcus at FreeBSD.org
Sun May 4 23:10:19 UTC 2003


>Number:         51770
>Category:       docs
>Synopsis:       [PATCH] Update anti-alias font section of handbook
>Confidential:   no
>Severity:       non-critical
>Priority:       high
>Responsible:    freebsd-doc
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          update
>Submitter-Id:   current-users
>Arrival-Date:   Sun May 04 16:10:16 PDT 2003
>Closed-Date:
>Last-Modified:
>Originator:     Joe Marcus Clarke
>Release:        FreeBSD 4.8-STABLE i386
>Organization:
MarcusCom, Inc.
>Environment:
System: FreeBSD shumai.marcuscom.com 4.8-STABLE FreeBSD 4.8-STABLE #9: Wed Apr 30 00:31:53 EDT 2003 marcus at shumai.marcuscom.com:/usr/obj/usr/src/sys/SHUMAI i386


	
>Description:
The anti-aliased fonts section of the handbook is severely out of date.
It still discusses the old XftConfig style of enable anti-aliasing.  All of
this has been pushed into fontconfig.  Attached is a diff to the x11
chapter of the handbook that brings this section in line with
Xft+fontconfig as well as updates the GNOME anti-aliasing section for
GNOME 2.
>How-To-Repeat:
	
>Fix:

	

--- chapter.sgml.diff begins here ---
Index: chapter.sgml
===================================================================
RCS file: /home/dcvs/doc/en_US.ISO8859-1/books/handbook/x11/chapter.sgml,v
retrieving revision 1.110
diff -u -r1.110 chapter.sgml
--- doc/en_US.ISO8859-1/books/handbook/x11/chapter.sgml	29 Apr 2003 20:47:06 -0000	1.110
+++ doc/en_US.ISO8859-1/books/handbook/x11/chapter.sgml	4 May 2003 23:02:40 -0000
@@ -693,46 +693,65 @@
     <sect2 id="antialias">
     <title>Anti-Aliased Fonts</title>
 
-    <para>Starting with version 4.0.2, <application>XFree86</application>
-      supports anti-aliased
-      fonts.  Currently, most software has not been updated to take
-      advantage of this new functionality.  However, Qt (the toolkit
-      for the <application>KDE</application> desktop) does; so if
-      <application>XFree86 4.0.2</application> is used
-      (or higher), Qt 2.3 (or higher) and <application>KDE</application>,
-      all KDE/Qt applications can be made to use anti-aliased
-      fonts.</para>
-
-    <para>To configure anti-aliasing, create (or edit, if
-      it already exists) the file
-      <filename>/usr/X11R6/lib/X11/XftConfig</filename>.  Several
-      advanced things can be done with this file; this section
-      describes only the simplest possibilities.</para>
-
-     <para>First, tell the X server about the fonts that are to be
-      anti-aliased.  For each font directory, add a line similar
-      to this:</para>
-
-      <programlisting>dir "/usr/X11R6/lib/X11/fonts/Type1"</programlisting>
-
-    <para>Likewise for the other font directories (URW, TrueType, etc)
-      containing fonts to be anti-aliased.  Anti-aliasing makes
-      sense only for scalable fonts (basically, Type1 and TrueType) so
-      do not include bitmap font directories here.  The
-      directories included here can now be commented out
-      of the <filename>XF86Config</filename> file.</para>
+    <para>Anti-aliasing has been available in 
+      <application>XFree86</application> since 4.0.2.  However
+      it was not easy to configure as it is in 
+      <application>XFree86</application> 4.3.0.  Starting in version 4.3.0, 
+      all fonts in <filename>/usr/X11R6/lib/X11/fonts/</filename> and
+      <filename>~/.fonts/</filename> are automatically 
+      made available for anti-aliasing to Xft-aware applications.  Not
+      all applications are Xft-aware yet, but many have received Xft support.
+      Examples of Xft-aware applications include Qt 2.3 and higher (the 
+      toolkit for the <application>KDE</application> desktop), 
+      Gtk+ 2.0 and higher (the toolkit for the 
+      <application>GNOME</application> desktop), and Mozilla 1.2 and higher.
+    </para>
+
+    <para>In order to control which fonts are anti-aliased, or to configure
+      anti-aliasing properties, create (or edit, if it already exists) the
+      file <filename>/usr/X11R6/etc/fonts/local.conf</filename>.  Several 
+      adavanced features of the Xft font system can be tuned using this file; 
+      this section describes only some simple possibilities.  For more details, 
+      please see fonts-conf(5).</para>
+
+     <para>This file must be in XML format.  Pay careful attention to case,
+       and make sure all tags are properly closed.  The file begins with
+       the usual XML header followed by a DOCTYPE definition, and
+       then the <fontconfig> tag:</para>
+
+      <programlisting>
+        <?xml version="1.0"?>
+        <!DOCTYPE fontconfig SYSTEM "fonts.dtd">
+        <fontconfig>
+      </programlisting>
+
+     <para>As previously stated, all fonts in
+       <filename>/usr/X11R6/lib/X11/fonts/</filename> as well as
+       <filename>~/.fonts/</filename> are already made available
+       to Xft-aware applications.  If you wish to add another directory
+       outside of these two directory trees, add a line similar to the
+       following to <filename>/usr/X11R6/etc/fonts/local.conf</filename>:
+     </para>
+
+      <programlisting><dir>/path/to/my/fonts</dir>
+      </programlisting>
 
     <para>Anti-aliasing makes borders slightly fuzzy, which makes very
       small text more readable and removes <quote>staircases</quote> from
       large text, but can cause eyestrain if applied to normal text.  To
-      exclude point sizes between 9 and 13 from anti-aliasing, include
+      exclude point sizes smaller than 14 point from anti-aliasing, include
       these lines:</para>
 
-      <programlisting>match
-  any size > 8
-  any size < 14
-edit
-  antialias = false;</programlisting>
+      <programlisting>
+        <match target="font">
+            <test name="size" compare="less">
+                <double>14</double>
+            </test>
+            <edit name="antialias" mode="assign">
+                <bool>false</bool>
+            </edit>
+        </match>
+      </programlisting>
 
     <para>Spacing for some monospaced fonts may also be inappropriate
       with anti-aliasing.  This seems to be an issue with
@@ -740,44 +759,80 @@
       this is to force the spacing for such fonts to be 100.  Add the
       following lines:</para>
 
-      <programlisting>match any family == "fixed"      edit family =+ "mono";
-match any family == "console"    edit family =+ "mono";</programlisting>
+     <programlisting>
+       <match target="pattern" name="family">
+           <test qual="any" name="family">
+               <string>fixed</string>
+           <edit name="family" mode="assign">
+               <string>mono</string>
+           </edit>
+        </match>
+        <match target="pattern" name="family">
+            <test qual="any" name="family">
+                <string>console</string>
+            <edit name="family" mode="assign">
+                <string>mono</string>
+            </edit>
+        </match>
+      </programlisting>
 
       <para>(this aliases the other common names for fixed fonts as
        <literal>"mono"</literal>), and then add:</para>
 
-      <programlisting>match any family == "mono" edit spacing = 100;</programlisting>
-
-      <para>Supposing the
-        <literal>Lucidux</literal> fonts as desired whenever
-        monospaced fonts are required (these look nice, and do not seem
-        to suffer from the spacing problem), replace that last
-        line with these:</para>
-
-      <programlisting>match any family == "mono"       edit family += "LuciduxMono";
-match any family == "Lucidux Mono"      edit family += "LuciduxMono";
-match any family == "LuciduxMono"       edit family =+ "Lucidux Mono";</programlisting>
-
-       <para>(the last lines alias different equivalent family names).</para>
-
-       <para>Finally, it is nice to allow users to add commands to this
-        file, via their personal <filename>.xftconfig</filename>
-        files.  To do this, add a last line:</para>
-
-       <programlisting>includeif  "~/.xftconfig"</programlisting>
+       <programlisting>
+         <match target="pattern" name="family">
+             <test qual="any" name="family">
+                 <string>mono</string>
+             <edit name="spacing" mode="assign">
+                 <int>100</int>
+             </edit>
+         </match>
+      </programlisting>
+
+       <para>Once you have finished editing <filename>local.conf</filename>
+         make sure you end the file with the </fontconfig> tag.
+	 Not doing this will cause your changes to be ignored.</para>
+
+       <para>The default font set that comes with 
+         <application>XFree86</application> is not very
+         desirable when it comes to anti-aliasing.  A much better
+	 set of default fonts can be found in the 
+	 <filename role="package">x11-fonts/bitstream-vera</filename>
+	 port.  This port will install a
+	 <filename>/usr/X11R6/etc/fonts/local.conf</filename> file
+	 if one does not exist already.  If the file does exist,
+	 the port will create a <filename>/usr/X11R6/etc/fonts/local.conf-vera
+	 </filename> file.  Merge the contents of this file into
+	 <filename>/usr/X11R6/etc/fonts/local.conf</filename>, and the 
+	 Bitstream fonts will automatically replace the default 
+	 <application>XFree86</application> Serif, Sans Serif, and Monospaced 
+	 fonts.</para>
+
+       <para>Finally, users can add their own settings via their personal 
+        <filename>.fonts.conf</filename> files.  To do this, each user should 
+	simply create a <filename>~/.fonts.conf</filename>.  This file must 
+	also be in XML format.</para>
 
        <para>One last point: with an LCD screen, sub-pixel sampling may be
         desired.  This basically treats the (horizontally separated)
         red, green and blue components separately to improve the horizontal
         resolution; the results can be dramatic.  To enable this, add the
-        line somewhere in the <filename>XftConfig</filename> file:</para>
-
-       <programlisting>match edit rgba=rgb;</programlisting>
+        line somewhere in the <filename>local.conf</filename> file:</para>
 
-       <para>(depending on the sort of display, the last word may need to
-	be changed from <quote>rgb</quote> to <quote>bgr</quote>,
-	<quote>vrgb</quote> or <quote>vbgr</quote>: experiment and see which
-	works best.)</para>
+       <programlisting>
+         <match target="font">
+             <test qual="all" name="rgba">
+                 <const>unknown</const>
+             </test>
+             <edit name="rgba" mode="assign">
+                 <const>rgb</const>
+             </edit>
+         </match>
+       </programlisting>
+
+       <para>(depending on the sort of display, <quote>rgb</quote> may need to
+	to <quote>bgr</quote>, <quote>vrgb</quote> or <quote>vbgr</quote>: 
+	experiment and see which works best.)</para>
 
        <para>Anti-aliasing should be enabled the next time the X server is
         started.  However, note that programs must know how to take
@@ -786,17 +841,12 @@
         can use anti-aliased fonts
         (see <xref linkend="x11-wm-kde-antialias"> on
         <application>KDE</application> for
-        details); there are patches for GTK+ to do the same,
-        so if compiled against such a patched GTK+, the GNOME environment
-        and Mozilla can also use anti-aliased fonts.  In fact, there
-	is now a port called <filename role="package">x11/gdkxft</filename>
-	which allows one to use antialiased fonts without recompiling: see
-        <xref linkend="x11-wm-gnome-antialias"> for details.</para>
-
-       <para>Anti-aliasing is still new to FreeBSD and
-        <application>XFree86</application>;
-        configuring it should get easier with time, and it will soon be
-        supported by many more applications.</para>
+        details).  Gtk+ and GNOME can also be made to use anti-aliasing
+	via the <quote>Font</quote> capplet (see
+	<xref linkend="x11-wm-gnome-antialias"> for details).  By default,
+	Mozilla 1.2 and greater will automatically use anti-aliasing.
+	To disable this, rebuild Mozilla with the 
+	<quote>-DWITHOUT_XFT</quote> flag.</para>
     </sect2>
   </sect1>
 
@@ -1104,12 +1154,12 @@
         <para>To install the <application>GNOME</application> package
           from the network, simply type:</para>
 
-        <screen>&prompt.root; <userinput>pkg_add -r gnome</userinput></screen>
+        <screen>&prompt.root; <userinput>pkg_add -r gnome2</userinput></screen>
 
         <para>To build <application>GNOME</application> from source, use
           the ports tree:</para>
 
-        <screen>&prompt.root; <userinput>cd /usr/ports/x11/gnome</userinput>
+        <screen>&prompt.root; <userinput>cd /usr/ports/x11/gnome2</userinput>
 &prompt.root; <userinput>make install clean</userinput></screen>
 
         <para>Once <application>GNOME</application> is installed,
@@ -1150,47 +1200,24 @@
       <sect3 id="x11-wm-gnome-antialias">
         <title>Anti-aliased fonts with GNOME</title>
 
-        <para>While anti-aliased fonts made their first appearance on
-	  <application>XFree86</application> desktops in the
-	  <application>KDE</application> environment and are supported there
-	  in the standard installation, it is also possible to use them with
-	  GTK applications such as the <application>GNOME</application>
-	  environment.  The most straightforward way is probably by
-          using the <application>libgdkxft</application> library, in
-	  the <filename role="package">x11/gdkxft</filename> port.  After
-	  installing this port, read the
-          <filename>/usr/X11R6/share/doc/gdkxft/README</filename> file
-          carefully.</para>
-
-        <para>Then, all that is needed is to tell GTK
-          applications to look for their font-rendering functions in
-          <filename>libgdkxft.so</filename> before looking in the
-          standard place, <filename>libgdk.so</filename>.  This is
-          easily accomplished by setting an environment variable to
-          point to the right place; with the Bourne shell
-          (<application>/bin/sh</application>) or similar shells, type
-          the command (to start <application>The Gimp</application>,
-          say)</para>
-
-	<screen>&prompt.user; <userinput>LD_PRELOAD=/usr/X11R6/lib/libgdkxft.so gimp</userinput></screen>
-
-        <para>and with csh and similar shells, type</para>
-
-	<screen>&prompt.user; <userinput>setenv LD_PRELOAD /usr/X11R6/lib/libgdkxft.so</userinput>
-&prompt.user; <userinput>gimp</userinput></screen>
-
-        <para>Or, the commands</para>
-
-	<programlisting>LD_PRELOAD=/usr/X11R6/lib/libgdkxft.so
-export LD_PRELOAD</programlisting>
-
-        <para>can be put into <filename>.xinitrc</filename>,
-          <filename>.xsession</filename> or in the appropriate
-          place(s) in
-          <filename>/usr/X11R6/lib/X11/xdm/Xsession</filename>,
-          depending on how X is normally started.  However, this
-          short-cut may cause problems if Linux GTK binaries are
-          run.</para>
+	<para>Starting with version 4.0.2, <application>XFree86</application>
+	  supports anti-aliasing via its <quote>RENDER</quote> extension.
+	  Gtk+ 2.0 and greater (the toolkit used by
+	  <application>GNOME</application> can make use of this
+	  functionality.  Configuring anti-aliasing is described in
+	  <xref linkend="antialias">.  So, with up-to-date software,
+	  anti-aliasing is possible within the
+	  <application>GNOME</application> desktop.  Just go to
+	  <guimenuitem>Applications</guimenuitem> ->
+	  <guimenuitem>Desktop Preferences</guimenuitem> ->
+	  <guimenuitem>Font</guimenuitem>, and select either
+	  <guibutton>Best shapes</guibutton>, 
+	  <guibutton>Best contrast</guibutton>, or
+	  <guibutton>Subpixel smoothing (LCDs)</guibutton>.  For a
+	  Gtk+ application that is not part of the 
+	  <application>GNOME</application> desktop, set the
+	  environment variable <varname>GDK_USE_XFT</varname> to
+	  <literal>1</literal> before launching the program.</para>
       </sect3>
     </sect2>
 
--- chapter.sgml.diff ends here ---


>Release-Note:
>Audit-Trail:
>Unformatted:



More information about the freebsd-doc mailing list