-------- 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 <al...@sac.sfbay.sun.com> 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