Overview
KB
Technical FAQ
PHP Manual
CSS2 Manual
HTML Manual
JS Guide
JS Reference
PhpDock Manual
Nu-Coder Manual
PhpExpress Manual
PHP Joomla
Development
Learn PHP
 
<Changes from CSS1The grammar of CSS2>
^ContentsLast updated: Wed, 16 Aug 2006

Appendix C. Implementation and performance notes for fonts

This appendix is informative, not normative.

C.1 Glossary of font terms

DocLock™
Bitstream's DocLock™ technology ensures that TrueDoc PFRs can only be used with the site they are published for. A TrueDoc PFR moved to a different site or referenced from another site will not work.
Digital Signature
Part of a trust management technology, used to provide signed assertions about a resource.
Font Caching
Font caching allows for a temporary copy of fonts on the client system. They are often stored on disk with other cached items such as graphics specifically for the UA.
Font Face
A "handle" that refers to a specific face of a font, excluding the font size.
Font Matching
Font matching is a process of selecting a similar font based on using one or more attributes of the primary font. Common attribute include serif, sans-serif, weight, cap height, x-height, spacing, language, and posture. Font matching is dependent on the algorithm and the variety of candidate fonts.
Glyph Representation Sub-setting
Glyph Representation sub-setting is the process by which unwanted glyph representations (together with their side bearings and kerning information) are removed from a primary font to produce a smaller subset font that covers a particular document or set of documents. This is a particular win for documents that use ideographic scripts, where the glyph complement of the base font can be very large. Glyph representation sub-setting for documents using scripts that require ligatures, such as Arabic, is difficult without knowing the ligature formation rules of the final display system.
Intellifont
Intellifont technology was developed by Agfa and is the native format for Hewlett-Packard and other printers that use the PCL5 language. It is also the native font format on the Amiga computers.
Infinifont
A font synthesis technique which, given a Panose-1 number (and, optionally, additional font description data) can generate a faux font without extrapolating from a single master outline or interpolating between two or more outlines (see [INFINIFONT]).
Italic
A class of letter forms for Latin scripts, that are more cursive than roman letter forms but less so than script forms. Often, a pair of fonts are designed to be used together; one is a serifed roman and one is italic. Other terms to describe this class of letter forms include cursive and, for Cyrillic scripts, kursiv. For sans-serif faces, the companion face is often a slanted or oblique variant rather than a different class of letter form.

Italic forms   [D]

Kerning
Altering the spacing between selected glyph representations, which would otherwise appear to be too close or too far apart, to obtain a more even typographical color.

Illustration of kerning   [D]

Multiple Master Font
A Multiple Master Font contain two primary fonts that are used with special rendering software to provide an interpolated result. Adobe Systems provides a mechanism that allows for parameters to be used to control the output or the interpolated output font. These parameters generally describe the characteristics of an original font and the multiple master result is referred to as a "synthesized font."
Open Type
Open Type is an extension to the TrueType font format that contains additional information that extends the capabilities of the fonts to support high-quality international typography. Open Type can associate a single character with multiple glyph representations, and combinations of characters with a single glyph representation (ligature formation). Open Type includes two-dimensional information to support features for complex positioning and glyph attachment. TrueType Open and OpenType contain explicit script and language information, so a text-processing application can adjust its behavior accordingly (see [OPENTYPE]).
Server Font
A Server Font is a font resource located on the web server that is referenced by the WebFont definition. The user agent may use this resource for rendering the page.
Speedo
Speedo font technology was developed by Bitstream and is the native font format on the Atari ST and Falcon computers. It is also used by computers running the X window system.
TrueDoc
TrueDoc technology was developed by Bitstream for the creation, transport, and imaging of platform independent scalable font objects on the web. Creation of font objects is done by the TrueDoc character shape recorder (CSR) and the rendering of the font objects is done by TrueDoc's character shape player (CSP). The technology is intended to be used on the web for viewing and printing.
TrueDoc Portable Font Resource
A TrueDoc Portable font resource (or, PFR) is a platform-independent scalable font object that is produced by a character shape player. Input may be either TrueType or Type 1 of any flavor on either Windows, Mac, or Unix. TrueDoc Portable Font Resources provide good compression ratios, are platform independent, and because they are not in an native font format (TrueType or Type 1) they can not be easily installed.
TrueType
TrueType is a font format developed by Apple and licensed to Microsoft. TrueType is the native operating system font format for Windows and Macintosh. TrueType contains a hierarchical set of tables and glyph representations. Characters can be hinted on a per character and point size basis yielding excellent quality at screen resolutions. TrueType fonts for Windows and Mac have few differences, though they can be different enough to prevent cross platform usage.
TrueType Collection
A TrueType Collection (or TTC) is an extension to the TrueType format that includes tables that allow for multiple TrueType fonts to be contained within a single TrueType font file. TrueType collection files are relatively rare at this time.
TrueType GX Fonts
TrueType GX Fonts contain extensions to the standard TrueType format that allow for mutable fonts, similar to Multiple Master fonts. There may be several mutation axis such as weight, height, and slant. The axis can be defined to obtain almost any effect. TrueType GX can also supports alternate glyph representation substitution for ligatures, contextual forms, fractions, etc. To date, TrueType GX is available only on the Mac (see [TRUETYPEGX]).
Type 1 font
Type 1 fonts, developed by Adobe Systems, were one of first scalable formats available. Type 1 fonts generally contain 228 characters with the glyph representations described using third degree bezier curves. Mac, Windows, and X have similar but separate formats; Adobe provides Adobe Type Manager for all three platforms. Type1c is a more recent losslessly-compressed storage form for Type 1 glyph representations.
URI Binding
A process of locking a particular font resource to a given Web site by embedding an encrypted URI or a digitally signed usage assertion into the font resource.

C.2 Font retrieval

There are many different font formats in use by many different platforms. To select a preferred font format, transparent content negotiation is used (see [NEGOT]). It is always possible to tell when a font is being dereferenced, because the URI is inside a font description. A given implementation will know which downloadable font formats it supports and can thus use the format hint to avoid downloading fonts in an unsupported format.

C.3 Meaning of the Panose Digits

Illustration of Panose-1   [D]

The Family, Serif Style and Proportion numbers are used by Windows95 for font selection and matching.

The meaning of the ten numbers and the allowable values (given in parentheses) are given below for the most common case, where the "family" digit is 2, Text and Display. (If the first digit has a different value, the remaining nine digits have different meanings). For further details on Panose-1, see [PANOSE].

Family
Serif Style
  • Any (0)
  • No Fit (1)
  • Cove (2)
  • Obtuse Cove (3)
  • Square Cove (4)
  • Obtuse Square Cove (5)
  • Square (6)
  • Thin (7)
  • Bone (8)
  • Exaggerated (9)
  • Triangle (10)
  • Normal Sans (11)
  • Obtuse Sans (12)
  • Perp Sans (13)
  • Flared (14)
  • Rounded (15)
Weight
  • Any (0)
  • No Fit (1)
  • Very Light (2)[100]
  • Light (3) [200]
  • Thin (4) [300]
  • Book (5) [400] same as CSS1 'normal'
  • Medium (6) [500]
  • Demi (7) [600]
  • Bold (8) [700] same as CSS1 'bold'
  • Heavy (9) [800]
  • Black (10) [900]
  • Extra Black / Nord (11) [900] force mapping to CSS1 100-900 scale
Proportion
  • Any (0)
  • No Fit (1)
  • Old Style (2)
  • Modern (3)
  • Even Width (4)
  • Expanded (5)
  • Condensed (6)
  • Very Expanded (7)
  • Very Condensed (8)
  • Monospaced (9)
Contrast
  • Any (0)
  • No Fit (1)
  • None (2)
  • Very Low (3)
  • Low (4)
  • Medium Low (5)
  • Medium (6)
  • Medium High (7)
  • High (8)
  • Very High (9)
Stroke Variation
  • Any (0)
  • No Fit (1)
  • No Variation (2)
  • Gradual/Diagonal (3)
  • Gradual/Transitional (4)
  • Gradual/Vertical (5)
  • Gradual/Horizontal (6)
  • Rapid/Vertical (7)
  • Rapid/Horizontal (8)
  • Instant/Horizontal (9)
  • Instant/Vertical (10)
Arm Style
  • Any (0)
  • No Fit (1)
  • Straight Arms/Horizontal (2)
  • Straight Arms/Wedge (3)
  • Straight Arms/Vertical (4)
  • Straight Arms/Single Serif (5)
  • Straight Arms/Double Serif (6)
  • Non-Straight Arms/Horizontal (7)
  • Non-Straight Arms/Wedge (8)
  • Non-Straight Arms/Vertical 90)
  • Non-Straight Arms/Single Serif (10)
  • Non-Straight Arms/Double Serif (11)
Letterform
  • Any (0)
  • No Fit (1)
  • Normal/Contact (2)
  • Normal/Weighted (3)
  • Normal/Boxed (4)
  • Normal/Flattened (5)
  • Normal/Rounded (6)
  • Normal/Off Center (7)
  • Normal/Square (8)
  • Oblique/Contact (9)
  • Oblique/Weighted (10)
  • Oblique/Boxed (11)
  • Oblique/Flattened (12)
  • Oblique/Rounded (13)
  • Oblique/Off Center (14)
  • Oblique/Square (15)
Midline
  • Any (0)
  • No Fit (1)
  • Standard/Trimmed (2)
  • Standard/Pointed (3)
  • Standard/Serifed (4)
  • High/Trimmed (5)
  • High/Pointed (6)
  • High/Serifed (7)
  • Constant/Trimmed (8)
  • Constant/Pointed (9)
  • Constant/Serifed (10)
  • Low/Trimmed (11)
  • Low/Pointed (12)
  • Low/Serifed (13)
XHeight
  • Any (0)
  • No Fit (1)
  • Constant/Small (2)
  • Constant/Standard (3)
  • Constant/Large (4)
  • Ducking/Small (5)
  • Ducking/Standard (6)
  • Ducking/Large (7)

Panose-2 (see [PANOSE2]) is a specification for a more comprehensive font classification and matching technology which is not limited to Latin typefaces. For example, the serif characteristics of a Latin face may be compared with the stroke terminations of a Kanji face.

Illustration of Panose-2

The Panose-2 value is not stored inside any known font formats, but may be measured.

C.4 Deducing Unicode Ranges for TrueType

This information is available in the font by looking at the 'ulUnicodeRange' bits in the 'OS/2' table (if it has one), which holds a bitfield representation of the set. This table is defined in revision 1.66 of the TrueType specification, from Microsoft. Considering this information as a set, each element corresponds to a Unicode 1.1 character block, and the presence of that element in the set indicates that the font has one or more glyph representations to represent at least one character in that block. The set has 128 elements as described below. The order generally follows that in the Unicode 1.1 standard. This table may be used to convert the information in a TrueType font into a CSS 'unicode-range' descriptor.


BlockAddBlock nameUnicode range

01Basic LatinU+0-7F
12Latin-1 SupplementU+80-FF
24Latin-1 Extended-AU+100-17F
38Latin Extended-BU+180-24F

41IPA ExtensionsU+250-2AF
52Spacing Modifier LettersU+2B0-2FF
64Combining Diacritical MarksU+300-36F
78GreekU+370-3CF

81Greek Symbols and CopticU+3D0-3EF
92CyrillicU+400-4FF
104ArmenianU+530-58F
118HebrewU+590-5FF

121Hebrew Extended-A
Hebrew Extended-B
?? what ranges ??
132ArabicU+600-69F
144Arabic ExtendedU+670-6FF
158DevanagariU+900-97F

161BengaliU+980-9FF
172GurmukhiU+A00-A7F
184GujaratiU+A80-AFF
198OriyaU+B00-B7F

201TamilU+B80-BFF
212TeluguU+C00-C7F
224KannadaU+C80-CFF
238MalayalamU+D00-D7F

241ThaiU+E00-E7F
252LaoU+E80-EFF
264GeorgianU+10A0-10EF
278Georgian ExtendedU+10F0-10FF ??

281Hangul JamoU+1100-11FF
292Latin Extended Additional-
304Greek ExtendedU+1F00-1FFF
318General PunctuationU+2000-206F

321Superscripts and Subscripts-
332Currency SymbolsU+20A0-20CF
344Combining Marks for SymbolsU+20D0-20FF
358Letterlike SymbolsU+2100-214F

361Number FormsU+2150-218F
372ArrowsU+2190-21FF
384Mathematical OperatorsU+2200-22FF
398Miscellaneous TechnicalU+2300-23FF

401Control PicturesU+2400-243F
412Optical Character RecognitionU+2440-245F
424Enclosed AlphanumericsU+2460-24FF
438Box DrawingU+2500-257F

441Block ElementsU+2580-259F
452Geometric ShapesU+25A0-25FF
464Miscellaneous SymbolsU+2600-26FF
478DingbatsU+2700-27BF

481CJK Symbols and PunctuationU+3000-303F
492HiraganaU+3040-309F
504KatakanaU+30A0-30FF
518BopomofoU+3100-312F

521Hangul Compatibility JamoU+3130-318F
532CJK Miscellaneous??
544Enclosed CJK Letters and MonthsU+3200-32FF
558CJK compatibilityU+3300-33FF

561HangulU+AC00-D7FF
598CJK Unified IdeographsU+4E00-9FFF

601Private Use AreaU+E000-F8FF
612CJK Compatibility IdeographsU+F900-FAFF
624Alphabetic Presentation FormsU+FB00-FB4F
638Arabic Presentation Forms-AU+FB50-FDFF

641Combining Half MarksU+FE20-FE2F
652CJK compatibility FormsU+FE30-FE4F
664Small Form VariantsU+FE50-FE6F
678Arabic Presentation Forms-BU+FE70-FEFF

681Halfwidth and Fullwidth FormsU+FF00-FFEF
692SpecialsU+FFF0-FFFD

The TrueType bitfield system has the problem that it is tied to Unicode 1.1 and is unable to cope with Unicode expansion - it is unable to represent Tibetan for example, or other scripts introduced with Unicode 2.0 or later revisions.

C.5 Automatic descriptor generation

Authoring tools should allow style sheet authors to add and edit font descriptors. In some cases, however, authoring tools can help by examining locally installed fonts and automatically generating descriptors for fonts referenced in the style sheet. This is also a function that can be carried out by tools which subset or convert fonts ready for dynamic download.

This table suggests where such information can be found, for common font formats.

DescriptorType 1TrueType and OpenTypeTrueType GX [TRUETYPEGX]
'ascent' 'Ascender' in AFM/PFM file'Ascender' in 'hhea' table or (preferably) 'sTypoAscender' in 'OS/2' table'horizontalBefore' in 'fmtx' table
'baseline'   bsln table, see note
'bbox' FontBBox, font dictionary'xMin', 'xMax', 'yMin' and 'yMax' entries of the 'head' table  
'cap-height' CapHeight in AFM/PFM file  
'descent' 'Descender' in the AFM/PFM file.  
'mathline'   bsln table
'font-family' FamilyName, fontinfo dictionaryname table 
'stemh' StdHW, private dictionary of AFM/PFM file  
'stemv' /StdVW, private dictionarycvt table 
'topline'   bsln table
'unicode-range' cmap fileOS/2 table, see Appendix C 
'units-per-em' FontMatrix, font dictionaryunitsPerEm, head table. 
'widths'  hmtx table 
  • Within the bsln table, the ideographic centered baseline may be used for stretches of predominantly ideographic characters and the ideographic low baseline is more suitable for ideographic characters in a run of predominantly Latin, Greek or Cyrillic characters.



<Changes from CSS1The grammar of CSS2>
^ContentsLast updated: Wed, 16 Aug 2006