-------- Original Message --------
Subject: X11R7 font server and utilities [LSARC/2008/009 FastTrack timeout
01/14/2008]
Date: Mon, 07 Jan 2008 18:24:19 -0800 (PST)
From: Alan Coopersmith <[email protected]>
To: LSARC-ext at Sun.COM
CC: xserver-group at Sun.COM
Template Version: @(#)sac_nextcase 1.64 07/13/07 SMI
This information is Copyright 2008 Sun Microsystems
1. Introduction
1.1. Project/Component Working Name:
X11R7 font server and utilities
1.2. Name of Document Author/Supplier:
Author: Alan Coopersmith
1.3 Date of This Document:
07 January, 2008
4. Technical Description
This project delivers the X11R7 versions of the X font server and
several related X utilities that operate directly on font files,
replacing the current versions based on Sun's fork of X11R6.
Changes that affect all font programs:
--------------------------------------
These programs all utilize the Consolidation Private X font library to
handle the various font file formats and font metadata/index files.
Previously they used the /usr/openwin/server/lib/libfont.so.1
delivered with the Xsun server - this project migrates them to
utilitizing instead the /usr/X11/lib/X11/xserver/libXfont.so.1
delivered with the Xorg server. While the API's in the two are almost
the same (Sun previously made some changes in our fork which we're not
carrying forward), there are some user-visible effects in terms of the
handling for various font formats.
The old libfont.so.1 included support for the F3 scalable font format.
Support for this format was EOF'ed long ago, but the code never disabled
or removed. In July 1997, the Solaris 2.6 Release Notes stated:
Support for F3 fonts and the TypeScaler rasterizer, SunSoft's
proprietary scalable font technology, is no longer available in
Solaris 2.6. SunSoft plans to enhance the font technology offering
in Solaris and has chosen to focus support only on the two
industry standard font formats:
* Type1
* TrueType
F3 fonts will be removed in releases of Solaris greater than 2.6.
End-of-Life specifies that in all releases of Solaris greater
than 2.6 during the next 5 years, the 57 F3 fonts and the
TypeScaler rasterizer may not necessarily ship with the Solaris
software but the 57 fonts have to be installed from an optional
package. The fonts may no longer be found in the End User
Cluster. Typescaler rasterizer support will continue to be part of
the window server for the next 5 years. If you want to continue to
use F3 fonts, you will need to install them from the optional
package.
The new libXfont does not support this font format, finally carrying out
the final phase of this EOF after 10 years, instead of the promised 5.
The old libfont incorporated a proprietary TrueType engine that Sun
licensed from a third-party for Solaris 2.6 and later. The new
libXfont replaces this with calls to the open source FreeType library
that handles not only the original TrueType format (.ttf), but adds
support for TrueType Collections files (.ttc) and OpenType format
fonts (.otf) as well.
The old libfont supported CID-keyed PostScript Type 1 Fonts.
These were originally created to support East Asian character sets in
Type 1 fonts, but have since been replaced almost universally by
TrueType and OpenType fonts. Removal of CID fonts in Solaris was
listed as a future EOF in the Solaris 9 release notes, and the last
known CID fonts shipped in Solaris were removed in s10_48. X.Org
removed CID font support in X11R7.2, and Xorg in Solaris dropped this
support in the 7.2 integration (PSARC 2007/051).
For character set encoding definitions, the software will use the
tables provided with the new libXfont in /usr/X11/lib/X11/fonts/encodings
instead of the encoding tables provided by the old libfont in
/usr/openwin/lib/X11/fonts/encodings and
/usr/openwin/lib/X11/fonts/TrueType/ttmap.
Since after this project completes, the only consumer of libfont and its
associated files will be Xsun itself, and the X servers based upon it, this
project will move those files from SUNWxwfsw (the X Window System Font
Software package) to SUNWxsun-server.
All the utilities being upgraded will be moved from /usr/openwin/bin to
/usr/X11/bin as part of this migration, with symlinks left for backwards
compatibility.
Individual program changes:
---------------------------
xfs - the X font server:
X.Org has added several options to xfs, which are mainly useful for
starting xfs as a standalone daemon, as many Linux distros do, instead
of utilizing inetd to start it as Solaris defaults to.
We will support these options, though we only provide an SMF manifest
for inetd operation, not standalone daemon mode:
-daemon
instructs xfs to fork and go into the background
automatically at startup. If this option is not speci-
fied, xfs will run as a regular process (unless it was
built to daemonize by default). When running as a dae-
mon, xfs will attempt to create a file /var/run/xfs.pid
in which it stores its process ID, and will delete that
file upon exit.
-nodaemon
instructs xfs not to daemonize (fork and detach from
its controlling terminal). This option only has an
effect if xfs is built to daemonize by default, which
is not the stock configuration.
-droppriv
instructs xfs to attempt to run as user and group xfs
(unless the -user option is used). This has been
implemented for security reasons, as xfs may have
undiscovered buffer overflows or other paths for possi-
ble exploit, both local and remote. When using this
option, you may also wish to specify no-listen = tcp in
the config file, which ensures that xfs will not to use
a TCP port at all. By default, xfs runs with the user
and group IDs of the user who invoked it.
-user username
instructs xfs to run as the user username. See -drop-
priv for why this may be desired. By default, xfs runs
with the user and group IDs of the user who invoked it.
A new option has been added to the xfs configuration file as well:
no-listen (trans-type)
disables the specified transport type. For example,
TCP/IP connections can be disabled with:
no-listen = tcp
The previous xfs used the first configuration file found in the list:
/etc/openwin/fs/fontserver.cfg
/usr/openwin/lib/X11/fontserver.cfg
and delivered the default configuration to
/usr/openwin/lib/X11/fontserver.cfg
The X11R7 xfs defaults to /usr/lib/X11/fs/config, and delivers its
default there. (On Solaris, /usr/lib/X11 is a symlink to /usr/X11/lib.)
To preserve compatibility and the ability for admins to have site/zone
specific configuration files in /etc, the xfs delivered by this project
will use the first configuration file found in the list:
/etc/X11/fontserver.cfg
/usr/X11/lib/X11/fs/config
/etc/openwin/fs/fontserver.cfg
/usr/openwin/lib/X11/fontserver.cfg
The default configuration file will be delivered in
/usr/X11/lib/X11/fs/config.
If logging of messages via syslog(3) is enabled (it's off by default),
the old xfs specified an identifier of "Font Server" and a facility of
LOG_LOCAL0 - the new xfs uses the identifier "xfs" and LOG_DAEMON.
mkfontscale - create an index of scalable font files for X
XFree86 introduced, and X11R6.7 later adopted, this program to generate
the fonts.scale index files that mkfontdir needs to include TrueType and
Postscript format scalable fonts in fonts.dir files so they may be used
by the X server and X font server. Since it overlapped with much of
the mkfontdir code, it was eventually merged with mkfontdir into a single
binary, that can now create both the fonts.scale and font.dir index files.
This project adds mkfontscale to Solaris. The case materials include
mkfontscale.man documenting the command line syntax and options.
mkfontdir - create an index of X font files in a directory
As the functionality of mkfontdir has been subsumed into
mkfontscale, mkfontdir is now simply a shell script that calls
mkfontscale with appropriate options. The previous Solaris
version only accepted directory names on the command line, but
this version supports several command line flags. See the
mkfontdir.man file in the case materials for details.
makebdf - create bitmap files from scalable F3 or X11/NeWS font files
As these font formats are no longer supported, this project removes
/usr/openwin/bin/makebdf and provides no replacement for it.
Release Bindings
----------------
While there are no plans to backport at this time, we believe the addition
of mkfontscale qualifies for patch/update release binding.
For the other changes, since they remove support for EOF'ed font formats, we
are only requesting minor release binding.
Interfaces Imported
-------------------
/usr/X11/lib/X11/xserver/libXfont.so.1
Consolidation Private PSARC 2007/051
fonts.dir & fonts.scale Standard PSARC 1992/133
X Font Server protocol Standard PSARC 1992/133
/usr/openwin/bin/xfs Public PSARC 1992/133
/usr/openwin/bin/mkfontdir Public PSARC 1992/133
/usr/openwin/bin/makebdf Public PSARC 1992/133
Interfaces Exported
-------------------
/usr/X11/bin/xfs Committed [1]
/usr/X11/bin/mkfontdir Uncommitted [2]
/usr/X11/bin/mkfontscale Uncommitted [3]
/usr/openwin/bin/makebdf Removed
/usr/openwin/bin/mkfontdir Obsolete
/usr/openwin/bin/fs Obsolete
/usr/openwin/bin/xfs Obsolete
References
----------
All of the following files can be found in the case materials directory:
[1] xfs.man & xfs.man.diff
[2] mkfontdir.man & mkfontdir.man.diff
[3] mkfontscale.man
6. Resources and Schedule
6.4. Steering Committee requested information
6.4.1. Consolidation C-team Name:
X Consolidation / Desktop C-Team
6.5. ARC review type: FastTrack
6.6. ARC Exposure: open
--
-Alan Coopersmith- alan.coopersmith at sun.com
Sun Microsystems, Inc. - X Window System Engineering