component(developer/golang-123): Add Component
[oi-userland.git] / components / x11 / xorg-docs / src / xlfd / xlfd.html
bloba47ad34d3f5260c358201ec38bd5119c940c910c
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>X Logical Font Description Conventions</title><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_9276" /><style xmlns="" type="text/css">/*
4 * Copyright (c) 2011 Gaetan Nadon
5 * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
7 * Permission is hereby granted, free of charge, to any person obtaining a
8 * copy of this software and associated documentation files (the "Software"),
9 * to deal in the Software without restriction, including without limitation
10 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
11 * and/or sell copies of the Software, and to permit persons to whom the
12 * Software is furnished to do so, subject to the following conditions:
14 * The above copyright notice and this permission notice (including the next
15 * paragraph) shall be included in all copies or substantial portions of the
16 * Software.
18 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
21 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
23 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
24 * DEALINGS IN THE SOFTWARE.
28 * Shared stylesheet for X.Org documentation translated to HTML format
29 * http://www.sagehill.net/docbookxsl/UsingCSS.html
30 * http://www.w3schools.com/css/default.asp
31 * https://addons.mozilla.org/en-US/firefox/addon/web-developer/developers
32 * https://addons.mozilla.org/en-US/firefox/addon/font-finder/
36 * The sans-serif fonts are considered more legible on a computer screen
37 * http://dry.sailingissues.com/linux-equivalents-verdana-arial.html
40 body {
41 font-family: "Bitstream Vera Sans", "DejaVu Sans", Tahoma, Geneva, Arial, Sans-serif;
42 /* In support of using "em" font size unit, the w3c recommended method */
43 font-size: 100%;
47 * Selection: all elements requiring mono spaced fonts.
49 * The family names attempt to match the proportionally spaced font
50 * family names such that the same font name is used for both.
51 * We'd like to use Bitstream, for example, in both proportionally and
52 * mono spaced font text.
54 .command,
55 .errorcode,
56 .errorname,
57 .errortype,
58 .filename,
59 .funcsynopsis,
60 .function,
61 .parameter,
62 .programlisting,
63 .property,
64 .screen,
65 .structname,
66 .symbol,
67 .synopsis,
68 .type
70 font-family: "Bitstream Vera Sans Mono", "DejaVu Sans Mono", Courier, "Liberation Mono", Monospace;
74 * Books have a title page, a preface, some chapters and appendices,
75 * a glossary, an index and a bibliography, in that order.
77 * An Article has no preface and no chapters. It has sections, appendices,
78 * a glossary, an index and a bibliography.
82 * Selection: book main title and subtitle
84 div.book>div.titlepage h1.title,
85 div.book>div.titlepage h2.subtitle {
86 text-align: center;
90 * Selection: article main title and subtitle
92 div.article>div.titlepage h2.title,
93 div.article>div.titlepage h3.subtitle,
94 div.article>div.sect1>div.titlepage h2.title,
95 div.article>div.section>div.titlepage h2.title {
96 text-align: center;
100 * Selection: various types of authors and collaborators, individuals or corporate
102 * These authors are not always contained inside an authorgroup.
103 * They can be contained inside a lot of different parent types where they might
104 * not be centered.
105 * Reducing the margin at the bottom makes a visual separation between authors
106 * We specify here the ones on the title page, others may be added based on merit.
108 div.titlepage .authorgroup,
109 div.titlepage .author,
110 div.titlepage .collab,
111 div.titlepage .corpauthor,
112 div.titlepage .corpcredit,
113 div.titlepage .editor,
114 div.titlepage .othercredit {
115 text-align: center;
116 margin-bottom: 0.25em;
120 * Selection: the affiliation of various types of authors and collaborators,
121 * individuals or corporate.
123 div.titlepage .affiliation {
124 text-align: center;
128 * Selection: product release information (X Version 11, Release 7)
130 * The releaseinfo element can be contained inside a lot of different parent
131 * types where it might not be centered.
132 * We specify here the one on the title page, others may be added based on merit.
134 div.titlepage p.releaseinfo {
135 font-weight: bold;
136 text-align: center;
140 * Selection: publishing date
142 div.titlepage .pubdate {
143 text-align: center;
147 * The legal notices are displayed in smaller sized fonts
148 * Justification is only supported in IE and therefore not requested.
151 .legalnotice {
152 font-size: small;
153 font-style: italic;
157 * For documentation having multiple licenses, the copyright and legalnotice
158 * elements sequence cannot instantiated multiple times.
159 * The copyright notice and license text are therefore coded inside a legalnotice
160 * element. The role attribute on the paragraph is used to allow styling of the
161 * copyright notice text which should not be italicized.
163 p.multiLicensing {
164 font-style: normal;
165 font-size: medium;
169 * Selection: book or article main ToC title
170 * A paragraph is generated for the title rather than a level 2 heading.
171 * We do not want to select chapters sub table of contents, only the main one
173 div.book>div.toc>p,
174 div.article>div.toc>p {
175 font-size: 1.5em;
176 text-align: center;
180 * Selection: major sections of a book or an article
182 * Unlike books, articles do not have a titlepage element for appendix.
183 * Using the selector "div.titlepage h2.title" would be too general.
185 div.book>div.preface>div.titlepage h2.title,
186 div.book>div.chapter>div.titlepage h2.title,
187 div.article>div.sect1>div.titlepage h2.title,
188 div.article>div.section>div.titlepage h2.title,
189 div.book>div.appendix>div.titlepage h2.title,
190 div.article>div.appendix h2.title,
191 div.glossary>div.titlepage h2.title,
192 div.index>div.titlepage h2.title,
193 div.bibliography>div.titlepage h2.title {
194 /* Add a border top over the major parts, just like printed books */
195 /* The Gray color is already used for the ruler over the main ToC. */
196 border-top-style: solid;
197 border-top-width: 2px;
198 border-top-color: Gray;
199 /* Put some space between the border and the title */
200 padding-top: 0.2em;
201 text-align: center;
205 * A Screen is a verbatim environment for displaying text that the user might
206 * see on a computer terminal. It is often used to display the results of a command.
208 * http://www.css3.info/preview/rounded-border/
210 .screen {
211 background: #e0ffff;
212 border-width: 1px;
213 border-style: solid;
214 border-color: #B0C4DE;
215 border-radius: 1.0em;
216 /* Browser's vendor properties prior to CSS 3 */
217 -moz-border-radius: 1.0em;
218 -webkit-border-radius: 1.0em;
219 -khtml-border-radius: 1.0em;
220 margin-left: 1.0em;
221 margin-right: 1.0em;
222 padding: 0.5em;
226 * Emphasis program listings with a light shade of gray similar to what
227 * DocBook XSL guide does: http://www.sagehill.net/docbookxsl/ProgramListings.html
228 * Found many C API docs on the web using like shades of gray.
230 .programlisting {
231 background: #F4F4F4;
232 border-width: 1px;
233 border-style: solid;
234 border-color: Gray;
235 padding: 0.5em;
239 * Emphasis functions synopsis using a darker shade of gray.
240 * Add a border such that it stands out more.
241 * Set the padding so the text does not touch the border.
243 .funcsynopsis, .synopsis {
244 background: #e6e6fa;
245 border-width: 1px;
246 border-style: solid;
247 border-color: Gray;
248 clear: both;
249 margin: 0.5em;
250 padding: 0.25em;
254 * Selection: paragraphs inside synopsis
256 * Removes the default browser margin, let the container set the padding.
257 * Paragraphs are not always used in synopsis
259 .funcsynopsis p,
260 .synopsis p {
261 margin: 0;
262 padding: 0;
266 * Selection: variable lists, informal tables and tables
268 * Note the parameter name "variablelist.as.table" in xorg-xhtml.xsl
269 * A table with rows and columns is constructed inside div.variablelist
271 * Set the left margin so it is indented to the right
272 * Display informal tables with single line borders
274 table {
275 margin-left: 0.5em;
276 border-collapse: collapse;
280 * Selection: paragraphs inside tables
282 * Removes the default browser margin, let the container set the padding.
283 * Paragraphs are not always used in tables
285 td p {
286 margin: 0;
287 padding: 0;
291 * Add some space between the left and right column.
292 * The vertical alignment helps the reader associate a term
293 * with a multi-line definition.
295 td, th {
296 padding-left: 1.0em;
297 padding-right: 1.0em;
298 vertical-align: top;
301 .warning {
302 border: 1px solid red;
303 background: #FFFF66;
304 padding-left: 0.5em;
306 </style></head><body><div class="book"><div class="titlepage"><div><div><h1 class="title"><a id="xlfd"></a>X Logical Font Description Conventions</h1></div><div><h2 class="subtitle">X Consortium Standard</h2></div><div><div class="authorgroup"><div class="author"><h3 class="author"><span class="firstname">Jim</span> <span class="surname">Flowers</span></h3><div class="affiliation"><span class="orgname">Digital Equipment Corporation<br /></span></div></div><div class="editor"><h4 class="editedby">Edited by</h4><h3 class="editor"><span class="firstname">Stephen </span> <span class="surname">Gildea</span></h3><div class="affiliation"><span class="orgname">X Consortium<br /></span></div></div></div></div><div><p class="releaseinfo">X Version 11, Release 7.7</p></div><div><p class="releaseinfo">Version 1.5</p></div><div><p class="copyright">Copyright © 1988, 1994 X Consortium</p></div><div><div class="legalnotice"><a id="id2525478"></a><p>
307 Permission is hereby granted, free of charge, to any person obtaining
308 a copy of this software and associated documentation files (the
309 "Software"), to deal in the Software without restriction, including
310 without limitation the rights to use, copy, modify, merge, publish,
311 distribute, sublicense, and/or sell copies of the Software, and to
312 permit persons to whom the Software is furnished to do so, subject to
313 the following conditions:
314 </p><p>
315 The above copyright notice and this permission notice shall be included
316 in all copies or substantial portions of the Software.
317 </p><p>
318 THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS
319 OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
320 MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
321 IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
322 OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
323 ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
324 OTHER DEALINGS IN THE SOFTWARE.
325 </p><p>
326 Except as contained in this notice, the name of the X Consortium shall
327 not be used in advertising or otherwise to promote the sale, use or
328 other dealings in this Software without prior written authorization
329 from the X Consortium.
330 </p><p>X Window System is a trademark of The Open Group.</p></div></div><div><div class="legalnotice"><a id="id2526154"></a><p class="multiLicensing">
331 Copyright © 1988, 1989
332 Digital Equipment Corporation, Maynard MA. All rights reserved.
333 </p><p>
334 Permission to use, copy, modify, and distribute this documentation
335 for any purpose and without fee is hereby granted, provided
336 that the above copyright notice and this permission
337 notice appear in all copies.
338 Digital Equipment Corporation makes no representations
339 about the
340 suitability for any purpose of the information in this document.
341 This documentation is provided as is without express or implied warranty.
342 </p></div></div><div><div class="legalnotice"><a id="id2524904"></a><p>
343 Helvetica and Times are registered trademarks of Linotype Company.
344 </p><p>
345 ITC Avant Garde Gothic is a registered trademark of International
346 Typeface Corporation.
347 </p><p>
348 Times Roman is a registered trademark of Monotype Corporation.
349 </p><p>
350 Bitstream Amerigo is a registered trademark of Bitstream Inc.
351 </p><p>
352 Stone is a registered trademark of Adobe Systems Inc.
353 </p></div></div></div><hr /></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="chapter"><a href="#Introduction">1. Introduction</a></span></dt><dt><span class="chapter"><a href="#Requirements_and_Goals">2. Requirements and Goals</a></span></dt><dd><dl><dt><span class="sect1"><a href="#Provide_Unique_and_Descriptive_Font_Names">Provide Unique and Descriptive Font Names</a></span></dt><dt><span class="sect1"><a href="#Support_Multiple_Font_Vendors_and_Character_Sets">Support Multiple Font Vendors and Character Sets</a></span></dt><dt><span class="sect1"><a href="#Support_Scalable_and_Polymorphic_Fonts">Support Scalable and Polymorphic Fonts</a></span></dt><dt><span class="sect1"><a href="#Support_Transformations_and_Subsetting_of_Fonts">Support Transformations and Subsetting of Fonts</a></span></dt><dt><span class="sect1"><a href="#Be_Independent_of_X_Server_and_Operating_or_File_System_Implementations">Be Independent of X Server and Operating or File System Implementations</a></span></dt><dt><span class="sect1"><a href="#Support_Arbitrarily_Complex_Font_Matching_and_Substitution">Support Arbitrarily Complex Font Matching and Substitution</a></span></dt><dt><span class="sect1"><a href="#Be_Extensible">Be Extensible</a></span></dt></dl></dd><dt><span class="chapter"><a href="#X_Logical_Font_Description">3. X Logical Font Description</a></span></dt><dd><dl><dt><span class="sect1"><a href="#FontName">FontName</a></span></dt><dd><dl><dt><span class="sect2"><a href="#FontName_Syntax">FontName Syntax</a></span></dt><dt><span class="sect2"><a href="#FontName_Field_Definitions">FontName Field Definitions</a></span></dt><dt><span class="sect2"><a href="#Examples">Examples</a></span></dt></dl></dd><dt><span class="sect1"><a href="#Font_Properties">Font Properties</a></span></dt><dd><dl><dt><span class="sect2"><a href="#FOUNDRY">FOUNDRY</a></span></dt><dt><span class="sect2"><a href="#FAMILY_NAME">FAMILY_NAME</a></span></dt><dt><span class="sect2"><a href="#WEIGHT_NAME">WEIGHT_NAME</a></span></dt><dt><span class="sect2"><a href="#SLANT">SLANT</a></span></dt><dt><span class="sect2"><a href="#SETWIDTH_NAME">SETWIDTH_NAME</a></span></dt><dt><span class="sect2"><a href="#ADD_STYLE_NAME">ADD_STYLE_NAME</a></span></dt><dt><span class="sect2"><a href="#PIXEL_SIZE">PIXEL_SIZE</a></span></dt><dt><span class="sect2"><a href="#POINT_SIZE">POINT_SIZE</a></span></dt><dt><span class="sect2"><a href="#RESOLUTION_X_x">RESOLUTION_X</a></span></dt><dt><span class="sect2"><a href="#RESOLUTION_Y_y">RESOLUTION_Y</a></span></dt><dt><span class="sect2"><a href="#SPACING">SPACING</a></span></dt><dt><span class="sect2"><a href="#AVERAGE_WIDTH">AVERAGE_WIDTH</a></span></dt><dt><span class="sect2"><a href="#CHARSET_REGISTRY">CHARSET_REGISTRY</a></span></dt><dt><span class="sect2"><a href="#CHARSET_ENCODING">CHARSET_ENCODING</a></span></dt><dt><span class="sect2"><a href="#MIN_SPACE">MIN_SPACE</a></span></dt><dt><span class="sect2"><a href="#NORM_SPACE">NORM_SPACE</a></span></dt><dt><span class="sect2"><a href="#MAX_SPACE">MAX_SPACE</a></span></dt><dt><span class="sect2"><a href="#END_SPACE">END_SPACE</a></span></dt><dt><span class="sect2"><a href="#AVG_CAPITAL_WIDTH">AVG_CAPITAL_WIDTH</a></span></dt><dt><span class="sect2"><a href="#AVG_LOWERCASE_WIDTH">AVG_LOWERCASE_WIDTH</a></span></dt><dt><span class="sect2"><a href="#QUAD_WIDTH">QUAD_WIDTH</a></span></dt><dt><span class="sect2"><a href="#FIGURE_WIDTH">FIGURE_WIDTH</a></span></dt><dt><span class="sect2"><a href="#SUPERSCRIPT_X_x">SUPERSCRIPT_X</a></span></dt><dt><span class="sect2"><a href="#SUPERSCRIPT_Y_y">SUPERSCRIPT_Y</a></span></dt><dt><span class="sect2"><a href="#SUBSCRIPT_X_x">SUBSCRIPT_X</a></span></dt><dt><span class="sect2"><a href="#SUBSCRIPT_Y_y">SUBSCRIPT_Y</a></span></dt><dt><span class="sect2"><a href="#SUPERSCRIPT_SIZE">SUPERSCRIPT_SIZE</a></span></dt><dt><span class="sect2"><a href="#SUBSCRIPT_SIZE">SUBSCRIPT_SIZE</a></span></dt><dt><span class="sect2"><a href="#SMALL_CAP_SIZE">SMALL_CAP_SIZE</a></span></dt><dt><span class="sect2"><a href="#UNDERLINE_POSITION">UNDERLINE_POSITION</a></span></dt><dt><span class="sect2"><a href="#UNDERLINE_THICKNESS">UNDERLINE_THICKNESS</a></span></dt><dt><span class="sect2"><a href="#STRIKEOUT_ASCENT">STRIKEOUT_ASCENT</a></span></dt><dt><span class="sect2"><a href="#STRIKEOUT_DESCENT">STRIKEOUT_DESCENT</a></span></dt><dt><span class="sect2"><a href="#ITALIC_ANGLE">ITALIC_ANGLE</a></span></dt><dt><span class="sect2"><a href="#CAP_HEIGHT">CAP_HEIGHT</a></span></dt><dt><span class="sect2"><a href="#X_HEIGHT">X_HEIGHT</a></span></dt><dt><span class="sect2"><a href="#RELATIVE_SETWIDTH">RELATIVE_SETWIDTH</a></span></dt><dt><span class="sect2"><a href="#RELATIVE_WEIGHT">RELATIVE_WEIGHT</a></span></dt><dt><span class="sect2"><a href="#WEIGHT">WEIGHT</a></span></dt><dt><span class="sect2"><a href="#RESOLUTION">RESOLUTION</a></span></dt><dt><span class="sect2"><a href="#Font_support">FONT</a></span></dt><dt><span class="sect2"><a href="#FACE_NAME">FACE_NAME</a></span></dt><dt><span class="sect2"><a href="#FULL_NAME">FULL_NAME</a></span></dt><dt><span class="sect2"><a href="#COPYRIGHT">COPYRIGHT</a></span></dt><dt><span class="sect2"><a href="#NOTICE">NOTICE</a></span></dt><dt><span class="sect2"><a href="#DESTINATION">DESTINATION</a></span></dt><dt><span class="sect2"><a href="#FONT_TYPE">FONT_TYPE</a></span></dt><dt><span class="sect2"><a href="#FONT_VERSION">FONT_VERSION</a></span></dt><dt><span class="sect2"><a href="#RASTERIZER_NAME">RASTERIZER_NAME</a></span></dt><dt><span class="sect2"><a href="#RASTERIZER_VERSION">RASTERIZER_VERSION</a></span></dt><dt><span class="sect2"><a href="#RAW_ASCENT">RAW_ASCENT</a></span></dt><dt><span class="sect2"><a href="#RAW_DESCENT">RAW_DESCENT</a></span></dt><dt><span class="sect2"><a href="#RAW_">RAW_*</a></span></dt><dt><span class="sect2"><a href="#AXIS_NAMES">AXIS_NAMES</a></span></dt><dt><span class="sect2"><a href="#AXIS_LIMITS">AXIS_LIMITS</a></span></dt><dt><span class="sect2"><a href="#AXIS_TYPES">AXIS_TYPES</a></span></dt></dl></dd><dt><span class="sect1"><a href="#Built_in_Font_Property_Atoms">Built-in Font Property Atoms</a></span></dt></dl></dd><dt><span class="chapter"><a href="#Matrix_Transformations">4. Matrix Transformations</a></span></dt><dd><dl><dt><span class="sect1"><a href="#Metrics_and_Font_Properties">Metrics and Font Properties</a></span></dt></dl></dd><dt><span class="chapter"><a href="#Scalable_Fonts">5. Scalable Fonts</a></span></dt><dt><span class="chapter"><a href="#Polymorphic_Fonts">6. Polymorphic Fonts</a></span></dt><dt><span class="chapter"><a href="#Affected_Elements_of_Xlib_and_the_X_Protocol">7. Affected Elements of Xlib and the X Protocol</a></span></dt><dt><span class="chapter"><a href="#BDF_Conformance">8. BDF Conformance</a></span></dt><dd><dl><dt><span class="sect1"><a href="#XLFD_Conformance_Requirements">XLFD Conformance Requirements</a></span></dt><dt><span class="sect1"><a href="#FONT_ASCENT_FONT_DESCENT_and_DEFAULT_CHAR">FONT_ASCENT, FONT_DESCENT, and DEFAULT_CHAR</a></span></dt><dd><dl><dt><span class="sect2"><a href="#FONT_ASCENT">FONT_ASCENT</a></span></dt><dt><span class="sect2"><a href="#FONT_DESCENT">FONT_DESCENT</a></span></dt><dt><span class="sect2"><a href="#DEFAULT_CHAR">DEFAULT_CHAR</a></span></dt></dl></dd></dl></dd></dl></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="Introduction"></a>Chapter 1. Introduction</h2></div></div></div><p>
354 It is a requirement that X client applications must be portable across server
355 implementations, with very different file systems, naming conventions, and
356 font libraries.
357 However, font access requests,
358 as defined by the <span class="emphasis"><em>X Window System Protocol</em></span>,
359 neither specify server-independent conventions for font names
360 nor provide adequate font properties for logically describing typographic fonts.
361 </p><p>
362 X clients must be able to dynamically determine the fonts available
363 on any given server so that understandable information can be presented
364 to the user or so that intelligent font fallbacks can be chosen.
365 It is desirable for the most common queries to be accomplished
366 without the overhead of opening each font and inspecting font properties,
367 by means of simple
368 <code class="function">ListFonts</code>
369 requests.
370 For example, if a user selected a Helvetica typeface family,
371 a client application should be able to query the server
372 for all Helvetica fonts and present only those setwidths, weights, slants,
373 point sizes, and character sets available for that family.
374 </p><p>
375 This document gives a standard logical font description
376 (hereafter referred to as XLFD) and the conventions to be used
377 in the core protocol so that clients can query and access screen type libraries
378 in a consistent manner across all X servers.
379 In addition to completely specifying a given font by means of its
380 <code class="function">FontName</code>,
381 the XLFD also provides for a standard set of key
382 <code class="function">FontProperties</code>
383 that describe the font in more detail.
384 </p><p>
386 The XLFD provides an adequate set of typographic font properties,
387 such as CAP_HEIGHT, X_HEIGHT,
388 and RELATIVE_SETWIDTH,
389 for publishing and other applications to do intelligent font matching
390 or substitution when handling documents created on some foreign server
391 that use potentially unknown fonts.
392 In addition,
393 this information is required by certain clients
394 to position subscripts automatically and determine small capital heights,
395 recommended leading, word-space values, and so on.
396 </p></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="Requirements_and_Goals"></a>Chapter 2. Requirements and Goals</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="sect1"><a href="#Provide_Unique_and_Descriptive_Font_Names">Provide Unique and Descriptive Font Names</a></span></dt><dt><span class="sect1"><a href="#Support_Multiple_Font_Vendors_and_Character_Sets">Support Multiple Font Vendors and Character Sets</a></span></dt><dt><span class="sect1"><a href="#Support_Scalable_and_Polymorphic_Fonts">Support Scalable and Polymorphic Fonts</a></span></dt><dt><span class="sect1"><a href="#Support_Transformations_and_Subsetting_of_Fonts">Support Transformations and Subsetting of Fonts</a></span></dt><dt><span class="sect1"><a href="#Be_Independent_of_X_Server_and_Operating_or_File_System_Implementations">Be Independent of X Server and Operating or File System Implementations</a></span></dt><dt><span class="sect1"><a href="#Support_Arbitrarily_Complex_Font_Matching_and_Substitution">Support Arbitrarily Complex Font Matching and Substitution</a></span></dt><dt><span class="sect1"><a href="#Be_Extensible">Be Extensible</a></span></dt></dl></div><p>
397 The XLFD meets the short-term and long-term goals to have a
398 standard logical font description that:
399 </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
400 Provides unique, descriptive font names that support simple pattern
401 matching
402 </p></li><li class="listitem"><p>
403 Supports multiple font vendors, arbitrary character sets, and encodings
404 </p></li><li class="listitem"><p>
405 Supports naming and instancing of scalable and polymorphic fonts
406 </p></li><li class="listitem"><p>
407 Supports transformations and subsetting of fonts
408 </p></li><li class="listitem"><p>
409 Is independent of X server and operating or file system implementations
410 </p></li><li class="listitem"><p>
411 Supports arbitrarily complex font matching or substitution
412 </p></li><li class="listitem"><p>
413 Is extensible
414 </p></li></ul></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="Provide_Unique_and_Descriptive_Font_Names"></a>Provide Unique and Descriptive Font Names</h2></div></div></div><p>
415 It should be possible to have font names that are long enough and
416 descriptive enough to have a reasonable probability of being unique
417 without inventing a new registration organization.
418 Resolution and size-dependent font masters, multivendor font libraries,
419 and so on must be anticipated and handled by the font name alone.
420 </p><p>
422 The name itself should be structured to be amenable to simple pattern
423 matching and parsing, thus allowing X clients to restrict font queries to
424 some subset of all possible fonts in the server.
425 </p></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="Support_Multiple_Font_Vendors_and_Character_Sets"></a>Support Multiple Font Vendors and Character Sets</h2></div></div></div><p>
427 The font name and properties should distinguish between fonts
428 that were supplied by different font vendors
429 but that possibly share the same name.
430 We anticipate a highly competitive font market where users will be able to
431 buy fonts from many sources according to their particular requirements.
432 </p><p>
434 A number of font vendors deliver each font with all glyphs designed for that
435 font, where charset mappings are defined by encoding vectors.
436 Some server implementations may force these mappings to proprietary
437 or standard charsets statically in the font data.
438 Others may desire to perform the mapping dynamically in the server.
439 Provisions must be made in the font name
440 that allows a font request to specify or identify specific charset mappings
441 in server environments where multiple charsets are supported.
442 </p></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="Support_Scalable_and_Polymorphic_Fonts"></a>Support Scalable and Polymorphic Fonts</h2></div></div></div><p>
444 If a font source can be scaled to an arbitrary size or varied in other
445 ways, it should be possible for an application to determine
446 that fact from the font name, and the
447 application should be able to construct a font name for any specific
448 instance.
449 </p></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="Support_Transformations_and_Subsetting_of_Fonts"></a>Support Transformations and Subsetting of Fonts</h2></div></div></div><p>
451 Arbitrary two-dimensional linear transformations of fonts should be
452 able to be requested by applications. Since such transformed fonts
453 may be used for special effects requiring a few characters from each
454 of many differently transformed fonts, it should be possible to
455 request only a few characters from a font for efficiency.
456 </p></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="Be_Independent_of_X_Server_and_Operating_or_File_System_Implementations"></a>Be Independent of X Server and Operating or File System Implementations</h2></div></div></div><p>
458 X client applications that require a particular font should be able to use
459 the descriptive name without knowledge of the file system or other
460 repository in use by the server.
461 However,
462 it should be possible for servers to translate a given font name
463 into a file name syntax that it knows how to deal with,
464 without compromising the uniqueness of the font name.
465 This algorithm should be reversible (exactly how this translation is done is
466 implementation dependent).
467 </p></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="Support_Arbitrarily_Complex_Font_Matching_and_Substitution"></a>Support Arbitrarily Complex Font Matching and Substitution</h2></div></div></div><p>
469 In addition to the font name,
470 the XLFD should define a standard list of descriptive font properties,
471 with agreed-upon fallbacks for all fonts.
472 This allows client applications to derive font-specific formatting
473 or display data and to perform font matching or substitution
474 when asked to handle potentially unknown fonts, as required.
475 </p></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="Be_Extensible"></a>Be Extensible</h2></div></div></div><p>
477 The XLFD must be extensible so that new and/or private descriptive font
478 properties can be added to conforming fonts without making existing
479 X client or server implementations obsolete.
480 </p></div></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="X_Logical_Font_Description"></a>Chapter 3. X Logical Font Description</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="sect1"><a href="#FontName">FontName</a></span></dt><dd><dl><dt><span class="sect2"><a href="#FontName_Syntax">FontName Syntax</a></span></dt><dt><span class="sect2"><a href="#FontName_Field_Definitions">FontName Field Definitions</a></span></dt><dt><span class="sect2"><a href="#Examples">Examples</a></span></dt></dl></dd><dt><span class="sect1"><a href="#Font_Properties">Font Properties</a></span></dt><dd><dl><dt><span class="sect2"><a href="#FOUNDRY">FOUNDRY</a></span></dt><dt><span class="sect2"><a href="#FAMILY_NAME">FAMILY_NAME</a></span></dt><dt><span class="sect2"><a href="#WEIGHT_NAME">WEIGHT_NAME</a></span></dt><dt><span class="sect2"><a href="#SLANT">SLANT</a></span></dt><dt><span class="sect2"><a href="#SETWIDTH_NAME">SETWIDTH_NAME</a></span></dt><dt><span class="sect2"><a href="#ADD_STYLE_NAME">ADD_STYLE_NAME</a></span></dt><dt><span class="sect2"><a href="#PIXEL_SIZE">PIXEL_SIZE</a></span></dt><dt><span class="sect2"><a href="#POINT_SIZE">POINT_SIZE</a></span></dt><dt><span class="sect2"><a href="#RESOLUTION_X_x">RESOLUTION_X</a></span></dt><dt><span class="sect2"><a href="#RESOLUTION_Y_y">RESOLUTION_Y</a></span></dt><dt><span class="sect2"><a href="#SPACING">SPACING</a></span></dt><dt><span class="sect2"><a href="#AVERAGE_WIDTH">AVERAGE_WIDTH</a></span></dt><dt><span class="sect2"><a href="#CHARSET_REGISTRY">CHARSET_REGISTRY</a></span></dt><dt><span class="sect2"><a href="#CHARSET_ENCODING">CHARSET_ENCODING</a></span></dt><dt><span class="sect2"><a href="#MIN_SPACE">MIN_SPACE</a></span></dt><dt><span class="sect2"><a href="#NORM_SPACE">NORM_SPACE</a></span></dt><dt><span class="sect2"><a href="#MAX_SPACE">MAX_SPACE</a></span></dt><dt><span class="sect2"><a href="#END_SPACE">END_SPACE</a></span></dt><dt><span class="sect2"><a href="#AVG_CAPITAL_WIDTH">AVG_CAPITAL_WIDTH</a></span></dt><dt><span class="sect2"><a href="#AVG_LOWERCASE_WIDTH">AVG_LOWERCASE_WIDTH</a></span></dt><dt><span class="sect2"><a href="#QUAD_WIDTH">QUAD_WIDTH</a></span></dt><dt><span class="sect2"><a href="#FIGURE_WIDTH">FIGURE_WIDTH</a></span></dt><dt><span class="sect2"><a href="#SUPERSCRIPT_X_x">SUPERSCRIPT_X</a></span></dt><dt><span class="sect2"><a href="#SUPERSCRIPT_Y_y">SUPERSCRIPT_Y</a></span></dt><dt><span class="sect2"><a href="#SUBSCRIPT_X_x">SUBSCRIPT_X</a></span></dt><dt><span class="sect2"><a href="#SUBSCRIPT_Y_y">SUBSCRIPT_Y</a></span></dt><dt><span class="sect2"><a href="#SUPERSCRIPT_SIZE">SUPERSCRIPT_SIZE</a></span></dt><dt><span class="sect2"><a href="#SUBSCRIPT_SIZE">SUBSCRIPT_SIZE</a></span></dt><dt><span class="sect2"><a href="#SMALL_CAP_SIZE">SMALL_CAP_SIZE</a></span></dt><dt><span class="sect2"><a href="#UNDERLINE_POSITION">UNDERLINE_POSITION</a></span></dt><dt><span class="sect2"><a href="#UNDERLINE_THICKNESS">UNDERLINE_THICKNESS</a></span></dt><dt><span class="sect2"><a href="#STRIKEOUT_ASCENT">STRIKEOUT_ASCENT</a></span></dt><dt><span class="sect2"><a href="#STRIKEOUT_DESCENT">STRIKEOUT_DESCENT</a></span></dt><dt><span class="sect2"><a href="#ITALIC_ANGLE">ITALIC_ANGLE</a></span></dt><dt><span class="sect2"><a href="#CAP_HEIGHT">CAP_HEIGHT</a></span></dt><dt><span class="sect2"><a href="#X_HEIGHT">X_HEIGHT</a></span></dt><dt><span class="sect2"><a href="#RELATIVE_SETWIDTH">RELATIVE_SETWIDTH</a></span></dt><dt><span class="sect2"><a href="#RELATIVE_WEIGHT">RELATIVE_WEIGHT</a></span></dt><dt><span class="sect2"><a href="#WEIGHT">WEIGHT</a></span></dt><dt><span class="sect2"><a href="#RESOLUTION">RESOLUTION</a></span></dt><dt><span class="sect2"><a href="#Font_support">FONT</a></span></dt><dt><span class="sect2"><a href="#FACE_NAME">FACE_NAME</a></span></dt><dt><span class="sect2"><a href="#FULL_NAME">FULL_NAME</a></span></dt><dt><span class="sect2"><a href="#COPYRIGHT">COPYRIGHT</a></span></dt><dt><span class="sect2"><a href="#NOTICE">NOTICE</a></span></dt><dt><span class="sect2"><a href="#DESTINATION">DESTINATION</a></span></dt><dt><span class="sect2"><a href="#FONT_TYPE">FONT_TYPE</a></span></dt><dt><span class="sect2"><a href="#FONT_VERSION">FONT_VERSION</a></span></dt><dt><span class="sect2"><a href="#RASTERIZER_NAME">RASTERIZER_NAME</a></span></dt><dt><span class="sect2"><a href="#RASTERIZER_VERSION">RASTERIZER_VERSION</a></span></dt><dt><span class="sect2"><a href="#RAW_ASCENT">RAW_ASCENT</a></span></dt><dt><span class="sect2"><a href="#RAW_DESCENT">RAW_DESCENT</a></span></dt><dt><span class="sect2"><a href="#RAW_">RAW_*</a></span></dt><dt><span class="sect2"><a href="#AXIS_NAMES">AXIS_NAMES</a></span></dt><dt><span class="sect2"><a href="#AXIS_LIMITS">AXIS_LIMITS</a></span></dt><dt><span class="sect2"><a href="#AXIS_TYPES">AXIS_TYPES</a></span></dt></dl></dd><dt><span class="sect1"><a href="#Built_in_Font_Property_Atoms">Built-in Font Property Atoms</a></span></dt></dl></div><p>
482 XLFD is divided into two basic components:
484 <code class="function">FontName</code>,
485 which gives all font information needed to uniquely identify a font
486 in X protocol requests (for example,
487 <code class="function">OpenFont</code>,
488 <code class="function">ListFonts</code>,
489 and so on) and a variable list of optional
490 <code class="function">FontProperties</code>,
491 which describe a font in more detail.
492 </p><p>
495 <code class="function">FontName</code>
496 is used in font queries and is returned as data in certain X protocol requests.
497 It is also specified as the data value for the
498 <code class="function">FONT</code>
499 item in the X Consortium Character Bitmap Distribution Format Standard
500 (BDF V2.1).
501 </p><p>
504 <code class="function">FontProperties</code>
505 are supplied on a font-by-font basis and are returned
506 as data in certain X protocol requests as part of the
507 <code class="function">XFontStruct</code>
508 data structure.
509 The names and associated data values for each of the
510 <code class="function">FontProperties</code>
511 may also appear as items of the
512 <code class="function">STARTPROPERTIES</code>...<code class="function">ENDPROPERTIES</code>list
513 in the BDF V2.1 specification.
514 </p><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="FontName"></a>FontName</h2></div></div></div><p>
516 Each
517 <code class="function">FontName</code>
518 is logically composed of two strings: a
519 <code class="function">FontNameRegistry</code>
520 prefix that is followed by a
521 <code class="function">FontNameSuffix</code>.
523 <code class="function">FontName</code>
524 uses the ISO 8859-1 encoding.
526 <code class="function">FontNameRegistry</code>
527 is an
529 x-registered-name (a name that has been registered with the X Consortium)
530 that identifies the registration authority that owns the specified
531 <code class="function">FontNameSuffix</code>
532 syntax and semantics.
533 </p><p>
535 All font names that conform to this specification are to use a
536 <code class="function">FontNameRegistry</code>
537 prefix, which is defined to be the string "-"
538 (HYPHEN).
540 <code class="function">FontNameRegistry</code>
541 prefixes of the form: +<span class="emphasis"><em>version</em></span>-,
542 where the specified version indicates some future XLFD specification,
543 are reserved by the X Consortium for future extensions to XLFD font names.
544 If required, extensions to the current XLFD font name shall be constructed
545 by appending new fields to the current structure,
546 each delimited by the existing field delimiter.
547 The availability of other
548 <code class="function">FontNameRegistry</code>
549 prefixes or fonts that support other registries
550 is server implementation dependent.
551 </p><p>
553 In the X protocol specification,
555 <code class="function">FontName</code>
556 is required to be a string;
557 hence, numeric field values are represented in the name as string equivalents.
559 <code class="function">FontNameSuffix</code>
560 fields are also defined as
561 <code class="function">FontProperties</code>;
562 numeric property values are represented as signed or unsigned integers,
563 as appropriate.
564 </p><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="FontName_Syntax"></a>FontName Syntax</h3></div></div></div><p>
567 <code class="function">FontName</code>
568 is a structured, parsable string (of type STRING8)
569 whose Backus-Naur Form syntax description is as follows:
570 </p><div class="informaltable"><table border="0"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /></colgroup><tbody><tr><td align="left">FontName ::=</td><td align="left">
571 XFontNameRegistry XFontNameSuffix |
572 PrivFontNameRegistry PrivFontNameSuffix
573 </td></tr><tr><td align="left">XFontNameRegistry ::=</td><td align="left">XFNDelim | XFNExtPrefix Version XFNDelim</td></tr><tr><td align="left">XFontNameSuffix ::=</td><td align="left">
574 FOUNDRY XFNDelim FAMILY_NAME XFNDelim WEIGHT_NAME
575 XFNDelim SLANT XFNDelim SETWIDTH_NAME XFNDelim ADD_STYLE_NAME
576 XFNDelim PIXEL_SIZE XFNDelim POINT_SIZE
577 XFNDelim RESOLUTION_X XFNDelim RESOLUTION_Y XFNDelim
578 SPACING XFNDelim AVERAGE_WIDTH XFNDelim CHARSET_REGISTRY
579 XFNDelim CHARSET_ENCODING
580 </td></tr><tr><td align="left">Version ::=</td><td align="left">
581 STRING8 - the XLFD version that defines an extension
582 to the font name syntax (for example, "1.4")
583 </td></tr><tr><td align="left">XFNExtPrefix ::=</td><td align="left">OCTET - "+" (PLUS)</td></tr><tr><td align="left">XFNDelim ::=</td><td align="left">OCTET - "-" (HYPHEN)</td></tr><tr><td align="left">PrivFontNameRegistry ::=</td><td align="left">STRING8 - other than those strings reserved by XLFD</td></tr><tr><td align="left">PrivFontNameSuffix ::=</td><td align="left">STRING8</td></tr></tbody></table></div><p>
585 Field values are constructed as strings of ISO 8859-1 graphic characters,
586 excluding the following:
587 </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
588 '-' (HYPHEN), the XLFD font name delimiter character
589 </p></li><li class="listitem"><p>
590 '?' (QUESTION MARK) and "*" (ASTERISK), the X protocol
591 font name wildcard characters
592 </p></li><li class="listitem"><p>
593 ',' (COMMA), used by Xlib to separate XLFD font names in a font set.
594 </p></li><li class="listitem"><p>
595 '"' (QUOTATION MARK), used by some commercial products to quote a
596 font name.
597 </p></li></ul></div><p>
599 Alphabetic case distinctions are allowed but are for human readability
600 concerns only.
601 Conforming X servers will perform matching on font name query or open requests
602 independent of case.
603 The entire font name string must have no more than 255 characters.
604 It is recommended that clients construct font name query patterns
605 by explicitly including all field delimiters to avoid unexpected results.
606 Note that SPACE is a valid character of a
607 <code class="function">FontName</code>
608 field; for example, the string "ITC Avant Garde Gothic" might be a
609 FAMILY_NAME.
610 </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="FontName_Field_Definitions"></a>FontName Field Definitions</h3></div></div></div><p>
612 This section discusses the
613 <code class="function">FontName</code>:
614 </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
615 FOUNDRY field
616 </p></li><li class="listitem"><p>
617 FAMILY_NAME field
618 </p></li><li class="listitem"><p>
619 WEIGHT_NAME field
620 </p></li><li class="listitem"><p>
621 SLANT field
622 </p></li><li class="listitem"><p>
623 SETWIDTH_NAME field
624 </p></li><li class="listitem"><p>
625 ADD_STYLE_NAME field
626 </p></li><li class="listitem"><p>
627 PIXEL_SIZE field
628 </p></li><li class="listitem"><p>
629 POINT_SIZE field
630 </p></li><li class="listitem"><p>
631 RESOLUTION_X and RESOLUTION_Y fields
632 </p></li><li class="listitem"><p>
633 SPACING field
634 </p></li><li class="listitem"><p>
635 AVERAGE_WIDTH field
636 </p></li><li class="listitem"><p>
637 CHARSET_REGISTRY and CHARSET_ENCODING fields
638 </p></li></ul></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="FOUNDRY_Field"></a>FOUNDRY Field</h4></div></div></div><p>
640 FOUNDRY is an x-registered-name,
641 the name or identifier of the digital type foundry
642 that digitized and supplied the font data,
643 or if different, the identifier of the organization that last modified
644 the font shape or metric information.
645 </p><p>
647 The reason this distinction is necessary is
648 that a given font design may be licensed from one source (for example, ITC)
649 but digitized and sold by any number of different type suppliers.
650 Each digital version of the original design, in general, will be somewhat
651 different in metrics and shape from the idealized original font data,
652 because each font foundry, for better or for worse, has its own standards
653 and practices for tweaking a typeface for a particular generation
654 of output technologies or has its own perception of market needs.
655 </p><p>
657 It is up to the type supplier to register with the X Consortium a
658 suitable name for this
659 <code class="function">FontName</code>
660 field according to the registration procedures defined by the Consortium.
661 </p><p>
663 The X Consortium shall define procedures for registering foundry
664 and other names and shall maintain and publish,
665 as part of its public distribution,
666 a registry of such registered names for use in XLFD font names and properties.
667 </p><p>
669 </p></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="FAMILY_NAME_Field"></a>FAMILY_NAME Field</h4></div></div></div><p>
671 FAMILY_NAME is a string that identifies the range or family of
672 typeface designs that are all variations of one basic typographic style.
673 This must be spelled out in full,
674 with words separated by spaces, as required.
675 This name must be human-understandable and suitable for presentation to a
676 font user to identify the typeface family.
677 </p><p>
679 It is up to the type supplier to supply and maintain a suitable string for
680 this field and font property, to secure the proper legal title to a given
681 name, and to guard against the infringement of other's copyrights or
682 trademarks.
683 By convention, FAMILY_NAME is not translated.
684 FAMILY_NAME may include an indication of design ownership
685 if considered a valid part of the
686 typeface family name.
687 </p><p>
689 The following are examples of FAMILY_NAME:
690 </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
691 Helvetica
692 </p></li><li class="listitem"><p>
693 ITC Avant Garde Gothic
694 </p></li><li class="listitem"><p>
695 Times
696 </p></li><li class="listitem"><p>
697 Times Roman
698 </p></li><li class="listitem"><p>
699 Bitstream Amerigo
700 </p></li><li class="listitem"><p>
701 Stone
702 </p></li></ul></div></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="WEIGHT_NAME_Field"></a>WEIGHT_NAME Field</h4></div></div></div><p>
704 WEIGHT_NAME is a string that identifies the font's typographic weight,
705 that is, the nominal blackness of the font,
706 according to the FOUNDRY's judgment.
707 This name must be human-understandable and suitable for presentation to a
708 font user.
709 The value "0" is used to indicate a polymorphic font (see <a class="xref" href="#Polymorphic_Fonts" title="Chapter 6. Polymorphic Fonts"><em>Polymorphic Fonts</em></a>).
710 </p><p>
712 The interpretation of this field is somewhat problematic
713 because the typographic judgment of weight has traditionally
714 depended on the overall design of the typeface family in question;
715 that is, it is possible that the DemiBold weight of one font could be
716 almost equivalent in typographic feel to a Bold font from another family.
717 </p><p>
719 WEIGHT_NAME is captured as an arbitrary string
720 because it is an important part of a font's complete human-understandable name.
721 However, it should not be used for font matching or substitution.
722 For this purpose,
723 X client applications should use the weight-related font properties
724 (RELATIVE_WEIGHT and WEIGHT) that give the coded relative weight
725 and the calculated weight, respectively.
726 </p></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="SLANT_Field"></a>SLANT Field</h4></div></div></div><p>
728 SLANT is a code-string that indicates the overall posture of the
729 typeface design used in the font.
730 The encoding is as follows:
731 </p><div class="informaltable"><table border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /></colgroup><thead><tr><th align="left">Code</th><th align="left">English Translation</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left">"R"</td><td align="left">Roman</td><td align="left">Upright design</td></tr><tr><td align="left">"I"</td><td align="left">Italic</td><td align="left">Italic design, slanted clockwise from the vertical</td></tr><tr><td align="left">"O"</td><td align="left">Oblique</td><td align="left">Obliqued upright design, slanted clockwise from the vertical</td></tr><tr><td align="left">"RI"</td><td align="left">Reverse Italic</td><td align="left">Italic design, slanted counterclockwise from the vertical</td></tr><tr><td align="left">"RO"</td><td align="left">Reverse Oblique</td><td align="left">Obliqued upright design, slanted counterclockwise from the vertical</td></tr><tr><td align="left">"OT"</td><td align="left">Other</td><td align="left">Other</td></tr><tr><td align="left">numeric</td><td align="left">Polymorphic</td><td align="left">See <a class="xref" href="#Polymorphic_Fonts" title="Chapter 6. Polymorphic Fonts"><em>Polymorphic Fonts</em></a>.</td></tr></tbody></table></div><p>
733 The SLANT codes are for programming convenience only and usually are
734 converted into their equivalent human-understandable form before being
735 presented to a user.
736 </p></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="SETWIDTH_NAME_Field"></a>SETWIDTH_NAME Field</h4></div></div></div><p>
738 SETWIDTH_NAME is a string that gives the font's typographic
739 proportionate width, that is, the nominal width per horizontal unit of the
740 font, according to the FOUNDRY's judgment.
741 The value "0" is used to indicate a polymorphic font (see <a class="xref" href="#Polymorphic_Fonts" title="Chapter 6. Polymorphic Fonts"><em>Polymorphic Fonts</em></a>).
742 </p><p>
744 As with WEIGHT_NAME, the interpretation of this field or font property is
745 somewhat problematic, because the designer's judgment of setwidth has
746 traditionally depended on the overall design of the typeface family in
747 question.
748 For purposes of font matching or substitution,
749 X client applications should either use the RELATIVE_SETWIDTH font property
750 that gives the relative coded proportionate width or calculate
751 the proportionate width.
752 </p><p>
754 The following are examples of SETWIDTH_NAME:
755 </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
756 Normal
757 </p></li><li class="listitem"><p>
758 Condensed
759 </p></li><li class="listitem"><p>
760 Narrow
761 </p></li><li class="listitem"><p>
762 Double Wide
763 </p></li></ul></div></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="ADD_STYLE_NAME_Field"></a>ADD_STYLE_NAME Field</h4></div></div></div><p>
765 ADD_STYLE_NAME is a string that identifies additional typographic
766 style information that is not captured by other fields but is needed
767 to identify the particular font.
768 The character "[" anywhere in the field is used to indicate a
769 polymorphic font (see <a class="xref" href="#Polymorphic_Fonts" title="Chapter 6. Polymorphic Fonts"><em>Polymorphic Fonts</em></a>).
770 </p><p>
772 ADD_STYLE_NAME is not a typeface classification field
773 and is only used for uniqueness.
774 Its use, as such, is not limited to typographic style distinctions.
775 </p><p>
777 The following are examples of ADD_STYLE_NAME:
778 </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
779 Serif
780 </p></li><li class="listitem"><p>
781 Sans Serif
782 </p></li><li class="listitem"><p>
783 Informal
784 </p></li><li class="listitem"><p>
785 Decorated
786 </p></li></ul></div></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="PIXEL_SIZE_Field"></a>PIXEL_SIZE Field</h4></div></div></div><p>
788 PIXEL_SIZE
789 gives the body size of the font at a particular
790 POINT_SIZE and RESOLUTION_Y.
791 PIXEL_SIZE is either an integer-string or a string beginning
792 with "[". A string beginning with "[" represents a matrix
793 (see <a class="xref" href="#Matrix_Transformations" title="Chapter 4. Matrix Transformations"><em>Matrix Transformations</em></a>).
794 PIXEL_SIZE usually incorporates additional vertical spacing
795 that is considered part of the font design.
796 (Note, however, that this value is not necessarily equivalent to the height
797 of the font bounding box.)
798 Zero is used to indicate a scalable font (see <a class="xref" href="#Scalable_Fonts" title="Chapter 5. Scalable Fonts"><em>Scalable Fonts</em></a>).
799 </p><p>
801 PIXEL_SIZE usually is used by X client applications that need to
802 query fonts according to device-dependent size,
803 regardless of the point size or vertical resolution
804 for which the font was designed.
805 </p></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="SN_POINT_SIZE_Field"></a>SN POINT_SIZE Field</h4></div></div></div><p>
807 POINT_SIZE gives the body size
808 for which the font was designed.
809 POINT_SIZE is either an integer-string or a string beginning
810 with "[". A string beginning with "[" represents a matrix
811 (see <a class="xref" href="#Matrix_Transformations" title="Chapter 4. Matrix Transformations"><em>Matrix Transformations</em></a>).
812 This field usually incorporates additional vertical spacing
813 that is considered part of the font design.
814 (Note, however, that POINT_SIZE is not necessarily equivalent to the height
815 of the font bounding box.)
816 POINT_SIZE is expressed in decipoints (where points are as defined
817 in the X protocol or 72.27 points equal 1 inch).
818 Zero is used to indicate a scalable font (see <a class="xref" href="#Scalable_Fonts" title="Chapter 5. Scalable Fonts"><em>Scalable Fonts</em></a>).
819 </p><p>
821 POINT_SIZE and RESOLUTION_Y are used by X clients to query fonts
822 according to device-independent size to maintain constant text
823 size on the display regardless of the PIXEL_SIZE used for the font.
824 </p></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="RESOLUTION_X_and_RESOLUTION_Y_Fields"></a>RESOLUTION_X and RESOLUTION_Y Fields</h4></div></div></div><p>
826 RESOLUTION_X and RESOLUTION_Y are unsigned integer-strings that give
827 the horizontal and vertical resolution,
828 measured in pixels or dots per inch (dpi),
829 for which the font was designed.
830 Zero is used to indicate a scalable font (see <a class="xref" href="#Scalable_Fonts" title="Chapter 5. Scalable Fonts"><em>Scalable Fonts</em></a>).
831 Horizontal and vertical values are required
832 because a separate bitmap font must be designed
833 for displays with very different aspect ratios
834 (for example, 1:1, 4:3, 2:1, and so on).
835 </p><p>
837 The separation of pixel or point size and resolution is necessary
838 because X allows for servers with very different video characteristics
839 (for example, horizontal and vertical resolution, screen and pixel size,
840 pixel shape, and so on) to potentially access the same font library.
841 The font name, for example, must differentiate between a 14-point font designed
842 for 75 dpi (body size of about 14 pixels) or a 14-point font designed
843 for 150 dpi (body size of about 28 pixels).
844 Further, in servers that implement some or all fonts as continuously scaled
845 and scan-converted outlines,
846 POINT_SIZE and RESOLUTION_Y will help the server to differentiate
847 between potentially separate font masters for text, title,
848 and display sizes or for other typographic considerations.
849 </p></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="SPACING_Field"></a>SPACING Field</h4></div></div></div><p>
851 SPACING is a code-string that indicates the escapement class of the font,
852 that is, monospace (fixed pitch), proportional (variable pitch),
853 or charcell (a special monospaced font that conforms to the traditional
854 data-processing character cell font model).
855 The encoding is as follows:
856 </p><div class="informaltable"><table border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /></colgroup><thead><tr><th align="left">Code</th><th align="left">English Translation</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left">"P"</td><td align="left">Proportional</td><td align="left">
857 A font whose logical character widths vary for each glyph.
858 Note that no other restrictions are placed on the metrics
859 of a proportional font.
860 </td></tr><tr><td align="left">"M"</td><td align="left">Monospaced</td><td align="left">
861 A font whose logical character widths are constant
862 (that is, every glyph in the font has the same logical width).
863 No other restrictions are placed on the metrics of a monospaced font.
864 </td></tr><tr><td align="left">"C"</td><td align="left">CharCell</td><td align="left">
865 A monospaced font that follows the standard typewriter character cell model
866 (that is, the glyphs of the font can be modeled by X clients as "boxes"
867 of the same width and height that are imaged side-by-side
868 to form text strings or top-to-bottom to form text lines).
869 By definition,
870 all glyphs have the same logical character width,
871 and no glyphs have "ink" outside of the character cell.
872 There is no kerning (that is, on a per-character basis with positive metrics:
873 0 &lt;= left-bearing &lt;= right-bearing &lt;= width;
874 with negative metrics: width &lt;= left-bearing &lt;= right-bearing &lt;= zero).
875 Also, the vertical extents of the font do not exceed the vertical spacing
876 (that is, on a per-character basis:
877 ascent &lt;= font-ascent and descent &lt;= font-descent).
878 The cell height = font-descent + font-ascent, and the width = AVERAGE_WIDTH.
879 </td></tr></tbody></table></div></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="AVERAGE_WIDTH_Field"></a>AVERAGE_WIDTH Field</h4></div></div></div><p>
881 AVERAGE_WIDTH is an integer-string typographic metric value
882 that gives the unweighted arithmetic mean of the absolute value of the
883 width of each glyph in the font
884 (measured in tenths of pixels), multiplied by -1 if the dominant
885 writing direction for the font is right-to-left.
886 A leading "~" (TILDE) indicates a negative value.
887 For monospaced and character cell fonts,
888 this is the width of all glyphs in the font.
889 Zero is used to indicate a scalable font (see <a class="xref" href="#Scalable_Fonts" title="Chapter 5. Scalable Fonts"><em>Scalable Fonts</em></a>).
890 </p></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="CHARSET_REGISTRY_and_CHARSET_ENCODING_Fields"></a>CHARSET_REGISTRY and CHARSET_ENCODING Fields</h4></div></div></div><p>
892 The character set used to encode the glyphs of the font (and implicitly
893 the font's glyph repertoire), as maintained by the X Consortium character
894 set registry.
895 CHARSET_REGISTRY is an x-registered-name that identifies
896 the registration authority that owns the specified encoding.
897 CHARSET_ENCODING is a registered name that identifies the coded character set
898 as defined by that registration authority
899 and, optionally, a subsetting hint.
900 </p><p>
902 Although the X protocol does not explicitly have any knowledge about
903 character set encodings,
904 it is expected that server implementors will prefer to embed knowledge
905 of certain proprietary or standard charsets into their font library
906 for reasons of performance and convenience.
907 The CHARSET_REGISTRY and CHARSET_ENCODING fields or properties allow
908 an X client font request to specify a specific charset mapping
909 in server environments where multiple charsets are supported.
910 The availability of any particular
911 character set is font and server implementation dependent.
912 </p><p>
914 To prevent collisions when defining character set names,
915 it is recommended that CHARSET_REGISTRY and CHARSET_ENCODING name pairs
916 be constructed according to the following conventions:
917 </p><div class="informaltable"><table border="0"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /></colgroup><tbody><tr><td align="left">CharsetRegistry ::=</td><td align="left">StdCharsetRegistryName | PrivCharsetRegistryName</td></tr><tr><td align="left">CharsetEncoding ::=</td><td align="left">StdCharsetEncodingName | PrivCharsetEncodingName</td></tr><tr><td align="left">StdCharsetRegistryName ::=</td><td align="left">StdOrganizationId StdNumber | StdOrganizationId StdNumber Dot Year</td></tr><tr><td align="left">PrivCharsetRegistryName ::=</td><td align="left">OrganizationId STRING8</td></tr><tr><td align="left">StdCharsetEncodingName ::=</td><td align="left">STRING8-numeric part number of referenced standard</td></tr><tr><td align="left">PrivCharsetEncodingName ::=</td><td align="left">STRING8</td></tr><tr><td align="left">StdOrganizationId ::=</td><td align="left">STRING8-the registered name or acronym of the referenced standard organization</td></tr><tr><td align="left">StdNumber ::=</td><td align="left">STRING8-referenced standard number</td></tr><tr><td align="left">OrganizationId ::=</td><td align="left">STRING8-the registered name or acronym of the organization</td></tr><tr><td align="left">Dot ::=</td><td align="left">OCTET-"." (FULL STOP)</td></tr><tr><td align="left">Year ::=</td><td align="left">STRING8-numeric year (for example, 1989)</td></tr></tbody></table></div><p>
919 The X Consortium shall maintain and publish a registry
920 of such character set names for use in X protocol font names and properties
921 as specified in XLFD.
922 </p><p>
924 The ISO Latin-1 character set shall be registered by the X Consortium as the
925 CHARSET_REGISTRY-CHARSET_ENCODING value pair: "ISO8859-1".
926 </p><p>
928 If the CHARSET_ENCODING contains a "[" (LEFT SQUARE BRACKET),
929 the "[" and the characters after it up to a "]" (RIGHT SQUARE
930 BRACKET) are a
931 subsetting hint telling the font source that the client is interested
932 only in a subset of the characters of the font.
933 The font source can, optionally, return a font that
934 contains only those characters or any superset of those characters. The
935 client can expect to obtain valid glyphs and metrics only for those
936 characters, and not for any other characters in the font.
937 The font properties may optionally be calculated by considering only
938 the characters in the subset.
939 </p><p>
941 The BNF for the subsetting hint is
942 </p><div class="informaltable"><table border="0"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /></colgroup><tbody><tr><td align="left">Subset ::=</td><td align="left">LeftBracket RangeList RightBracket</td></tr><tr><td align="left">RangeList ::=</td><td align="left">Range | Range Space RangeList</td></tr><tr><td align="left">Range ::=</td><td align="left">Number | Number Underscore Number</td></tr><tr><td align="left">Number ::=</td><td align="left">"0x" HexNumber | DecNumber</td></tr><tr><td align="left">HexNumber ::=</td><td align="left">HexDigit | HexDigit HexNumber</td></tr><tr><td align="left">DecNumber ::=</td><td align="left">DecDigit | DecDigit DecNumber</td></tr><tr><td align="left">DecDigit ::=</td><td align="left">"0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"</td></tr><tr><td align="left">HexDigit ::=</td><td align="left">DecDigit | "a" | "b" | "c" | "d" | "e" | "f"</td></tr><tr><td align="left">LeftBracket ::=</td><td align="left">"[" (LEFT SQUARE BRACKET)</td></tr><tr><td align="left">RightBracket ::=</td><td align="left">"]" (RIGHT SQUARE BRACKET)</td></tr><tr><td align="left">Space ::=</td><td align="left">"\0" (SPACE)</td></tr><tr><td align="left">Underscore ::=</td><td align="left">"_" (LOW LINE)</td></tr></tbody></table></div><p>
944 Each Range specifies characters that are to be part of the subset
945 included in the font.
946 A Range containing two Numbers specifies the first and last character,
947 inclusively, of a range of characters.
948 A Range that is a single Number specifies a single character to be
949 included in the font.
950 A HexNumber is interpreted as a hexadecimal number.
951 A DecNumber is interpreted as a decimal number.
952 The font consists of the union of all the Ranges in the
953 RangeList.
954 </p><p>
956 For example,
957 </p><pre class="literallayout">
958 -misc-fixed-medium-r-normal--0-0-0-0-c-0-iso8859-1[65 70 80_90]
959 </pre><p>
960 tells the font source that the client is interested only in characters
961 65, 70, and 80-90.
962 </p></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="Examples"></a>Examples</h3></div></div></div><p>
964 The following examples of font names are derived from the screen fonts
965 shipped with the X Consortium distribution.
966 </p><div class="informaltable"><table border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /></colgroup><thead><tr><th align="left">Font</th><th align="left">X FontName</th></tr></thead><tbody><tr><td align="left"><code class="function">75-dpi Fonts</code></td><td class="auto-generated"> </td></tr><tr><td align="left">Charter 12 pt</td><td align="left">-Bitstream-Charter-Medium-R-Normal--12-120-75-75-P-68-ISO8859-1</td></tr><tr><td align="left">Charter Bold 12 pt</td><td align="left">-Bitstream-Charter-Bold-R-Normal--12-120-75-75-P-76-ISO8859-1</td></tr><tr><td align="left">Charter Bold Italic 12 pt</td><td align="left">-Bitstream-Charter-Bold-I-Normal--12-120-75-75-P-75-ISO8859-1</td></tr><tr><td align="left">Charter Italic 12 pt</td><td align="left">-Bitstream-Charter-Medium-I-Normal--12-120-75-75-P-66-ISO8859-1</td></tr><tr><td align="left">Courier 8 pt</td><td align="left">-Adobe-Courier-Medium-R-Normal--8-80-75-75-M-50-ISO8859-1</td></tr><tr><td align="left">Courier 10 pt</td><td align="left">-Adobe-Courier-Medium-R-Normal--10-100-75-75-M-60-ISO8859-1</td></tr><tr><td align="left">Courier 12 pt</td><td align="left">-Adobe-Courier-Medium-R-Normal--12-120-75-75-M-70-ISO8859-1</td></tr><tr><td align="left">Courier 24 pt</td><td align="left">-Adobe-Courier-Medium-R-Normal--24-240-75-75-M-150-ISO8859-1</td></tr><tr><td align="left">Courier Bold 10 pt</td><td align="left">-Adobe-Courier-Bold-R-Normal--10-100-75-75-M-60-ISO8859-1</td></tr><tr><td align="left">Courier Bold Oblique 10 pt</td><td align="left">-Adobe-Courier-Bold-O-Normal--10-100-75-75-M-60-ISO8859-1</td></tr><tr><td align="left">Courier Oblique 10 pt</td><td align="left">-Adobe-Courier-Medium-O-Normal--10-100-75-75-M-60-ISO8859-1</td></tr><tr><td align="left"><code class="function">100-dpi Fonts</code></td><td class="auto-generated"> </td></tr><tr><td align="left">Symbol 10 pt</td><td align="left">-Adobe-Symbol-Medium-R-Normal--14-100-100-100-P-85-Adobe-FONTSPECIFIC</td></tr><tr><td align="left">Symbol 14 pt</td><td align="left">-Adobe-Symbol-Medium-R-Normal--20-140-100-100-P-107-Adobe-FONTSPECIFIC</td></tr><tr><td align="left">Symbol 18 pt</td><td align="left">-Adobe-Symbol-Medium-R-Normal--25-180-100-100-P-142-Adobe-FONTSPECIFIC</td></tr><tr><td align="left">Symbol 24 pt</td><td align="left">-Adobe-Symbol-Medium-R-Normal--34-240-100-100-P-191-Adobe-FONTSPECIFIC</td></tr><tr><td align="left">Times Bold 10 pt</td><td align="left">-Adobe-Times-Bold-R-Normal--14-100-100-100-P-76-ISO8859-1</td></tr><tr><td align="left">Times Bold Italic 10 pt</td><td align="left">-Adobe-Times-Bold-I-Normal--14-100-100-100-P-77-ISO8859-1</td></tr><tr><td align="left">Times Italic 10 pt</td><td align="left">-Adobe-Times-Medium-I-Normal--14-100-100-100-P-73-ISO8859-1</td></tr><tr><td align="left">Times Roman 10 pt</td><td align="left">-Adobe-Times-Medium-R-Normal--14-100-100-100-P-74-ISO8859-1</td></tr></tbody></table></div></div></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="Font_Properties"></a>Font Properties</h2></div></div></div><p>
968 All font properties are optional but will generally include the
969 font name fields and, on a font-by-font basis, any other useful font
970 descriptive and use information that may be required to use the font
971 intelligently.
972 The XLFD specifies an extensive set of standard X font properties,
973 their interpretation, and fallback rules when the property is not defined
974 for a given font.
975 The goal is to provide client applications with enough font information
976 to be able to make automatic formatting and display decisions
977 with good typographic results.
978 </p><p>
980 Font property names use the ISO 8859-1 encoding.
981 </p><p>
983 Additional standard X font property definitions may be defined in the
984 future and private properties may exist in X fonts at any time.
985 Private font properties should be defined to conform to the general mechanism
986 defined in the X protocol to prevent overlap of name space and ambiguous
987 property names, that is, private font property names are of the form:
988 "_" (LOW LINE),
989 followed by the organizational identifier, followed by "_" (LOW LINE),
990 and terminated with the property name.
991 </p><p>
993 The Backus-Naur Form syntax description of X font properties is as follows:
994 </p><div class="informaltable"><table border="0"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /></colgroup><tbody><tr><td align="left">Properties ::=</td><td align="left">OptFontPropList</td></tr><tr><td align="left">OptFontPropList ::=</td><td align="left">NULL | OptFontProp OptFontPropList</td></tr><tr><td align="left">OptFontProp ::=</td><td align="left">PrivateFontProp | XFontProp</td></tr><tr><td align="left">PrivateFontProp ::=</td><td align="left">STRING8 | Underscore OrganizationId Underscore STRING8</td></tr><tr><td align="left">XFontProp ::=</td><td align="left">
995 FOUNDRY | FAMILY_NAME | WEIGHT_NAME | SLANT | SETWIDTH_NAME | ADD_STYLE_NAME
996 | PIXEL_SIZE | POINT_SIZE | RESOLUTION_X | RESOLUTION_Y | SPACING |
997 AVERAGE_WIDTH | CHARSET_REGISTRY | CHARSET_ENCODING | QUAD_WIDTH |
998 RESOLUTION | MIN_SPACE | NORM_SPACE | MAX_SPACE | END_SPACE | SUPERSCRIPT_X |
999 SUPERSCRIPT_Y | SUBSCRIPT_X | SUBSCRIPT_Y | UNDERLINE_POSITION |
1000 UNDERLINE_THICKNESS | STRIKEOUT_ASCENT | STRIKEOUT_DESCENT | ITALIC_ANGLE
1001 | X_HEIGHT | WEIGHT | FACE_NAME |
1002 FULL_NAME | FONT |
1003 COPYRIGHT | AVG_CAPITAL_WIDTH |
1004 AVG_LOWERCASE_WIDTH | RELATIVE_SETWIDTH | RELATIVE_WEIGHT | CAP_HEIGHT |
1005 SUPERSCRIPT_ SIZE | FIGURE_WIDTH | SUBSCRIPT_SIZE | SMALL_CAP_SIZE |
1006 NOTICE | DESTINATION
1007 | FONT_TYPE | FONT_VERSION | RASTERIZER_NAME | RASTERIZER_VERSION |
1008 RAW_ASCENT | RAW_DESCENT | RAW_* | AXIS_NAMES | AXIS_LIMITS |
1009 AXIS_TYPES</td></tr><tr><td align="left">Underscore ::=</td><td align="left">OCTET-"_" (LOW LINE)</td></tr><tr><td align="left">OrganizationId ::=</td><td align="left">STRING8-the registered name of the organization</td></tr></tbody></table></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="FOUNDRY"></a>FOUNDRY</h3></div></div></div><p>
1011 FOUNDRY is as defined in the
1012 <code class="function">FontName</code>
1013 except that the property type is ATOM.
1014 </p><p>
1016 FOUNDRY cannot be calculated or defaulted if not supplied as a font property.
1017 </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="FAMILY_NAME"></a>FAMILY_NAME</h3></div></div></div><p>
1019 FAMILY_NAME is as defined in the
1020 <code class="function">FontName</code>
1021 except that the property type is ATOM.
1022 </p><p>
1024 FAMILY_NAME cannot be calculated or defaulted if not supplied as a font
1025 property.
1026 </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="WEIGHT_NAME"></a>WEIGHT_NAME</h3></div></div></div><p>
1028 WEIGHT_NAME is as defined in the
1029 <code class="function">FontName</code>
1030 except that the property type is ATOM.
1031 </p><p>
1033 WEIGHT_NAME can be defaulted if not supplied as a font property, as follows:
1034 </p><pre class="literallayout">
1035 if (WEIGHT_NAME undefined) then
1036 WEIGHT_NAME = ATOM("Medium")
1037 </pre></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="SLANT"></a>SLANT</h3></div></div></div><p>
1039 SLANT is as defined in the
1040 <code class="function">FontName</code>
1041 except that the property type is ATOM.
1042 </p><p>
1044 SLANT can be defaulted if not supplied as a font property, as follows:
1045 </p><pre class="literallayout">
1046 if (SLANT undefined) then
1047 SLANT = ATOM("R")
1048 </pre></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="SETWIDTH_NAME"></a>SETWIDTH_NAME</h3></div></div></div><p>
1050 SETWIDTH_NAME is as defined in the
1051 <code class="function">FontName</code>
1052 except that the property type is ATOM.
1053 </p><p>
1055 SETWIDTH_NAME can be defaulted if not supplied as a font property, as follows:
1056 </p><pre class="literallayout">
1057 if (SETWIDTH_NAME undefined) then
1058 SETWIDTH_NAME = ATOM("Normal")
1059 </pre></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="ADD_STYLE_NAME"></a>ADD_STYLE_NAME</h3></div></div></div><p>
1061 ADD_STYLE_NAME is as defined in the
1062 <code class="function">FontName</code>
1063 except that the property type is ATOM.
1064 </p><p>
1066 ADD_STYLE_NAME can be defaulted if not supplied as a font property, as follows:
1067 </p><pre class="literallayout">
1068 if (ADD_STYLE_NAME undefined) then
1069 ADD_STYLE_NAME = ATOM("")
1070 </pre></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="PIXEL_SIZE"></a>PIXEL_SIZE</h3></div></div></div><p>
1072 PIXEL_SIZE is as defined in the
1073 <code class="function">FontName</code>
1074 except that the property type is INT32.
1075 </p><p>
1077 X clients requiring pixel values for the various typographic fixed
1078 spaces (em space, en space, and thin space) can use the following
1079 algorithm for computing these values from other properties specified
1080 for a font:
1081 </p><pre class="literallayout">
1082 DeciPointsPerInch = 722.7
1083 EMspace = ROUND ((RESOLUTION_X * POINT_SIZE) / DeciPointsPerInch)
1084 ENspace = ROUND (EMspace / 2)
1085 THINspace = ROUND (EMspace / 3)\fP
1086 </pre><p>
1088 where a slash (/) denotes real division,
1089 an asterisk (*) denotes real multiplication,
1090 and ROUND denotes a function that rounds its real argument
1091 <span class="emphasis"><em>a</em></span> up or down
1092 to the next integer.
1093 This rounding is done according to X = FLOOR (
1094 <span class="emphasis"><em>a</em></span> + 0.5),
1095 where FLOOR is a function that rounds its real argument down to the
1096 nearest integer.
1097 </p><p>
1099 PIXEL_SIZE can be approximated if not supplied as a font property,
1100 according to the following algorithm:
1101 </p><pre class="literallayout">
1102 DeciPointsPerInch = 722.7
1103 if (PIXEL_SIZE undefined) then
1104 PIXEL_SIZE = ROUND ((RESOLUTION_Y * POINT_SIZE) / DeciPointsPerInch)
1105 </pre></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="POINT_SIZE"></a>POINT_SIZE</h3></div></div></div><p>
1107 POINT_SIZE is as defined in the
1108 <code class="function">FontName</code>
1109 except that the property type is INT32.
1110 </p><p>
1112 X clients requiring device-independent values for em space,
1113 en space, and thin space can use the following algorithm:
1114 </p><pre class="literallayout">
1115 EMspace = ROUND (POINT_SIZE / 10)
1116 ENspace = ROUND (POINT_SIZE / 20)
1117 THINspace = ROUND (POINT_SIZE / 30)
1118 </pre><p>
1120 Design POINT_SIZE cannot be calculated or approximated.
1121 </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="RESOLUTION_X_x"></a>RESOLUTION_X</h3></div></div></div><p>
1123 RESOLUTION_X is as defined in the
1124 <code class="function">FontName</code>
1125 except that the property type is CARD32.
1126 </p><p>
1128 RESOLUTION_X cannot be calculated or approximated.
1129 </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="RESOLUTION_Y_y"></a>RESOLUTION_Y</h3></div></div></div><p>
1131 RESOLUTION_Y is as defined in the
1132 <code class="function">FontName</code>
1133 except that the property type is CARD32.
1134 </p><p>
1136 RESOLUTION_X cannot be calculated or approximated.
1137 </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="SPACING"></a>SPACING</h3></div></div></div><p>
1139 SPACING is as defined in the
1140 <code class="function">FontName</code>
1141 except that the property type is ATOM.
1142 </p><p>
1144 SPACING can be calculated if not supplied as a font property,
1145 according to the definitions given above for the
1146 <code class="function">FontName</code>.
1147 </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="AVERAGE_WIDTH"></a>AVERAGE_WIDTH</h3></div></div></div><p>
1149 AVERAGE_WIDTH is as defined in the
1150 <code class="function">FontName</code>
1151 except that the property type is INT32.
1152 </p><p>
1154 AVERAGE_WIDTH can be calculated if not provided as a font property,
1155 according to the following algorithm:
1156 </p><pre class="literallayout">
1157 if (AVERAGE_WIDTH undefined) then
1158 AVERAGE_WIDTH = ROUND (MEAN (ABS (width of each glyph in font)) * 10)
1159 * (if (dominant writing direction L-to-R) then 1 else -1)
1160 </pre><p>
1162 where MEAN is a function that returns the arithmetic mean of its arguments.
1163 </p><p>
1165 X clients that require values for the number of characters per inch (pitch)
1166 of a monospaced font can use the following algorithm using the
1167 AVERAGE_WIDTH and RESOLUTION_X font properties:
1168 </p><pre class="literallayout">
1169 if (SPACING not proportional) then
1170 CharPitch = (RESOLUTION_X * 10) / AVERAGE_WIDTH
1171 </pre></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="CHARSET_REGISTRY"></a>CHARSET_REGISTRY</h3></div></div></div><p>
1173 CHARSET_REGISTRY is as defined in the
1174 <code class="function">FontName</code>
1175 except that the property type is ATOM.
1176 </p><p>
1178 CHARSET_REGISTRY cannot be defaulted if not supplied as a font property.
1179 </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="CHARSET_ENCODING"></a>CHARSET_ENCODING</h3></div></div></div><p>
1181 CHARSET_ENCODING is as defined in the
1182 <code class="function">FontName</code>
1183 except that the property type is ATOM.
1184 </p><p>
1186 CHARSET_ENCODING cannot be defaulted if not supplied as a font property.
1187 </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="MIN_SPACE"></a>MIN_SPACE</h3></div></div></div><p>
1189 MIN_SPACE is an integer value (of type INT32)
1190 that gives the recommended minimum word-space value to be used with this font.
1191 </p><p>
1193 MIN_SPACE can be approximated if not provided as a font property,
1194 according to the following algorithm:
1195 </p><pre class="literallayout">
1196 if (MIN_SPACE undefined) then
1197 MIN_SPACE = ROUND(0.75 * NORM_SPACE)
1198 </pre></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="NORM_SPACE"></a>NORM_SPACE</h3></div></div></div><p>
1200 NORM_SPACE is an integer value (of type INT32)
1201 that gives the recommended normal word-space value to be used with this font.
1202 </p><p>
1204 NORM_SPACE can be approximated if not provided as a font property,
1205 according to the following algorithm:
1206 </p><pre class="literallayout">
1207 DeciPointsPerInch = 722.7
1208 if (NORM_SPACE undefined) then
1209 if (SPACE glyph exists) then
1210 NORM_SPACE = width of SPACE
1211 else NORM_SPACE = ROUND((0.33 * RESOLUTION_X * POINT_SIZE)/ DeciPointsPerInch)
1212 </pre></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="MAX_SPACE"></a>MAX_SPACE</h3></div></div></div><p>
1214 MAX_SPACE is an integer value (of type INT32)
1215 that gives the recommended maximum word-space value to be used with this font.
1216 </p><p>
1218 MAX_SPACE can be approximated if not provided as a font property,
1219 according to the following algorithm:
1220 </p><pre class="literallayout">
1221 if (MAX_SPACE undefined) then
1222 MAX_SPACE = ROUND(1.5 * NORM_SPACE)
1223 </pre></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="END_SPACE"></a>END_SPACE</h3></div></div></div><p>
1225 END_SPACE is an integer value (of type INT32)
1226 that gives the recommended spacing at the end of sentences.
1227 </p><p>
1229 END_SPACE can be approximated if not provided as a font property,
1230 according to the following algorithm:
1231 </p><pre class="literallayout">
1232 if (END_SPACE undefined) then
1233 END_SPACE = NORM_SPACE
1234 </pre></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="AVG_CAPITAL_WIDTH"></a>AVG_CAPITAL_WIDTH</h3></div></div></div><p>
1236 AVG_CAPITAL_WIDTH is an integer value (of type INT32)
1237 that gives the unweighted arithmetic mean of the absolute value of the
1238 width of each capital glyph in the font, in tenths of pixels,
1239 multiplied by -1 if the dominant
1240 writing direction for the font is right-to-left.
1241 This property applies to both Latin and non-Latin fonts.
1242 For Latin fonts,
1243 capitals are the glyphs A through Z.
1244 This property is usually used for font matching or substitution.
1245 </p><p>
1247 AVG_CAPITAL_WIDTH can be calculated if not provided as a font property,
1248 according to the following algorithm:
1249 </p><pre class="literallayout">
1250 if (AVG_CAPITAL_WIDTH undefined) then
1251 if (capitals exist) then
1252 AVG_CAPITAL_WIDTH = ROUND (MEAN
1253 (ABS (width of each capital glyph)) * 10)
1254 * (if (dominant writing direction L-to-R) then 1 else -1)
1255 else AVG_CAPITAL_WIDTH undefined
1256 </pre></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="AVG_LOWERCASE_WIDTH"></a>AVG_LOWERCASE_WIDTH</h3></div></div></div><p>
1258 AVG_LOWERCASE_WIDTH is an integer value (of type INT32)
1259 that gives the unweighted arithmetic mean width of the absolute value
1260 of the width of each lowercase glyph in the font in tenths of pixels,
1261 multiplied by -1 if the dominant
1262 writing direction for the font is right-to-left.
1263 For Latin fonts,
1264 lowercase are the glyphs a through z.
1265 This property is usually used for font matching or substitution.
1266 </p><p>
1268 Where appropriate,
1269 AVG_LOWERCASE_WIDTH can be approximated if not provided as a font property,
1270 according to the following algorithm:
1271 </p><pre class="literallayout">
1272 if (AVG_LOWERCASE_WIDTH undefined) then
1273 if (lowercase exists) then
1274 AVG_LOWERCASE_WIDTH = ROUND (MEAN
1275 (ABS (width of each lowercase glyph)) * 10)
1276 * (if (dominant writing direction L-to-R) then 1 else -1)
1277 else AVG_LOWERCASE_WIDTH undefined
1278 </pre></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="QUAD_WIDTH"></a>QUAD_WIDTH</h3></div></div></div><p>
1280 QUAD_WIDTH is an integer typographic metric (of type INT32)
1281 that gives the width of a quad (em) space.
1282 </p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>
1284 Because all typographic fixed spaces (em, en, and thin) are constant
1285 for a given font size (that is, they do not vary according to setwidth),
1286 the use of this font property has been deprecated.
1287 X clients that require typographic fixed space values are encouraged
1288 to discontinue use of QUAD_WIDTH and compute these values
1289 from other font properties (for example, PIXEL_SIZE).
1290 X clients that require a font-dependent width value should use either
1291 the FIGURE_WIDTH or one of the average character width font properties
1292 (AVERAGE_WIDTH, AVG_CAPITAL_WIDTH or AVG_LOWERCASE_WIDTH).
1293 </p></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="FIGURE_WIDTH"></a>FIGURE_WIDTH</h3></div></div></div><p>
1295 FIGURE_WIDTH is an integer typographic metric (of type INT32)
1296 that gives the width of the tabular figures and the dollar sign,
1297 if suitable for tabular setting (all widths equal).
1298 For Latin fonts, these tabular figures are the Arabic numerals 0 through 9.
1299 </p><p>
1301 FIGURE_WIDTH can be approximated if not supplied as a font property,
1302 according to the following algorithm:
1303 </p><pre class="literallayout">
1304 if (numerals and DOLLAR sign are defined &amp; widths are equal) then
1305 FIGURE_WIDTH = width of DOLLAR
1306 else FIGURE_WIDTH property undefined
1307 </pre></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="SUPERSCRIPT_X_x"></a>SUPERSCRIPT_X</h3></div></div></div><p>
1309 SUPERSCRIPT_X is an integer value (of type INT32)
1310 that gives the recommended horizontal offset in pixels
1311 from the position point to the X origin of synthetic superscript text.
1312 If the current position point is at [X,Y],
1313 then superscripts should begin at [X + SUPERSCRIPT_X, Y - SUPERSCRIPT_Y].
1314 </p><p>
1316 SUPERSCRIPT_X can be approximated if not provided as a font property,
1317 according to the following algorithm:
1318 </p><pre class="literallayout">
1319 if (SUPERSCRIPT_X undefined) then
1320 if (TANGENT(ITALIC_ANGLE) defined) then
1321 SUPERSCRIPT_X = ROUND((0.40 * CAP_HEIGHT) / TANGENT(ITALIC_ANGLE))
1322 else SUPERSCRIPT_X = ROUND(0.40 * CAP_HEIGHT)
1323 </pre><p>
1325 where TANGENT is a trigonometric function that returns the tangent of
1326 its argument, which is in 1/64 degrees.
1327 </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="SUPERSCRIPT_Y_y"></a>SUPERSCRIPT_Y</h3></div></div></div><p>
1329 SUPERSCRIPT_Y is an integer value (of type INT32)
1330 that gives the recommended vertical offset in pixels
1331 from the position point to the Y origin of synthetic superscript text.
1332 If the current position point is at [X,Y],
1333 then superscripts should begin at [X + SUPERSCRIPT_X, Y - SUPERSCRIPT_Y].
1334 </p><p>
1336 SUPERSCRIPT_Y can be approximated if not provided as a font property,
1337 according to the following algorithm:
1338 </p><pre class="literallayout">
1339 if (SUPERSCRIPT_Y undefined) then
1340 SUPERSCRIPT_Y = ROUND(0.40 * CAP_HEIGHT)
1341 </pre></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="SUBSCRIPT_X_x"></a>SUBSCRIPT_X</h3></div></div></div><p>
1343 SUBSCRIPT_X is an integer value (of type INT32)
1344 that gives the recommended horizontal offset in pixels
1345 from the position point to the X origin of synthetic subscript text.
1346 If the current position point is at [X,Y],
1347 then subscripts should begin at [X + SUBSCRIPT_X, Y + SUBSCRIPT_Y].
1348 </p><p>
1350 SUBSCRIPT_X can be approximated if not provided as a font property,
1351 according to the following algorithm:
1352 </p><pre class="literallayout">
1353 if (SUBSCRIPT_X undefined) then
1354 if (TANGENT(ITALIC_ANGLE) defined) then
1355 SUBSCRIPT_X = ROUND((0.40 * CAP_HEIGHT) / TANGENT(ITALIC_ANGLE))
1356 else SUBSCRIPT_X = ROUND(0.40 * CAP_HEIGHT)
1357 </pre></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="SUBSCRIPT_Y_y"></a>SUBSCRIPT_Y</h3></div></div></div><p>
1359 SUBSCRIPT_Y is an integer value (of type INT32)
1360 that gives the recommended vertical offset in pixels
1361 from the position point to the Y origin of synthetic subscript text.
1362 If the current position point is at [X,Y],
1363 then subscripts should begin at [X + SUBSCRIPT_X, Y + SUBSCRIPT_Y].
1364 </p><p>
1366 SUBSCRIPT_Y can be approximated if not provided as a font property,
1367 according to the following algorithm:
1368 </p><pre class="literallayout">
1369 if (SUBSCRIPT_Y undefined) then
1370 SUBSCRIPT_Y = ROUND(0.40 * CAP_HEIGHT)
1371 </pre></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="SUPERSCRIPT_SIZE"></a>SUPERSCRIPT_SIZE</h3></div></div></div><p>
1373 SUPERSCRIPT_SIZE is an integer value (of type INT32)
1374 that gives the recommended body size of synthetic superscripts
1375 to be used with this font, in pixels.
1376 This will generally be smaller than the size of the current font;
1377 that is, superscripts are imaged from a smaller font
1378 offset according to SUPERSCRIPT_X and SUPERSCRIPT_Y.
1379 </p><p>
1381 SUPERSCRIPT_SIZE can be approximated if not provided as a font property,
1382 according to the following algorithm:
1383 </p><pre class="literallayout">
1384 if (SUPERSCRIPT_SIZE undefined) then
1385 SUPERSCRIPT_SIZE = ROUND(0.60 * PIXEL_SIZE)
1386 </pre></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="SUBSCRIPT_SIZE"></a>SUBSCRIPT_SIZE</h3></div></div></div><p>
1388 SUBSCRIPT_SIZE is an integer value (of type INT32)
1389 that gives the recommended body size of synthetic subscripts
1390 to be used with this font, in pixels.
1391 As with SUPERSCRIPT_SIZE,
1392 this will generally be smaller than the size of the current font;
1393 that is, subscripts are imaged from a smaller
1394 font offset according to SUBSCRIPT_X and SUBSCRIPT_Y.
1395 </p><p>
1397 SUBSCRIPT_SIZE can be approximated if not provided as a font property,
1398 according to the algorithm:
1399 </p><pre class="literallayout">
1400 if (SUBSCRIPT_SIZE undefined) then
1401 SUBSCRIPT_SIZE = ROUND(0.60 * PIXEL_SIZE)
1402 </pre></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="SMALL_CAP_SIZE"></a>SMALL_CAP_SIZE</h3></div></div></div><p>
1404 SMALL_CAP_SIZE is an integer value (of type INT32)
1405 that gives the recommended body size of synthetic small capitals
1406 to be used with this font, in pixels.
1407 Small capitals are generally imaged from a smaller font
1408 of slightly more weight.
1409 No offset [X,Y] is necessary.
1410 </p><p>
1412 SMALL_CAP_SIZE can be approximated if not provided as a font property,
1413 according to the following algorithm:
1414 </p><pre class="literallayout">
1415 if (SMALL_CAP_SIZE undefined) then
1416 SMALL_CAP_SIZE = ROUND(PIXEL_SIZE * ((X_HEIGHT
1417 + ((CAP_HEIGHT - X_HEIGHT) / 3)) / CAP_HEIGHT))
1418 </pre></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="UNDERLINE_POSITION"></a>UNDERLINE_POSITION</h3></div></div></div><p>
1420 UNDERLINE_POSITION is an integer value (of type INT32)
1421 that gives the recommended vertical offset in pixels
1422 from the baseline to the top of the underline.
1423 If the current position point is at [X,Y],
1424 the top of the baseline is given by [X, Y + UNDERLINE_POSITION].
1425 </p><p>
1427 UNDERLINE_POSITION can be approximated if not provided as a font
1428 property, according to the following algorithm:
1429 </p><pre class="literallayout">
1430 if (UNDERLINE_POSITION undefined) then
1431 UNDERLINE_POSITION = ROUND((maximum descent) / 2)
1432 </pre><p>
1433 where <span class="emphasis"><em>maximum descent</em></span>
1434 is the maximum descent (below the baseline)
1435 in pixels of any glyph in the font.
1436 </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="UNDERLINE_THICKNESS"></a>UNDERLINE_THICKNESS</h3></div></div></div><p>
1438 UNDERLINE_THICKNESS is an integer value (of type INT32)
1439 that gives the recommended underline thickness, in pixels.
1440 </p><p>
1442 UNDERLINE_THICKNESS can be approximated if not provided as a font property,
1443 according to the following algorithm:
1444 </p><pre class="literallayout">
1445 CapStemWidth = average width of the stems of capitals
1446 if (UNDERLINE_THICKNESS undefined) then
1447 UNDERLINE_THICKNESS = CapStemWidth
1448 </pre></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="STRIKEOUT_ASCENT"></a>STRIKEOUT_ASCENT</h3></div></div></div><p>
1450 STRIKEOUT_ASCENT is an integer value (of type INT32)
1451 that gives the vertical ascent for boxing or voiding glyphs in this font.
1452 If the current position is at [X,Y] and the string extent is EXTENT,
1453 the upper-left corner of the strikeout box is at [X, Y - STRIKEOUT_ASCENT]
1454 and the lower-right corner of the box is at [X + EXTENT, Y + STRIKEOUT_DESCENT].
1455 </p><p>
1457 STRIKEOUT_ASCENT can be approximated if not provided as a font property,
1458 according to the following algorithm:
1459 </p><pre class="literallayout">
1460 if (STRIKEOUT_ASCENT undefined)
1461 STRIKEOUT_ASCENT = maximum ascent
1462 </pre><p>
1463 where <span class="emphasis"><em>maximum ascent</em></span>
1464 is the maximum ascent (above the baseline)
1465 in pixels of any glyph in the font.
1466 </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="STRIKEOUT_DESCENT"></a>STRIKEOUT_DESCENT</h3></div></div></div><p>
1468 STRIKEOUT_DESCENT is an integer value (of type INT32)
1469 that gives the vertical descent for boxing or voiding glyphs in this font.
1470 If the current position is at [X,Y] and the string extent is EXTENT,
1471 the upper-left corner of the strikeout box is at [X, Y - STRIKEOUT_ASCENT]
1472 and the lower-right corner of the box is at
1473 [X + EXTENT, Y + STRIKEOUT_DESCENT].
1474 </p><p>
1476 STRIKEOUT_DESCENT can be approximated if not provided as a font property,
1477 according to the following algorithm:
1478 </p><pre class="literallayout">
1479 if (STRIKEOUT_DESCENT undefined)
1480 STRIKEOUT_DESCENT = maximum descent
1481 </pre><p>
1482 where <span class="emphasis"><em>maximum descent</em></span> is the maximum
1483 descent (below the baseline)
1484 in pixels of any glyph in the font.
1485 </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="ITALIC_ANGLE"></a>ITALIC_ANGLE</h3></div></div></div><p>
1487 ITALIC_ANGLE is an integer value (of type INT32)
1488 that gives the nominal posture angle of the typeface design, in 1/64 degrees,
1489 measured from the glyph origin counterclockwise from the three o'clock position.
1490 </p><p>
1492 ITALIC_ANGLE can be defaulted if not provided as a font property,
1493 according to the following algorithm:
1494 </p><pre class="literallayout">
1495 if (ITALIC_ANGLE undefined) then
1496 ITALIC_ANGLE = (90 * 64)
1497 </pre></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="CAP_HEIGHT"></a>CAP_HEIGHT</h3></div></div></div><p>
1499 CAP_HEIGHT is an integer value (of type INT32)
1500 that gives the nominal height of the capital letters contained in the font,
1501 as specified by the FOUNDRY or typeface designer.
1502 </p><p>
1504 Certain clients require CAP_HEIGHT to compute scale factors and
1505 positioning offsets for synthesized glyphs where this
1506 information or designed glyphs are not explicitly provided by the font
1507 (for example, small capitals, superiors, inferiors, and so on).
1508 CAP_HEIGHT is also a critical factor in font matching and substitution.
1509 </p><p>
1511 CAP_HEIGHT can be approximated if not provided as a font property,
1512 according to the following algorithm:
1513 </p><pre class="literallayout">
1514 if (CAP_HEIGHT undefined) then
1515 if (Latin font) then
1516 CAP_HEIGHT = XCharStruct.ascent[glyph X]
1517 else if (capitals exist) then
1518 CAP_HEIGHT = XCharStruct.ascent[some unaccented capital glyph]
1519 else CAP_HEIGHT undefined
1520 </pre></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="X_HEIGHT"></a>X_HEIGHT</h3></div></div></div><p>
1522 X_HEIGHT is an integer value (of type INT32)
1523 that gives the nominal height above the baseline of the lowercase glyphs
1524 contained in the font,
1525 as specified by the FOUNDRY or typeface designer.
1526 </p><p>
1528 As with CAP_HEIGHT,
1529 X_HEIGHT is required by certain clients to compute scale factors
1530 for synthesized small capitals where this information is not explicitly
1531 provided by the font resource.
1532 X_HEIGHT is a critical factor in font matching and substitution.
1533 </p><p>
1535 X_HEIGHT can be approximated if not provided as a font property,
1536 according to the following algorithm:
1537 </p><pre class="literallayout">
1538 if (X_HEIGHT undefined) then
1539 if (Latin font) then
1540 X_HEIGHT = XCharStruct.ascent[glyph x]
1541 else if (lowercase exists) then
1542 X_HEIGHT = XCharStruct.ascent[some unaccented lc glyph without an ascender]
1543 else X_HEIGHT undefined
1544 </pre></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="RELATIVE_SETWIDTH"></a>RELATIVE_SETWIDTH</h3></div></div></div><p>
1546 RELATIVE_SETWIDTH is an unsigned integer value (of type CARD32)
1547 that gives the coded proportionate width of the font,
1548 relative to all known fonts of the same typeface family,
1549 according to the type designer's or FOUNDRY's judgment.
1550 </p><p>
1552 RELATIVE_SETWIDTH ranges from 10 to 90 or is 0 if undefined or unknown.
1553 The following reference values are defined:
1554 </p><div class="informaltable"><table border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /></colgroup><thead><tr><th align="left">Code</th><th align="left">English Translation</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left">0</td><td align="left">Undefined</td><td align="left">Undefined or unknown</td></tr><tr><td align="left">10</td><td align="left">UltraCondensed</td><td align="left">The lowest ratio of average width to height</td></tr><tr><td align="left">20</td><td align="left">ExtraCondensed</td><td class="auto-generated"> </td></tr><tr><td align="left">30</td><td align="left">Condensed</td><td align="left">Condensed, Narrow, Compressed, ...</td></tr><tr><td align="left">40</td><td align="left">SemiCondensed</td><td class="auto-generated"> </td></tr><tr><td align="left">50</td><td align="left">Medium</td><td align="left">Medium, Normal, Regular, ...</td></tr><tr><td align="left">60</td><td align="left">SemiExpanded</td><td align="left">SemiExpanded, DemiExpanded, ...</td></tr><tr><td align="left">70</td><td align="left">Expanded</td><td class="auto-generated"> </td></tr><tr><td align="left">80</td><td align="left">ExtraExpanded</td><td align="left">ExtraExpanded, Wide, ...</td></tr><tr><td align="left">90</td><td align="left">UltraExpanded</td><td align="left">The highest ratio of average width to height</td></tr></tbody></table></div><p>
1556 RELATIVE_SETWIDTH can be defaulted if not provided as a font property,
1557 according to the following algorithm:
1558 </p><pre class="literallayout">
1559 if (RELATIVE_SETWIDTH undefined) then
1560 RELATIVE_SETWIDTH = 50
1561 </pre><p>
1563 For polymorphic fonts, RELATIVE_SETWIDTH is not necessarily a
1564 linear function of the font's setwidth axis.
1565 </p><p>
1567 X clients that want to obtain a calculated proportionate width of the
1568 font (that is, a font-independent way of identifying the proportionate
1569 width across all fonts and all font vendors) can use the following algorithm:
1570 </p><pre class="literallayout">
1571 SETWIDTH = AVG_CAPITAL_WIDTH / (CAP_HEIGHT * 10)
1572 </pre><p>
1574 where SETWIDTH is a real number with zero being the narrowest
1575 calculated setwidth.
1576 </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="RELATIVE_WEIGHT"></a>RELATIVE_WEIGHT</h3></div></div></div><p>
1578 RELATIVE_WEIGHT is an unsigned integer value (of type CARD32)
1579 that gives the coded weight of the font,
1580 relative to all known fonts of the same typeface family,
1581 according to the type designer's or FOUNDRY's judgment.
1582 </p><p>
1584 RELATIVE_WEIGHT ranges from 10 to 90 or is 0 if undefined or unknown.
1585 The following reference values are defined:
1586 </p><div class="informaltable"><table border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /></colgroup><thead><tr><th align="left">Code</th><th align="left">English Translation</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left">0</td><td align="left">Undefined</td><td align="left">Undefined or unknown</td></tr><tr><td align="left">10</td><td align="left">UltraLight</td><td align="left">The lowest ratio of stem width to height</td></tr><tr><td align="left">20</td><td align="left">ExtraLight</td><td class="auto-generated"> </td></tr><tr><td align="left">30</td><td align="left">Light</td><td class="auto-generated"> </td></tr><tr><td align="left">40</td><td align="left">SemiLight</td><td align="left">SemiLight, Book, ...</td></tr><tr><td align="left">50</td><td align="left">Medium</td><td align="left">Medium, Normal, Regular,...</td></tr><tr><td align="left">60</td><td align="left">SemiBold</td><td align="left">SemiBold, DemiBold, ...</td></tr><tr><td align="left">70</td><td align="left">Bold</td><td class="auto-generated"> </td></tr><tr><td align="left">80</td><td align="left">ExtraBold</td><td align="left">ExtraBold, Heavy, ...</td></tr><tr><td align="left">90</td><td align="left">UltraBold</td><td align="left">
1587 UltraBold, Black, ..., the highest ratio of stem width to height
1588 </td></tr></tbody></table></div><p>
1590 RELATIVE_WEIGHT can be defaulted if not provided as a font property,
1591 according to the following algorithm:
1592 </p><pre class="literallayout">
1593 if (RELATIVE_WEIGHT undefined) then
1594 RELATIVE_WEIGHT = 50
1595 </pre><p>
1597 For polymorphic fonts, RELATIVE_WEIGHT is not necessarily a
1598 linear function of the font's weight axis.
1599 </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="WEIGHT"></a>WEIGHT</h3></div></div></div><p>
1601 Calculated WEIGHT is an unsigned integer value (of type CARD32)
1602 that gives the calculated weight of the font,
1603 computed as the ratio of capital stem width to CAP_HEIGHT,
1604 in the range 0 to 1000, where 0 is the lightest weight.
1605 </p><p>
1607 WEIGHT can be calculated if not supplied as a font property,
1608 according to the following algorithm:
1609 </p><pre class="literallayout">
1610 CapStemWidth = average width of the stems of capitals
1611 if (WEIGHT undefined) then
1612 WEIGHT = ROUND ((CapStemWidth * 1000) / CAP_HEIGHT)
1613 </pre><p>
1615 A calculated value for weight is necessary when matching fonts from
1616 different families because both the RELATIVE_WEIGHT and the WEIGHT_NAME are
1617 assigned by the typeface supplier, according to its tradition and practice,
1618 and therefore, are somewhat subjective.
1619 Calculated WEIGHT provides a font-independent way of identifying
1620 the weight across all fonts and all font vendors.
1621 </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="RESOLUTION"></a>RESOLUTION</h3></div></div></div><p>
1623 RESOLUTION is an integer value (of type INT32)
1624 that gives the resolution for which this font was created,
1625 measured in 1/100 pixels per point.
1626 </p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>
1628 As independent horizontal and vertical design resolution components
1629 are required to accommodate displays with nonsquare aspect ratios,
1630 the use of this font property has been deprecated,
1631 and independent RESOLUTION_X and RESOLUTION_Y font name fields/properties
1632 have been defined (see sections 3.1.2.9 and 3.1.2.10).
1633 X clients are encouraged to discontinue use of the RESOLUTION property
1634 and are encouraged to use the appropriate X,Y resolution properties,
1635 as required.
1637 </p></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="Font_support"></a>FONT</h3></div></div></div><p>
1639 FONT is a string (of type ATOM) that gives the full XLFD name of the
1640 font-that is, the value can be used to open another
1641 instance of the same font.
1642 </p><p>
1644 If not provided, the FONT property cannot be calculated.
1645 </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="FACE_NAME"></a>FACE_NAME</h3></div></div></div><p>
1647 FACE_NAME is a human-understandable string (of type ATOM)
1648 that gives the full device-independent typeface name,
1649 including the owner, weight, slant, set, and so on
1650 but not the resolution, size, and so on.
1651 This property may be used as feedback during font selection.
1652 </p><p>
1654 FACE_NAME cannot be calculated or approximated if not provided as a font
1655 property.
1656 </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="FULL_NAME"></a>FULL_NAME</h3></div></div></div><p>
1658 FULL_NAME is the same as FACE_NAME.
1659 Its use is deprecated, but it is found on some old fonts.
1660 </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="COPYRIGHT"></a>COPYRIGHT</h3></div></div></div><p>
1662 COPYRIGHT is a human-understandable string (of type ATOM)
1663 that gives the copyright information of the legal owner
1664 of the digital font data.
1665 </p><p>
1667 This information is a required component of a font
1668 but is independent of the particular format used to represent it
1669 (that is, it cannot be captured as a comment that could later
1670 be thrown away for efficiency reasons).
1671 </p><p>
1673 COPYRIGHT cannot be calculated or approximated if not provided as a font
1674 property.
1675 </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="NOTICE"></a>NOTICE</h3></div></div></div><p>
1677 NOTICE is a human-understandable string (of type ATOM)
1678 that gives the copyright information of the legal owner of the font design
1679 or, if not applicable, the trademark information for the typeface FAMILY_NAME.
1680 </p><p>
1682 Typeface design and trademark protection laws vary from country to country,
1683 the USA having no design copyright protection currently
1684 while various countries in Europe offer both design and typeface family name
1685 trademark protection.
1686 As with COPYRIGHT,
1687 this information is a required component of a font
1688 but is independent of the particular format used to represent it.
1689 </p><p>
1691 NOTICE cannot be calculated or approximated if not provided as
1692 a font property.
1693 </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="DESTINATION"></a>DESTINATION</h3></div></div></div><p>
1695 DESTINATION is an unsigned integer code (of type CARD32)
1696 that gives the font design destination,
1697 that is, whether it was designed as a screen proofing font to match
1698 printer font glyph widths (WYSIWYG), as an optimal video font (possibly with
1699 corresponding printer font) for extended screen viewing (video text), and so on.
1700 </p><p>
1702 The font design considerations are very different,
1703 and at current display resolutions,
1704 the readability and legibility of these two kinds of screen fonts
1705 are very different.
1706 DESTINATION allows publishing clients that use X to model the printed page
1707 and video text clients, such as on-line documentation browsers,
1708 to query for X screen fonts that suit their particular requirements.
1709 </p><p>
1711 The encoding is as follows:
1712 </p><div class="informaltable"><table border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /></colgroup><thead><tr><th align="left">Code</th><th align="left">English Translation</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left">0</td><td align="left">WYSIWYG</td><td align="left">
1713 The font is optimized to match the typographic design and metrics of an
1714 equivalent printer font.
1715 </td></tr><tr><td align="left">1</td><td align="left">Video text</td><td align="left">
1716 The font is optimized for screen legibility and readability.
1717 </td></tr></tbody></table></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="FONT_TYPE"></a>FONT_TYPE</h3></div></div></div><p>
1719 FONT_TYPE is a human-understandable string (of type ATOM) that
1720 describes the format of
1721 the font data as they are read from permanent storage by the current font source.
1722 It is a static attribute of the source data. It can be used
1723 by clients to select a type of bitmap or outline font
1724 without regard to the rasterizer used to render the font.
1725 </p><p>
1727 Predefined values are as follows:
1728 </p><div class="informaltable"><table border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /></colgroup><thead><tr><th align="left">Value</th><th align="left">When applicable</th></tr></thead><tbody><tr><td align="left">"Bitmap"</td><td align="left">
1729 Hand-tuned bitmap fonts. Some attempt has been made to optimize the visual
1730 appearance of the font for the requested size and resolution.
1731 </td></tr><tr><td align="left">"Prebuilt"</td><td align="left">
1732 All bitmap format fonts that cannot be described as "Bitmap", that is,
1733 handtuned.
1734 For example, a bitmap format font that was generated mechanically using
1735 a scalable font rasterizer would be considered "Prebuilt", not "Bitmap".
1736 </td></tr><tr><td align="left">"Type 1"</td><td align="left">Any Type 1 font.</td></tr><tr><td align="left">"TrueType"</td><td align="left">Any TrueType font.</td></tr><tr><td align="left">"Speedo"</td><td align="left">Any Speedo font.</td></tr><tr><td align="left">"F3"</td><td align="left">Any F3 font.</td></tr></tbody></table></div><p>
1737 Other values may be registered with the X Consortium.
1738 </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="FONT_VERSION"></a>FONT_VERSION</h3></div></div></div><p>
1740 FONT_VERSION is a human-understandable string (of type ATOM)
1741 that describes the formal or informal version of the font.
1742 <code class="function">None</code> is a valid value.
1743 </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="RASTERIZER_NAME"></a>RASTERIZER_NAME</h3></div></div></div><p>
1745 RASTERIZER_NAME is a human-understandable string (of type ATOM)
1746 that is the specific name of the
1747 rasterizer that has performed some rasterization operation
1748 (such as scaling from outlines) on this font.
1749 </p><p>
1751 To define a RASTERIZER_NAME, the following format is
1752 recommended:
1753 </p><div class="informaltable"><table border="0"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /></colgroup><tbody><tr><td align="left">RasterizerName ::=</td><td align="left">OrganizationId Space Rasterizer</td></tr><tr><td align="left">OrganizationId ::=</td><td align="left">
1754 STRING8—the X Registry ORGANIZATION name of the rasterizer
1755 implementor or maintainer.
1756 </td></tr><tr><td align="left">Rasterizer ::=</td><td align="left">
1757 the case-sensitive, human-understandable product name of the rasterizer.
1758 Words within this name should be separated by a single SPACE.
1759 </td></tr><tr><td align="left">Space ::=</td><td align="left">OCTET−" " (SPACE)</td></tr></tbody></table></div><p>
1761 Examples:
1762 </p><pre class="literallayout">
1763 X Consortium Bit Scaler
1764 X Consortium Type 1 Rasterizer
1765 X Consortium Speedo Rasterizer
1766 Adobe Type Manager
1767 Sun TypeScaler
1768 </pre><p>
1770 If RASTERIZER_NAME is not defined, or is <code class="function">None</code>, no
1771 rasterization operation has been applied to the FONT_TYPE.
1772 </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="RASTERIZER_VERSION"></a>RASTERIZER_VERSION</h3></div></div></div><p>
1774 RASTERIZER_VERSION is a human-understandable string (of type
1775 ATOM) that represents the formal or informal version of a
1776 font rasterizer.
1777 The RASTERIZER_VERSION should match the corresponding
1778 product version number known to users, when applicable.
1779 </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="RAW_ASCENT"></a>RAW_ASCENT</h3></div></div></div><p>
1781 For a font with a transformation matrix, RAW_ASCENT is the font ascent
1782 in 1000 pixel metrics
1783 (see <a class="xref" href="#Metrics_and_Font_Properties" title="Metrics and Font Properties">Metrics and Font Properties</a>).
1784 </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="RAW_DESCENT"></a>RAW_DESCENT</h3></div></div></div><p>
1786 For a font with a transformation matrix, RAW_DESCENT is the font
1787 descent in 1000 pixel metrics
1788 (see <a class="xref" href="#Metrics_and_Font_Properties" title="Metrics and Font Properties">Metrics and Font Properties</a>).
1789 </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="RAW_"></a>RAW_*</h3></div></div></div><p>
1791 For a font with a transformation matrix,
1792 all font properties that represent horizontal or vertical sizes or
1793 displacements will be accompanied by a new property, named as the
1794 original except prefixed with "RAW_", that is computed as
1795 described in <a class="xref" href="#Metrics_and_Font_Properties" title="Metrics and Font Properties">Metrics and Font Properties</a>.
1796 </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="AXIS_NAMES"></a>AXIS_NAMES</h3></div></div></div><p>
1798 AXIS_NAMES is a list of all the
1799 names of the axes for a polymorphic font, separated by a null (0) byte.
1800 These names are suitable for presentation in a user interface
1801 (see section 6).
1802 </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="AXIS_LIMITS"></a>AXIS_LIMITS</h3></div></div></div><p>
1804 AXIS_LIMITS is a list of integers, two for each axis,
1805 giving the minimum and maximum allowable values for that axis of a
1806 polymorphic font
1807 (see <a class="xref" href="#Polymorphic_Fonts" title="Chapter 6. Polymorphic Fonts"><em>Polymorphic Fonts</em></a>).
1808 </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="AXIS_TYPES"></a>AXIS_TYPES</h3></div></div></div><p>
1810 AXIS_TYPES is like AXIS_NAMES,
1811 but can be registered as having specific semantics
1812 (see section 6).
1813 </p></div></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="Built_in_Font_Property_Atoms"></a>Built-in Font Property Atoms</h2></div></div></div><p>
1815 The following font property atom definitions were predefined in the initial
1816 version of the core protocol:
1817 </p><div class="informaltable"><table border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /></colgroup><thead><tr><th align="left">Font Property/Atom Name</th><th align="left">Property Type</th></tr></thead><tbody><tr><td align="left">MIN_SPACE</td><td align="left">INT32</td></tr><tr><td align="left">NORM_SPACE</td><td align="left">INT32</td></tr><tr><td align="left">MAX_SPACE</td><td align="left">INT32</td></tr><tr><td align="left">END_SPACE</td><td align="left">INT32</td></tr><tr><td align="left">SUPERSCRIPT_X</td><td align="left">INT32</td></tr><tr><td align="left">SUPERSCRIPT_Y</td><td align="left">INT32</td></tr><tr><td align="left">SUBSCRIPT_X</td><td align="left">INT32</td></tr><tr><td align="left">SUBSCRIPT_Y</td><td align="left">INT32</td></tr><tr><td align="left">UNDERLINE_POSITION</td><td align="left">INT32</td></tr><tr><td align="left">UNDERLINE_THICKNESS</td><td align="left">INT32</td></tr><tr><td align="left">STRIKEOUT_ASCENT</td><td align="left">INT32</td></tr><tr><td align="left">STRIKEOUT_DESCENT</td><td align="left">INT32</td></tr><tr><td align="left">FONT_ASCENT</td><td align="left">INT32</td></tr><tr><td align="left">FONT_DESCENT</td><td align="left">INT32</td></tr><tr><td align="left">ITALIC_ANGLE</td><td align="left">INT32</td></tr><tr><td align="left">X_HEIGHT</td><td align="left">INT32</td></tr><tr><td align="left">QUAD_WIDTH</td><td align="left">INT32 −<sup>deprecated</sup></td></tr><tr><td align="left">WEIGHT</td><td align="left">CARD32</td></tr><tr><td align="left">POINT_SIZE</td><td align="left">INT32</td></tr><tr><td align="left">RESOLUTION</td><td align="left">CARD32 −<sup>deprecated</sup></td></tr><tr><td align="left">COPYRIGHT</td><td align="left">ATOM</td></tr><tr><td align="left">FULL_NAME</td><td align="left">ATOM −<sup>deprecated</sup></td></tr><tr><td align="left">FAMILY_NAME</td><td align="left">ATOM</td></tr><tr><td align="left">DEFAULT_CHAR</td><td align="left">CARD32</td></tr></tbody></table></div></div></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="Matrix_Transformations"></a>Chapter 4. Matrix Transformations</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="sect1"><a href="#Metrics_and_Font_Properties">Metrics and Font Properties</a></span></dt></dl></div><p>
1819 An XLFD name presented to the server can have the POINT_SIZE or PIXEL_SIZE
1820 field begin with the character "[". If the first character of the field
1821 is "[", the character must be followed with ASCII representations of
1822 four floating point numbers and a trailing "]", with white space
1823 separating the numbers and optional white space separating the numbers
1824 from the "[" and "]" characters. Numbers use standard floating point
1825 syntax but use the character "~" to represent a minus sign in the mantissa
1826 or exponent.
1827 </p><p>
1829 The BNF for a matrix transformation string is as follows:
1830 </p><div class="informaltable"><table border="0"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /></colgroup><tbody><tr><td align="left">MatrixString ::=</td><td align="left">
1831 LeftBracket OptionalSpace Float Space Float Space
1832 Float Space Float OptionalSpace RightBracket
1833 </td></tr><tr><td align="left">OptionalSpace ::=</td><td align="left">"" | Space</td></tr><tr><td align="left">Space ::=</td><td align="left">SpaceChar | SpaceChar Space</td></tr><tr><td align="left">Float ::=</td><td align="left">Mantissa | Mantissa Exponent</td></tr><tr><td align="left">Mantissa ::=</td><td align="left">Sign Number | Number</td></tr><tr><td align="left">Sign ::=</td><td align="left">Plus | Tilde</td></tr><tr><td align="left">Number ::=</td><td align="left">Integer | Integer Dot Integer | Dot Integer</td></tr><tr><td align="left">Integer ::=</td><td align="left">Digit | Digit Integer</td></tr><tr><td align="left">Digit ::=</td><td align="left">
1834 "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"
1835 </td></tr><tr><td align="left">Exponent ::=</td><td align="left">"e" SignedInteger | "E" SignedInteger</td></tr><tr><td align="left">SignedInteger ::=</td><td align="left">Sign Integer | Integer</td></tr><tr><td align="left">LeftBracket ::=</td><td align="left">OCTET − "[" (LEFT SQUARE BRACKET)</td></tr><tr><td align="left">RightBracket ::=</td><td align="left">OCTET − "]" (RIGHT SQUARE BRACKET)</td></tr><tr><td align="left">SpaceChar ::=</td><td align="left">OCTET − " " (SPACE)</td></tr><tr><td align="left">Tilde ::=</td><td align="left">OCTET − "˜" (TILDE)</td></tr><tr><td align="left">Plus ::=</td><td align="left">OCTET − "+" (PLUS)</td></tr><tr><td align="left">Dot ::=</td><td align="left">OCTET − "." (FULL STOP)</td></tr></tbody></table></div><p>
1837 The string "[a b c d]" represents a graphical transformation of the glyphs
1838 in the font by the matrix
1839 </p><div class="informaltable"><table border="0"><colgroup><col align="left" class="c1" /></colgroup><tbody><tr><td align="left">[ a b 0 ]</td></tr><tr><td align="left">[ c d 0 ]</td></tr><tr><td align="left">[ 0 0 1 ]</td></tr></tbody></table></div><p>
1841 All transformations occur around the origin of the glyph. The
1842 relationship between the current scalar values and the matrix
1843 transformation values is that the scalar value "N" in the POINT_SIZE field
1844 produces the same glyphs as the matrix "[N/10 0 0 N/10]" in that field,
1845 and the scalar value "N" in the PIXEL_SIZE field produces the same glyphs
1846 as the matrix "[N*RESOLUTION_X/RESOLUTION_Y 0 0 N]" in that field.
1847 </p><p>
1849 If matrices are specified for both the POINT_SIZE and PIXEL_SIZE, they
1850 must bear the following relationship to each other within an
1851 implementation-specific tolerance:
1852 </p><div class="blockquote"><blockquote class="blockquote"><p>
1853 PIXEL_SIZE_MATRIX = [Sx 0 0 Sy] * POINT_SIZE_MATRIX
1854 </p></blockquote></div><p>
1855 where
1856 </p><div class="blockquote"><blockquote class="blockquote"><p>
1857 Sx = RESOLUTION_X / 72.27
1858 </p><p>
1859 Sy = RESOLUTION_Y / 72.27
1860 </p></blockquote></div><p>
1862 If either the POINT_SIZE or PIXEL_SIZE field is unspecified (either "0" or
1863 wildcarded), the preceding formulas can be used to compute one from the
1864 other.
1865 </p><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="Metrics_and_Font_Properties"></a>Metrics and Font Properties</h2></div></div></div><p>
1867 In this section, the phrase "1000 pixel metrics" means the
1868 metrics that would be obtained if the rasterizer took the base untransformed
1869 design used to generate the transformed font and scaled it linearly to a
1870 height of 1000 pixels, with no rotation component. Note that there may be no
1871 way for the application to actually request this font since the rasterizer
1872 may use different outlines or rasterization techniques at that size from the
1873 ones used to generate the transformed font.
1874 </p><p>
1876 Notes on properties and metrics:
1877 </p><p>
1879 The per-char ink metrics (lbearing, rbearing, ascent, and descent)
1880 represent the ink extent of the transformed glyph around its origin.
1881 </p><p>
1883 The per-char width is the x component of the transformed character width.
1884 </p><p>
1886 The font ascent and descent are the y component of the transformed font
1887 ascent or descent.
1888 </p><p>
1890 The FONT property returns a name reflecting the matrix being
1891 used-that is, the name returned can be used to open another
1892 instance of the same font. The returned name is not necessarily an
1893 exact copy of the requested name. If, for example, the user
1894 requests
1895 </p><pre class="literallayout">
1896 -misc-fixed-medium-r-normal--0-[2e1 0 0.0 +10.0]-72-72-c-0-iso8859-1
1897 </pre><p>
1898 the resulting FONT property might be
1899 </p><pre class="literallayout">
1900 -misc-fixed-medium-r-normal--[19.9 0 0 10]-[20 0 0 10]-72-72-c-0-iso8859-1
1901 </pre><p>
1902 The FONT property will always include matrices in both the PIXEL_SIZE
1903 and the POINT_SIZE fields.
1904 </p><p>
1906 To allow accurate client positioning of transformed characters, the
1907 attributes field of the XCharInfo contains the width of the character in
1908 1000 pixel metrics. This attributes field should be interpreted as a signed
1909 integer.
1910 </p><p>
1912 There will always be 2 new font properties defined, RAW_ASCENT and
1913 RAW_DESCENT, that hold the ascent and descent in 1000 pixel metrics.
1914 </p><p>
1916 All font properties that represent horizontal widths or displacements
1917 have as their value the x component of the transformed width or
1918 displacement. All font properties that represent vertical heights or
1919 displacements have as their value the y component of the transformed
1920 height or displacement. Each such property will be accompanied by a new
1921 property, named as the original except prefixed with "RAW_", that gives
1922 the value of the width, height, or displacement in 1000 pixel metrics.
1923 </p></div></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="Scalable_Fonts"></a>Chapter 5. Scalable Fonts</h2></div></div></div><p>
1925 The XLFD is designed to support scalable fonts. A scalable font is a
1926 font source from which instances of arbitrary size can be derived.
1927 A scalable font source might be one or more outlines
1928 together with zero or more hand-tuned bitmap fonts at specific sizes and
1929 resolutions, or it might be a programmatic description together with
1930 zero or more bitmap fonts, or some other format
1931 (perhaps even just a single bitmap font).
1932 </p><p>
1934 The following definitions are useful for discussing scalable fonts:
1935 </p><p>
1937 <code class="function">Well-formed XLFD pattern</code>
1938 </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
1939 <span class="bold"><strong>Well-formed XLFD pattern</strong></span>
1940 </p><p>
1941 A pattern string containing 14 hyphens, one of which is
1942 the first character of the pattern. Wildcard characters are permitted
1943 in the fields of a well-formed XLFD pattern.
1944 </p></li></ul></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
1945 <code class="function">Scalable font name</code>
1946 </p><p>
1947 A well-formed XLFD pattern containing no wildcards and containing the
1948 digit "0" in the PIXEL_SIZE, POINT_SIZE, and AVERAGE_WIDTH fields.
1949 </p></li></ul></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
1950 <code class="function">Scalable fields</code>
1951 </p><p>
1952 The XLFD fields PIXEL_SIZE, POINT_SIZE, RESOLUTION_X,
1953 RESOLUTION_Y, and AVERAGE_WIDTH.
1954 </p></li></ul></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
1955 <code class="function">Derived instance</code>
1956 </p><p>
1957 The result of replacing the scalable fields of a font name
1958 with values to yield a font name that could actually be
1959 produced from the font source. A scaling engine is
1960 permitted, but not required, to interpret the scalable
1961 fields in font names to support anamorphic scaling.
1962 </p></li></ul></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
1963 <code class="function">Global list</code>
1964 </p><p>
1965 The list of names that would be returned by an X server for a
1966 <code class="function">ListFonts</code>
1967 protocol request on the pattern "*" if there were no protocol
1968 restrictions on the total number of names returned.
1969 </p></li></ul></div><p>
1971 The global list consists of font names derived from font sources.
1972 If a single font source can support multiple character sets (specified
1973 in the CHARSET_REGISTRY and CHARSET_ENCODING fields), each such character
1974 set should be used to form a separate font name in the list.
1975 For a nonscalable font source, the simple font name
1976 for each character set is included in the global list.
1977 For a scalable font source, a scalable font name for each character set
1978 is included in the list. In addition to the scalable font name,
1979 specific derived instance names may also be included in the list.
1980 The relative order of derived instances with respect to the scalable
1981 font name is not constrained. Finally, font name aliases may also be included
1982 in the list. The relative order of aliases
1983 with respect to the real font name is not constrained.
1984 </p><p>
1986 The values of the RESOLUTION_X and RESOLUTION_Y fields of a scalable font name
1987 are implementation dependent,
1988 but to maximize backward compatibility, they
1989 should be reasonable nonzero values, for example, a resolution close to that
1990 provided by the screen (in a single-screen server).
1991 Because some existing
1992 applications rely on seeing a collection of point and pixel sizes,
1993 server vendors are strongly encouraged in the near term to
1994 provide a mechanism for including, for each scalable font name,
1995 a set of specific derived instance names. For font sources that contain
1996 a collection of hand-tuned bitmap fonts, including names of these instances
1997 in the global list is recommended and sufficient.
1998 </p><p>
2000 The X protocol request
2001 <code class="function">OpenFont</code>
2002 on a scalable font name returns a font corresponding to an
2003 implementation-dependent derived instance of that font name.
2004 </p><p>
2006 The X protocol request
2007 <code class="function">ListFonts</code>
2008 on a well-formed XLFD pattern returns the following.
2009 Starting with the global list, if the actual pattern argument
2010 has values containing no wildcards in scalable fields,
2011 then substitute each such field into the corresponding
2012 field in each scalable font name in the list. For each resulting font name,
2013 if the remaining scalable fields cannot be replaced with values to produce a
2014 derived instance, remove the font name from the list. Now take the modified
2015 list, and perform a simple pattern match against the pattern argument.
2016 <code class="function">ListFonts</code>
2017 returns the resulting list.
2018 </p><p>
2019 For example, given the global list:
2020 </p><pre class="literallayout">
2021 -Linotype-Times-Bold-I-Normal--0-0-100-100-P-0-ISO8859-1
2022 -Linotype-Times-Bold-R-Normal--0-0-100-100-P-0-ISO8859-1
2023 -Linotype-Times-Medium-I-Normal--0-0-100-100-P-0-ISO8859-1
2024 -Linotype-Times-Medium-R-Normal--0-0-100-100-P-0-ISO8859-1
2025 </pre><p>
2026 a <code class="function">ListFonts</code> request with the pattern:
2027 </p><pre class="literallayout">
2028 -*-Times-*-R-Normal--*-120-100-100-P-*-ISO8859-1
2029 </pre><p>
2030 would return:
2031 </p><pre class="literallayout">
2032 -Linotype-Times-Bold-R-Normal--0-120-100-100-P-0-ISO8859-1
2033 -Linotype-Times-Medium-R-Normal--0-120-100-100-P-0-ISO8859-1
2034 </pre><p>
2035 <code class="function">ListFonts</code>
2036 on a pattern containing wildcards that is not a well-formed XLFD
2037 pattern is only required to return the list obtained by performing
2038 a simple pattern match against the global list.
2039 X servers are permitted, but not required,
2040 to use a more sophisticated matching algorithm.
2041 </p></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="Polymorphic_Fonts"></a>Chapter 6. Polymorphic Fonts</h2></div></div></div><p>
2043 Fonts that can be varied in ways other than size or resolution are called
2044 <span class="emphasis"><em>polymorphic fonts.</em></span> Multiple Master Type 1 font programs are one type of
2045 a polymorphic font. Current examples of axes along which the fonts can be
2046 varied are width, weight, and optical size; others might include formality
2047 or x-height.
2048 </p><p>
2049 To support polymorphic fonts, special values indicating variability are
2050 defined for the following XLFD fields:
2051 </p><div class="blockquote"><blockquote class="blockquote"><p>
2053 WEIGHT_NAME
2054 </p><p>
2055 SLANT
2056 </p><p>
2057 SETWIDTH_NAME
2058 </p><p>
2059 ADD_STYLE_NAME
2060 </p></blockquote></div><p>
2062 The string "0" is the special polymorphic value. In the
2063 WEIGHT_NAME, SLANT, or SETWIDTH_NAME field, "0" must be the
2064 entire field.
2065 There may be multiple polymorphic values
2066 in the ADD_STYLE_NAME field.
2067 They are surrounded by "[" and "]" and separated by a Space,
2068 as "[0\00]". The polymorphic values may coexist with
2069 other data in the field.
2070 It is recommended that the polymorphic values
2071 be at the end of the ADD_STYLE_NAME field.
2072 </p><p>
2074 The font-matching algorithms for a font with polymorphic fields are
2075 identical to the matching algorithms for a font with scalable fields.
2076 </p><p>
2078 There are three new font properties to describe the axes of variation,
2079 AXIS_NAMES, AXIS_LIMITS, and AXIS_TYPES. AXIS_NAMES is a list of all the
2080 names of the axes for the font, separated by a null (0) byte.
2081 These names are suitable for presentation in
2082 a user interface. AXIS_LIMITS is a list of integers, two for each axis,
2083 giving the minimum and maximum allowable values for that axis.
2084 AXIS_TYPES is like AXIS_NAMES,
2085 but can be registered as having specific semantics.
2086 </p><p>
2088 The axes are listed in the properties in the same order as they
2089 appear in the font name. They are matched with font name fields by
2090 looking for the special polymorphic values in the font name.
2091 </p><p>
2093 Examples:
2094 </p><p>
2096 The Adobe Myriad MM font program has width and weight axes. Weight can
2097 vary from 215 to 830, and width from 300 to 700.
2098 </p><pre class="literallayout">
2099 Name:
2100 -Adobe-Myriad MM-0-R-0--0-0-0-0-P-0-ISO8859-1
2101 AXIS_NAMES:
2102 Weight, Width
2103 AXIS_LIMITS:
2104 215, 830, 300, 700
2105 AXIS_TYPES:
2106 Adobe-Weight, Adobe-Width
2107 Sample derived instance:
2108 -Adobe-Myriad MM-412-R-575--*-120-100-100-P-*-ISO8859-1
2109 </pre><p>
2110 The Adobe Minion MM Italic font program has width, weight, and optical
2111 size axes.
2112 </p><pre class="literallayout">
2113 Name:
2114 -Adobe-Minion MM-0-I-0-[0]-0-0-0-0-P-0-ISO8859-1
2115 AXIS_NAMES:
2116 Weight, Width, Optical size
2117 AXIS_LIMITS:
2118 345, 620, 450, 600, 6, 72
2119 AXIS_TYPES:
2120 Adobe-Weight, Adobe-Width, Adobe-OpticalSize
2121 Sample derived instance:
2122 -Adobe-Minion MM-550-I-480-[18]-*-180-100-100-P-*-ISO8859-1
2123 </pre><p>
2124 The Adobe Minion MM Swash Italic font program has the same axes and
2125 values. This shows how "[0]" in the ADD_STYLE_NAME field can
2126 coexist with other words.
2127 </p><pre class="literallayout">
2128 Name:
2129 -Adobe-Minion MM-0-I-0-Swash[0]-0-0-0-0-P-0-ISO8859-1
2130 AXIS_NAMES:
2131 Weight, Width, Optical size
2132 AXIS_LIMITS:
2133 345, 620, 450, 600, 6, 72
2134 AXIS_TYPES:
2135 Adobe-Weight, Adobe-Width, Adobe-OpticalSize
2136 Sample derived instance:
2137 -Adobe-Minion MM-550-I-480-Swash[18]-*-180-100-100-P-*-ISO8859-1
2138 </pre><p>
2139 The XYZ Abc font, a hypothetical font, has optical size and x-height axes.
2140 This shows how there can be more than one polymorphic value in the
2141 ADD_STYLE_NAME field.
2142 </p><pre class="literallayout">
2143 Name:
2144 -XYZ-Abc-Medium-R-Normal-[0 0]-0-0-0-0-P-0-ISO8859-1
2145 AXIS_NAMES:
2146 Optical size, X-height
2147 AXIS_LIMITS:
2148 6, 72, 400, 600
2149 AXIS_TYPES:
2150 XYZ-OpticalSize, XYZ-Xheight
2151 Sample derived instance:
2152 -XYZ-Abc-Medium-R-Normal-[14 510]-*-140-100-100-P-*-ISO8859-1
2153 </pre><p>
2154 If an axis allows negative values, a client requests a negative value by
2155 using "~" (TILDE) as a minus sign.
2156 </p><p>
2157 Axis types can be registered with the X Consortium, along with their
2158 semantics.
2159 </p><p>
2160 If a font name that contains the polymorphic value or a wildcard in a
2161 polymorphic field is presented to a font source, the font source is free
2162 to substitute any value that is convenient. However, font sources should
2163 try to use a value that would be considered
2164 <span class="emphasis"><em>normal</em></span> or
2165 <span class="emphasis"><em>medium</em></span> for the
2166 particular font. For example, if an optical size variable is unresolved,
2167 the font source should provide a value appropriate to the size of the
2168 font.
2169 </p><p>
2170 The result of specifying an out-of-range value for a polymorphic field is
2171 undefined. The font source may treat this as a
2172 <code class="function">BadName</code> error, treat the
2173 value as if it were the closest legal value, or extrapolate to try to
2174 accommodate the value.
2175 </p></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="Affected_Elements_of_Xlib_and_the_X_Protocol"></a>Chapter 7. Affected Elements of Xlib and the X Protocol</h2></div></div></div><p>
2177 The following X protocol requests must support the XLFD conventions:
2178 </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
2179 <code class="function">OpenFont</code>
2180 - for the name argument
2181 </p></li><li class="listitem"><p>
2182 <code class="function">ListFonts</code>
2183 - for the pattern argument
2184 </p></li><li class="listitem"><p>
2185 <code class="function">ListFontsWithInfo</code>
2186 - for the pattern argument
2187 </p></li></ul></div><p>
2189 In addition,
2190 the following Xlib functions must support the XLFD conventions:
2191 </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
2192 <a href="../../libX11/libX11/libX11.html#XLoadFont" class="olink"><code class="function">XLoadFont</code></a>
2193 - for the name argument
2194 </p></li><li class="listitem"><p>
2195 <a href="../../libX11/libX11/libX11.html#XListFontsWithInfo" class="olink"><code class="function">XListFontsWithInfo</code></a>
2196 - for the pattern argument
2197 </p></li><li class="listitem"><p>
2198 <a href="../../libX11/libX11/libX11.html#XLoadQueryFont" class="olink"><code class="function">XLoadQueryFont</code></a>
2199 - for the name argument
2200 </p></li><li class="listitem"><p>
2201 <a href="../../libX11/libX11/libX11.html#XListFonts" class="olink"><code class="function">XListFonts</code></a>
2202 - for the pattern argument
2203 </p></li></ul></div></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="BDF_Conformance"></a>Chapter 8. BDF Conformance</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="sect1"><a href="#XLFD_Conformance_Requirements">XLFD Conformance Requirements</a></span></dt><dt><span class="sect1"><a href="#FONT_ASCENT_FONT_DESCENT_and_DEFAULT_CHAR">FONT_ASCENT, FONT_DESCENT, and DEFAULT_CHAR</a></span></dt><dd><dl><dt><span class="sect2"><a href="#FONT_ASCENT">FONT_ASCENT</a></span></dt><dt><span class="sect2"><a href="#FONT_DESCENT">FONT_DESCENT</a></span></dt><dt><span class="sect2"><a href="#DEFAULT_CHAR">DEFAULT_CHAR</a></span></dt></dl></dd></dl></div><p>
2205 The bitmap font distribution and interchange format adopted by the
2206 X Consortium (BDF V2.1) provides a general mechanism for identifying the
2207 font name of an X font and a variable list of font properties,
2208 but it does not mandate the syntax or semantics of the font name
2209 or the semantics of the font properties that might be provided in a BDF font.
2210 This section identifies the requirements for BDF fonts that conform to XLFD.
2211 </p><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="XLFD_Conformance_Requirements"></a>XLFD Conformance Requirements</h2></div></div></div><p>
2213 A BDF font conforms to the XLFD specification if and only if the
2214 following conditions are satisfied:
2215 </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
2216 The value for the BDF item <code class="function">FONT</code> conforms to the syntax
2217 and semantic definition of a XLFD
2218 <code class="function">FontName</code>
2219 string.
2220 </p></li><li class="listitem"><p>
2222 <code class="function">FontName</code>
2223 begins with the X
2224 <code class="function">FontNameRegistry</code>
2225 prefix: "-".
2226 </p></li><li class="listitem"><p>
2227 All XLFD
2228 <code class="function">FontName</code>
2229 fields are defined.
2230 </p></li><li class="listitem"><p>
2231 Any FontProperties provided conform in name and semantics to the XLFD
2232 <code class="function">FontProperty</code>
2233 definitions.
2234 </p></li></ul></div><p>
2236 A simple method of testing for conformance would entail verifying that the
2237 <code class="function">FontNameRegistry</code>
2238 prefix is the string "-",
2239 that the number of field delimiters in the string and coded field values
2240 are valid,
2241 and that each font property name either matches a standard XLFD property name
2242 or follows the definition of a private property.
2243 </p></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="FONT_ASCENT_FONT_DESCENT_and_DEFAULT_CHAR"></a>FONT_ASCENT, FONT_DESCENT, and DEFAULT_CHAR</h2></div></div></div><p>
2245 FONT_ASCENT, FONT_DESCENT, and DEFAULT_CHAR are provided in the BDF
2246 specification as properties that are moved to the
2247 <code class="function">XFontStruct</code>
2248 by the BDF font compiler in generating the X server-specific
2249 binary font encoding.
2250 If present,
2251 these properties shall comply with the following semantic definitions.
2252 </p><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="FONT_ASCENT"></a>FONT_ASCENT</h3></div></div></div><p>
2254 FONT_ASCENT is an integer value (of type INT32)
2255 that gives the recommended typographic ascent above the baseline
2256 for determining interline spacing.
2257 Specific glyphs of the font may extend beyond this.
2258 If the current position point for line <span class="emphasis"><em>n</em></span> is at [X,Y],
2259 then the origin of the next line <span class="emphasis"><em>m = n + 1</em></span>
2260 (allowing for a possible font change) is
2261 [X, Y + FONT_DESCENTn + FONT_ASCENTm].
2262 </p><p>
2264 FONT_ASCENT can be approximated if not provided as a font property,
2265 according to the following algorithm:
2266 </p><pre class="literallayout">
2267 if (FONT_ASCENT undefined) then
2268 FONT_ASCENT = maximum ascent
2269 </pre><p>
2270 where maximum ascent is the maximum ascent (above the baseline)
2271 in pixels of any glyph in the font.
2272 </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="FONT_DESCENT"></a>FONT_DESCENT</h3></div></div></div><p>
2274 FONT_DESCENT is an integer value (of type INT32)
2275 that gives the recommended typographic descent below the baseline
2276 for determining interline spacing.
2277 Specific glyphs of the font may extend beyond this.
2278 If the current position point for line
2279 <span class="emphasis"><em>n</em></span> is at [X,Y],
2280 then the origin of the next line <span class="emphasis"><em>m = n+1</em></span>
2281 (allowing for a possible font change) is
2282 [X, Y + FONT_DESCENTn + FONT_ASCENTm].
2283 </p><p>
2284 The logical extent of the font is inclusive between the Y-coordinate values:
2285 Y - FONT_ASCENT and Y + FONT_DESCENT + 1.
2286 </p><p>
2287 FONT_DESCENT can be approximated if not provided as a font property,
2288 according to the following algorithm:
2289 </p><pre class="literallayout">
2290 if (FONT_DESCENT undefined) then
2291 FONT_DESCENT = maximum descent
2292 </pre><p>
2293 where maximum descent is the maximum descent (below the baseline)
2294 in pixels of any glyph in the font.
2295 </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="DEFAULT_CHAR"></a>DEFAULT_CHAR</h3></div></div></div><p>
2297 The DEFAULT_CHAR is an unsigned integer value (of type CARD32)
2298 that specifies the index
2299 of the default character to be used by the X server when an attempt
2300 is made to display an undefined or nonexistent character in the font.
2301 (For a font using a 2-byte matrix format,
2302 the index bytes are encoded in the integer as byte1 * 65536 + byte2.)
2303 If the DEFAULT_CHAR itself specifies an undefined or nonexistent character
2304 in the font,
2305 then no display is performed.
2306 </p><p>
2308 DEFAULT_CHAR cannot be approximated if not provided as a font property.
2315 </p></div></div></div></div></body></html>