The 'OS/2' table

General table information

The 'OS/2' table consists of a set of metrics that are required by Windows. It is not fully used by Apple platforms.

The format of this table has changed over time. The original TrueType specification had this table at 68 bytes long. The first OpenType version had it at 78 bytes long, and the current OpenType version is even larger. To determine which kind of table your software is dealing with, it is necessary both to consider the table's version and its size.

The layout of the (68-byte) table is shown in Table 1 below. For details on later OpenType extensions, consult the OpenType specification.

Table 1: 'OS/2' table

Type Name Description
uint16 version table version number (set to 0)
int16 xAvgCharWidth average weighted advance width of lower case letters and space
uint16 usWeightClass visual weight (degree of blackness or thickness) of stroke in glyphs
uint16 usWidthClass relative change from the normal aspect ratio (width to height ratio) as specified by a font designer for the glyphs in the font
int16 fsType characteristics and properties of this font (set undefined bits to zero)
int16 ySubscriptXSize; recommended horizontal size in pixels for subscripts
int16 ySubscriptYSize recommended vertical size in pixels for subscripts
int16 ySubscriptXOffset recommended horizontal offset for subscripts
int16 ySubscriptYOffset recommended vertical offset form the baseline for subscripts
int16 ySuperscriptXSize recommended horizontal size in pixels for superscripts
int16 ySuperscriptYSize recommended vertical size in pixels for superscripts
int16 ySuperscriptXOffset recommended horizontal offset for superscripts
int16 ySuperscriptYOffset recommended vertical offset from the baseline for superscripts
int16 yStrikeoutSize width of the strikeout stroke
int16 yStrikeoutPosition position of the strikeout stroke relative to the baseline
int16 sFamilyClass classification of font-family design.
PANOSE panose 10 byte series of number used to describe the visual characteristics of a given typeface
uint32 ulUnicodeRange[4] Field is split into two bit fields of 96 and 36 bits each. The low 96 bits are used to specify the Unicode blocks encompassed by the font file. The high 32 bits are used to specify the character or script sets covered by the font file. Bit assignments are pending. Set to 0
int8 achVendID[4] four character identifier for the font vendor
uint16 fsSelection 2-byte bit field containing information concerning the nature of the font patterns
uint16 fsFirstCharIndex The minimum Unicode index in this font.
uint16 fsLastCharIndex The maximum Unicode index in this font.

Version

The version number of the table documented above is zero. The current version used by OpenType is five.

Additional Fields

The fields added since the original version of the 'OS/2' table format are:

Type Name Description
int16 sTypoAscender The typographic ascender for this font. This is not necessarily the same as the ascender value in the 'hhea' table.
int16 sTypoDescender The typographic descender for this font. This is not necessarily the same as the descender value in the 'hhea' table.
int16 sTypoLineGap The typographic line gap for this font. This is not necessarily the same as the line gap value in the 'hhea' table.
uint16 usWinAscent The ascender metric for Windows. usWinAscent is computed as the yMax for all characters in the Windows ANSI character set.
uint16 usWinDescent The descender metric for Windows. usWinDescent is computed as the -yMin for all characters in the Windows ANSI character set.
uint32 ulCodePageRange1 Bits 0-31
uint32 ulCodePageRange2 Bits 32-63
int16 sxHeight The distance between the baseline and the approximate height of non-ascending lowercase letters measured in FUnits.
int16 sCapHeight The distance between the baseline and the approximate height of uppercase letters measured in FUnits.
uint16 usDefaultChar The default character displayed by Windows to represent an unsupported character. (Typically this should be 0.)
uint16 usBreakChar The break character used by Windows.
uint16 usMaxContext The maximum length of a target glyph OpenType context for any feature in this font.
uint16 usLowerPointSize Proposed for version 5 The lowest size (in twentieths of a typographic point), at which the font starts to be used. This is an inclusive value.
uint16 usUpperPointSize Proposed for version 5 The highest size (in twentieths of a typographic point), at which the font starts to be used. This is an exclusive value. Use 0xFFFFU to indicate no upper limit.

xAvgCharWidth

The xAvgCharWidth parameter specifies the arithmetic average of the advance width of all of the 26 lowercase letters of the Latin alphabet and the space character. If any of the 26 lowercase letters are not present, this parameter should equal zero.

This parameter is a descriptive attribute of the font that specifies the spacing of characters used for comparing one font to another for selection or substitution. For proportionally spaced fonts, this value is useful in estimating the length for lines of text. The weighting factors provided in Table 2 below are only valid for Latin lowercase letters. If other character sets, or capital letters are used, different frequency of use values should be substituted. Care must be taken when comparing fonts that use different frequency of use values for font mapping. The average character width is calculated according to this formula:

For the lowercase letters only, sum the individual character widths multiplied by the following weighting factors and then divide by 1000.

 

Table 2 : Weight Factors

Letter Weight Factor Letter Weight Factor
a 64 o 56
b 14 p 17
c 27 q 4
d 35 r 49
e 100 s 56
f 20 t 71
g 14 u 31
h 42 v 10
i 63 w 18
j 3 x 3
k 6 y 18
l 35 z 2
m 20 space 166
n 56

 

usWeightClass

The usWeightClass indicates the visual weight (degree of blackness or thickness of strokes) of the characters in the font. Table 3 below explains the possible values for this entry.

Table 3 : Visual Weight

Value Description
1 Ultra-light
2 Extra-light
3 Light
4 Semi-light
5 Medium (normal)
6 Semi-bold
7 Bold
8 Extra-Bold
9 Ultra-bold

usWidthClass

The usWidthClass indicates a relative change from the normal aspect ratio (width to height ratio) as specified by a font designer for the glyphs in a font.

Although every character in a font may have a different numeric aspect ratio, each character in a font of normal width has a relative aspect ratio of one. When a new type style is created of a different width class (either by a font designer or by some automated means) the relative aspect ratio of the characters in the new font is some percentage greater or less than those same characters in the normal font it is this difference that this parameter specifies.

Table 4 : Aspect ratio

Value Description % of normal
1 Ultra-condensed 50
2 Extra-condensed 62.5
3 Condensed 75
4 Semi-condensed 87.5
5 Medium (normal) 100
6 Semi-expanded 112.5
7 Expanded 125
8 Extra-expanded 150
9 Ultra-expanded 200

fsType

The fsType is a 2-byte bit field indicating the embedding characteristics of the font. The meaning of the bits is summarized in Table 5. Set all undefined bits to zero.

Table 5 : Embedding flags

Bit Description
0 Reserved; must be 0
1 Licensed (protected) font; should not be 1 if bits 2 or 3 are one. Fonts that have only this bit set must not be modified, embedded, or exchanged in any manner without first obtaining permission of the legal owner.
2 Preview and print embedding; should not be 1 if bits 1 or 3 are one. Fonts that have only this bit set may be embedded in documents and temporarily loaded on the remote system. Documents containing such fonts must be opened “read-only;” no edits can be applied to the document.
3 Editable embedding; should not be 1 if bits 1 or 2 are one. Fonts that have only this bit set may be embedded in documents and temporarily loaded on the remote system. Documents containing such fonts may be editable.
4–7 Reserved; must be 0
8 No subsetting. When this bit is set, the font may not be subsetted prior to embedding. Other embedding restrictions specified in bits 1–3 and 9 also apply.
9 Bitmap embedding only. When this bit is set, only bitmaps contained in the font may be embedded. No outline data may be embedded. Other embedding restrictions specified in bits 1–3 and 8 also apply.
10–15 Reserved; must be 0

Fonts that are not licensed may be encapsulated within a document and shipped freely to other users. Fonts subject to a licensing agreement are legally protected or licensed. They must not be modified or exchanged in any manner without first assuring that the action is within the terms of the protection agreement and obtaining permission from the holder of the protection agreement.

The next eight entries apply to subscripts and superscripts. Two (one each for x and y) apply to size, two to offset for each of subscripts and superscripts.

Table 6 : Superscripts

ySubscriptXSize If a font has two recommended sizes for subscripts, e.g., numerics and other, the numeric sizes should be stressed. This size field maps to the em square size of the font being used for a subscript. The horizontal font size specifies a font designer's recommended horizontal font size for subscript characters associated with this font. If a font does not include all of the required subscript characters for an application, and the application can substitute characters by scaling the character of a font or by substituting characters from another font, this parameter specifies the recommended em square for those subscript characters.
For example, if the em square for a font is 2048 and ySubScriptXSize is set to 205, then the horizontal size for a simulated subscript character would be 1/10th the size of the normal character.
ySubscriptYSize If a font has two recommended sizes for subscripts, e.g. numerics and other, the numeric sizes should be stressed. This size field maps to the emHeight of the font being used for a subscript. The horizontal font size specifies a font designer's recommendation for horizontal font size of subscript characters associated with this font. If a font does not include all of the required subscript characters for an application, and the application can substitute characters by scaling the characters in a font or by substituting characters from another font, this parameter specifies the recommended horizontal EmInc for those subscript characters.
For example, if the em square for a font is 2048 and ySubScriptYSize is set to 205, then the vertical size for a simulated subscript character would be 1/10th the size of the normal character.
ySubscriptXOffset The Subscript X Offset parameter specifies a font designer's recommended horizontal offset -- from the character origin of the font to the character origin of the subscript's character -- for subscript characters associated with this font. If a font does not include all of the required subscript characters for an application, and the application can substitute characters, this parameter specifies the recommended horizontal position from the character escapement point of the last character before the first subscript character. For upright characters, this value is usually zero; however, if the characters of a font have an incline (italic characters) the reference point for subscript characters is usually adjusted to compensate for the angle of incline.
ySubscriptYOffset The Subscript Y Offset parameter specifies a font designer's recommended vertical offset from the character baseline to the character baseline for subscript characters associated with this font. Values are expressed as a positive offset below the character baseline. If a font does not include all of the required subscript for an application, this parameter specifies the recommended vertical distance below the character baseline for those subscript characters.
ySuperscriptXSize If a font has two recommended sizes for subscripts, e.g., numerics and other, the numeric sizes should be stressed. This size field maps to the em square size of the font being used for a subscript. The horizontal font size specifies a font designer's recommended horizontal font size for superscript characters associated with this font. If a font does not include all of the required superscript characters for an application, and the application can substitute characters by scaling the character of a font or by substituting characters from another font, this parameter specifies the recommended em square for those superscript characters.
For example, if the em square for a font is 2048 and ySuperScriptXSize is set to 205, then the horizontal size for a simulated superscript character would be 1/10th the size of the normal character.
ySuperscriptYSize If a font has two recommended sizes for subscripts, e.g., numerics and other, the numeric sizes should be stressed. This size field maps to the emHeight of the font being used for a subscript. The vertical font size specifies a font designer's recommended vertical font size for superscript characters associated with this font. If a font does not include all of the required superscript characters for an application, and the application can substitute characters by scaling the character of a font or by substituting characters from another font, this parameter specifies the recommended EmHeight for those superscript characters.
For example, if the em square for a font is 2048 and ySuperScriptYSize is set to 205, then the vertical size for a simulated superscript character would be 1/10th the size of the normal character.
ySuperscriptXOffset he Superscript X Offset parameter specifies a font designer's recommended horizontal offset -- from the character origin to the superscript character's origin for the superscript characters associated with this font. If a font does not include all of the required superscript characters for an application, this parameter specifies the recommended horizontal position from the escapement point of the character before the first superscript character. For upright characters, this value is usually zero; however, if the characters of a font have an incline (italic characters) the reference point for superscript characters is usually adjusted to compensate for the angle of incline.
ySuperscriptYOffset The Superscript Y Offset parameter specifies a font designer's recommended vertical offset -- from the character baseline to the superscript character's baseline associated with this font. Values for this parameter are expressed as a positive offset above the character baseline. If a font does not include all of the required superscript characters for an application, this parameter specifies the recommended vertical distance above the character baseline for those superscript characters.

The next two entries contain strikeout information.

Table 7 : Strikeout

yStrikeoutSize This field should normally be the width of the em-dash for the current font. If the size is one, the strikeout line will be the line represented by the strikeout position field. If the value is two, the strikeout line will be the line represented by the strikeout position and the line immediately above the strikeout position.
yStrikeoutPosition Positive values represent distances above the baseline, while negative values represent distances below the baseline. A value of zero falls directly on the baseline, while a value of one falls one pixel above the baseline. The value of strikeout position should not interfere with the recognition of standard characters, and therefore should not line up with crossbars in the font.

The next section describes the information in sFamilyClass.

The font class and font subclass are registered values assigned by IBM to each font family. This parameter is intended for use in selecting an alternate font when the requested font is not available. The font class is the most general and the font subclass is the most specific. The high byte of this field contains the family class, while the low byte contains the family subclass.

This section defines the IBM Font Class and the IBM Font Subclass parameter values to be used in the classification of font designs by the font designer or supplier. These values classify a font design as to its appearance, but do not identify the specific font family, typeface variation, designer, supplier, size, or metric table differences. It should be noted that some font designs may be classified equally well into more than IBM Font Class or Subclass. Such designs should be matched to a classification for which substitution of another font design from the same class or subclass would generally result in a similar appearance of the presented document.

Table 8 : sFamily Class

ClassID Class Name Description
0 No classification This class ID is used to indicate that the associated font has no design classification or that the design classification is not of significance to the creator or user of the font resource.
1 OldStyle Serifs This style is generally based upon the Latin printing style of the 15th to 17th century, with a mild diagonal contrast in stroke emphasis (lighter in upper left to lower right, heavier in upper right to lower left) and bracketed serifs. This IBM Class reflects the ISO Serif Class, Oldstyle and Legibility Subclasses as documented in the 12/87 ISO/IEC 9541-5 draft standard.
2 Transitional Serifs This style is generally based upon the Latin printing style of the 18th to 19th century, with a pronounced vertical contrast in stroke emphasis (vertical strokes being heavier than the horizontal strokes) and bracketed serifs. This IBM Class reflects the ISO Serif Class, Transitional Subclass as documented in the 12/87 ISO/IEC 9541-5 draft standard.
3 Modern Serifs This style is generally based upon the Latin printing style of the 20th century, with an extreme contrast between the thick and thin portion of the strokes. This IBM Class reflects the ISO Serif Class, Modern Subclass as documented in the 12/87 ISO/IEC 9541-5 draft standard.
4 Clarendon Serifs This style is a variation of the Oldstyle Serifs and the Transitional Serifs, with a mild vertical stroke contrast and bracketed serifs. This IBM Class reflects the ISO Serif Class, Square Serif Subclass as documented in the 12/87 ISO/IEC 9541-5 draft standard.
5 Slab Serifs This style is characterized by serifs with a square transition between the strokes and the serifs (no brackets). This IBM Class reflects the ISO Serif Class, Square Serif Subclass (except the Clarendon Specific Group) as documented in the 12/87 ISO/IEC 9541-5 draft standard.
6 Reserved This class ID is reserved for future assignment, and shall not be used without formal assignment by IBM.
7 Freeform Serifs This style includes serifs, but which expresses a design freedom that does not generally fit within the other serif design classifications. This IBM Class reflects the remaining ISO Serif Class subclasses as documented in the 12/87 ISO/IEC 9541-5 draft standard.
8 Sans Serif This style includes most basic letter forms (excluding Scripts and Ornamentals) that do not have serifs on the strokes. This IBM Class reflects the ISO Sans Serif Class as documented in the 12/87 ISO/IEC 9541-5 draft standard.
9 Ornamentals This style includes highly decorated or stylized character shapes that are typically used in headlines. This IBM Class reflects the ISO Ornamental Class and the ISO Blackletter Class as documented in the 12/87 ISO/IEC 9541-5 draft standard.
10 Scripts This style includes those typefaces that are designed to simulate handwriting. This IBM Class reflects the ISO Script Class and Uncial Class as documented in the 12/87 ISO/IEC 9541-5 draft standard.
11 reserved This class ID is reserved for future assignment, and shall not be used without formal assignment by IBM.
12 Symbolic This style is generally design independent, making it suitable for Pi and special characters (icons, dingbats, technical symbols, etc.) that may be used equally well with any font. This IBM Class reflects various ISO Specific Groups, as noted below and documented in the 12/87 ISO/IEC 9541-5 draft standard.
13 reserved This class ID is reserved for future assignment, and shall not be used without formal assignment by IBM.
14 reserved This class ID is reserved for future assignment, and shall not be used without formal assignment by IBM.

A number of the class defined above have subclasses as documented below.

Table 9 : OldStyle Serifs (ClassID = 1)

Subclass Name Description
0 No classification This subclass ID is used to indicate that the associated font has no design sub-classification or that the design subclassification is not of significance to the creator or user of the font resource.
1 IBM Rounded Legibility This style is generally characterized by a large x-height, with short ascenders and descenders. Specifically, it is distinguished by a medium resolution, hand tuned, bitmap rendition of the more general rounded legibility subclass. An example of this font style is the IBM Sonoran Serif family. This IBM Subclass reflects the ISO Serif Class, Legibility Subclass, and Rounded Specific Group as documented in the 12/87 ISO/IEC 9541-5 draft standard.
2 Garalde This style is generally characterized by a medium x-height, with tall ascenders. An example of this font style is the ITC Garamond family. This IBM Subclass reflects the ISO Serif Class, Oldstyle Subclass, and Garalde Specific Group as documented in the 12/87 ISO/IEC 9541-5 draft standard.
3 Venetian This style is generally characterized by a medium x-height, with a relatively monotone appearance and sweeping tails based on the designs of the early Venetian printers. An example of this font style is the Goudy family. This IBM Subclass reflects the ISO Serif Class, Oldstyle Subclass, and Venetian Specific Group as documented in the 12/87 ISO/IEC 9541-5 draft standard.
4 Modified Venetian This style is generally characterized by a large x-height, with a relatively monotone appearance and sweeping tails based on the designs of the early Venetian printers. An example of this font style is the Allied Linotype Palatino family. This IBM Subclass reflects the ISO Serif Class, Transitional Subclass, and Modified Specific Group as documented in the 12/87 ISO/IEC 9541-5 draft standard.
5 Dutch Modern This style is generally characterized by a large x-height, with wedge shaped serifs and a circular appearance to the bowls similar to the Dutch Traditional Subclass below, but with lighter stokes. An example of this font style is the Monotype Times New Roman family. This IBM Subclass reflects the ISO Serif Class, Oldstyle Subclass, and Dutch Specific Group as documented in the 12/87 ISO/IEC 9541-5 draft standard.
6 Dutch Traditional This style is generally characterized by a large x-height, with wedge shaped serifs and a circular appearance of the bowls. An example of this font style is the IBM Press Roman family. This IBM Subclass reflects the ISO Serif Class and Legibility Subclass as documented in the 12/87 ISO/IEC 9541-5 draft standard.
7 Contemporary This style is generally characterized by a small x-height, with light stokes and serifs. An example of this font style is the University family. This IBM Subclass reflects the ISO Serif Class and Contemporary Subclass as documented in the 12/87 ISO/IEC 9541-5 draft standard.
8 Calligraphic This style is generally characterized by the fine hand writing style of calligraphy, while retaining the characteristic Oldstyle appearance. This IBM Subclass is not reflected in the 12/87 ISO/IEC 9541-5 draft standard.
9-14 reserved These subclass IDs are reserved for future assignment, and shall not be used without formal assignment by IBM.
15 Miscellaneous This subclass ID is used for miscellaneous designs of the associated design class that are not covered by another Subclass.

Table 10 : Transitional Serifs (ClassID=2)

Subclass Name Description
0 No Classification This subclass ID is used to indicate that the associated font has no design sub-classification or that the design sub-classification is not of significance to the creator or user of the font resource.
1 Direct Line This style is generally characterized by a medium x-height, with fine serifs, noticeable contrast, and capitol letters of approximately the same width. An example of this font style is the Monotype Baskerville family. This IBM Subclass reflects the ISO Serif Class, Transitional Subclass, and Direct Line Specific Group as documented in the 12/87 ISO/IEC 9541-5 draft standard.
2 Script This style is generally characterized by a hand written script appearance while retaining the Transitional Direct Line style. An example of this font style is the IBM Nasseem (Arabic) family. This IBM Subclass is not specifically reflected in the 12/87 ISO/IEC 9541-5 draft standard, though the ISO Serif Class, Transitional Subclass, and Direct Line Specific Group would be a close approximation.
3-14 reserved These subclass IDs are reserved for future assignment, and shall not be used without formal assignment by IBM.
15 Miscellaneous This subclass ID is used for miscellaneous designs of the associated design class that are not covered by another Subclass.

Table 11 : Modern Serifs (ClassID=3)

Subclass Name Description
0 No Classification This subclass ID is used to indicate that the associated font has no design sub-classification or that the design sub-classification is not of significance to the creator or user of the font resource.
1 Italian This style is generally characterized by a medium x-height, with thin hairline serifs. An example of this font style is the Monotype Bodoni family. This IBM Subclass reflects the ISO Serif Class, Modern Subclass, and Italian Specific Group as documented in the 12/87 ISO/IEC 9541-5 draft standard.
2 Script This style is generally characterized by a hand written script appearance while retaining the Modern Italian style. An example of this font style is the IBM Narkissim (Hebrew) family. This IBM Subclass is not specifically reflected in the 12/87 ISO/IEC 9541-5 draft standard, though the ISO Serif Class, Modern Subclass, and Italian Specific Group would be a close approximation.
3-14 reserved These subclass IDs are reserved for future assignment, and shall not be used without formal assignment by IBM.
15 Miscellaneous This subclass ID is used for miscellaneous designs of the associated design class that are not covered by another Subclass.

Table 12 : Clarendon Serifs (ClassID=4)

Subc.ass Name Description
0 No Classification This subclass ID is used to indicate that the associated font has no design sub-classification or that the design sub-classification is not of significance to the creator or user of the font resource.
1 Clarendon This style is generally characterized by a large x-height, with serifs and strokes of equal weight. An example of this font style is the Allied Linotype Clarendon family. This IBM Subclass reflects the ISO Serif Class, Square Serif Subclass, and Clarendon Specific Group as documented in the 12/87 ISO/IEC 9541-5 draft standard.
2 Modern This style is generally characterized by a large x-height, with serifs of a lighter weight than the strokes and the strokes of a lighter weight than the Traditional. An example of this font style is the Monotype Century Schoolbook family. This IBM Subclass reflects the ISO Serif Class, Square Serif Subclass, and Clarendon Specific Group as documented in the 12/87 ISO/IEC 9541-5 draft standard.
3 Traditional This style is generally characterized by a large x-height, with serifs of a lighter weight than the strokes. An example of this font style is the Monotype Century family.This IBM Subclass reflects the ISO Serif Class, Square Serif Subclass, and Clarendon Specific Group as documented in the 12/87 ISO/IEC 9541-5 draft standard.
4 Newspaper This style is generally characterized by a large x-height, with a simpler style of design and serifs of a ligher weight than the strokes. An example of this font style is the Allied Linotype Excelsior Family. This IBM Subclass reflects the ISO Serif Class, Square Serif Subclass, and Clarendon Specific Group as documented in the 12/87 ISO/IEC 9541-5 draft standard.
5 Stub Serif This style is generally characterized by a large x-height, with short stub serifs and relatively bold stems. An example of this font style is the Cheltenham Family. This IBM Subclass reflects the ISO Serif Class, Square Serif Subclass, and Short Specific Group as documented in the 12/87 ISO/IEC 9541-5 draft standard.
6 Monotone This style is generally characterized by a large x-height, with monotone stems. An example of this font style is the ITC Korinna Family. This IBM Subclass reflects the ISO Serif Class, Square Serif Subclass, and Monotone Specific Group as documented in the 12/87 ISO/IEC 9541-5 draft standard.
7 Typewriter This style is generally characterized by a large x-height, with moderate stroke thickness characteristic of a typewriter. An example of this font style is the Prestige Elite Family. This IBM Subclass reflects the ISO Serif Class, Square Serif Subclass, and Typewriter Specific Group as documented in the 12/87 ISO/IEC 9541-5 draft standard.
8-14 reserved These subclass IDs are reserved for future assignment, and shall not be used without formal assignment by IBM.
15 Miscellaneous This subclass ID is used for miscellaneous designs of the associated design class that are not covered by another Subclass.

This style is characterized by serifs with a square transition between the strokes and the serifs (no brackets). This IBM Class reflects the ISO Serif Class, Square Serif Subclass (except the Clarendon Specific Group) as documented in the 12/87 ISO/IEC 9541-5 draft standard.

Table 13 : Slab Serifs (ClassID=5)

Subc.ass Name Description
0 No classification This subclass ID is used to indicate that the associated font has no design sub-classification or that the design sub-classification is not of significance to the creator or user of the font resource.
1 Monotone This style is generally characterized by a large x-height, with serifs and strokes of equal weight. An example of this font style is the ITC Lubalin Family. This IBM Subclass reflects the ISO Serif Class, Square Serif Subclass, and Monotone Specific Group as documented in the 12/87 ISO/IEC 9541-5 draft standard.
2 Humanist This style is generally characterized by a medium x-height, with serifs of lighter weight that the strokes. An example of this font style is the Candida Family. This IBM Subclass reflects the ISO Serif Class, Square Serif Subclass, and Monotone Specific Group as documented in the 12/87 ISO/IEC 9541-5 draft standard.
3 Geometric This style is generally characterized by a large x-height, with serifs and strokes of equal weight and a geometric (circles and lines) design. An example of this font style is the Monotype Rockwell Family. This IBM Subclass reflects the ISO Serif Class, Square Serif Subclass, and Monotone Specific Group as documented in the 12/87 ISO/IEC 9541-5 draft standard.
4 Swiss This style is generally characterized by a large x-height, with serifs and strokes of equal weight and an emphasis on the white space of the characters. An example of this font style is the Allied Linotype Serifa Family. This IBM Subclass reflects the ISO Serif Class, Square Serif Subclass, and Monotone Specific Group as documented in the 12/87 ISO/IEC 9541-5 draft standard.
5 Typewriter This style is generally characterized by a large x-height, with serifs and strokes of equal but moderate thickness, and a geometric design. An example of this font style is the IBM Courier Family. This IBM Subclass reflects the ISO Serif Class, Square Serif Subclass, and Monotone Specific Group as documented in the 12/87 ISO/IEC 9541-5 draft standard.
6-14 reserved These subclass IDs are reserved for future assignment, and shall not be used without formal assignment by IBM.
15 Miscellaneous This subclass ID is used for miscellaneous designs of the associated design class that are not covered by another Subclass.

class ID 6 is reserved for future assignment, and shall not be used without formal assignment by IBM.

This style includes serifs, but which expresses a design freedom that does not generally fit within the other serif design classifications. This IBM Class reflects the remaining ISO Serif Class subclasses as documented in the 12/87 ISO/IEC 9541-5 draft standard.

Table 14 : Freeform Serifs (ClassID=7)

Subclass Name Description
0 No classification This subclass ID is used to indicate that the associated font has no design sub-classification or that the design sub-classification is not of significance to the creator or user of the font resource.
1 Modern This style is generally characterized by a medium x-height, with light contrast in the strokes and a round full design. An example of this font style is the ITC Souvenir Family. This IBM Subclass is not reflected in the 12/87 ISO/IEC 9541-5 draft standard.
2-14 reserved These subclass IDs are reserved for future assignment, and shall not be used without formal assignment by IBM.
15 Miscellaneous This subclass ID is used for miscellaneous designs of the associated design class that are not covered by another Subclass.

This style includes most basic letter forms (excluding Scripts and Ornamentals) that do not have serifs on the strokes. This IBM Class reflects the ISO Sans Serif Class as documented in the 12/87 ISO/IEC 9541-5 draft standard.

Table 15 : Sans Serif (ClassID=8)

Subc.ass Name Description
0 No classification This subclass ID is used to indicate that the associated font has no design sub-classification or that the design sub-classification is not of significance to the creator or user of the font resource.
1 IBM Neo-grotesque Gothic This style is generally characterized by a large x-height, with uniform stroke width and a simple one story design distinguished by a medium resolution, hand tuned, bitmap rendition of the more general Neo-grotesque Gothic Subclass. An example of this font style is the IBM Sonoran Sans Serif family. This IBM Subclass reflects the ISO Sans Serif Class, Gothic Subclass, and Neo-grotesque Specific Group as documented in the 12/87 ISO/IEC 9541-5 draft standard.
2 Humanist This style is generally characterized by a medium x-height, with light contrast in the strokes and a classic Roman letterform. An example of this font style is the Allied Linotype Optima family. This IBM Subclass reflects the ISO Sans Serif Class, Humanist Subclass as documented in the 12/87 ISO/IEC 9541-5 draft standard.
3 Low-x Round Geometric This style is generally characterized by a low x-height, with monotone stroke weight and a round geometric design. An example of this font style is the Fundicion Tipograficia Neufville Futura family. This IBM Subclass reflects the ISO Sans Serif Class, Geometric Subclass, Round Specific Group as documented in the 12/87 ISO/IEC 9541-5 draft standard.
4 High-x Round Geometric This style is generally characterized by a high x-height, with uniform stroke weight and a round geometric design. An example of this font style is the ITC Avant Garde Gothic family. This IBM Subclass reflects the ISO Sans Serif Class, Geometric Subclass, Round Specific Group as documented in the 12/87 ISO/IEC 9541-5 draft standard.
5 Neo-grotesque Gothic This style is generally characterized by a high x-height, with uniform stroke width and a simple one story design. An example of this font style is the Allied Linotype Helvetica family. This IBM Subclass reflects the ISO Sans Serif Class, Gothic Subclass, Neo-grotesque Specific Group as documented in the 12/87 ISO/IEC 9541-5 draft standard.
6 Modified neo-grotesque Gothic This style is similar to the Neo-grotesque Gothic style, with design variations to the G and Q. An example of this font style is the Allied Linotype Univers family. This IBM Subclass reflects the ISO Sans Serif Class, Gothic Subclass, Neo-grotesque Specific Group as documented in the 12/87 ISO/IEC 9541-5 draft standard.
7-8 Reserved These subclass IDs are reserved for future assignment, and shall not be used without formal assignment by IBM.
9 Typewriter Gothic This style is similar to the Neo-grotesque Gothic style, with moderate stroke thickness characteristic of a typewriter. An example of this font style is the IBM Letter Gothic family. This IBM Subclass reflects the ISO Sans Serif Class, Gothic Subclass, Typewriter Specific Group as documented in the 12/87 ISO/IEC 9541-5 draft standard.
10 Matrix This style is generally a simple design characteristic of a dot matrix printer. An example of this font style is the IBM Matrix Gothic family. This IBM Subclass is not reflected in the 12/87 ISO/IEC 9541-5 draft standard.
11-14 Reserved These subclass IDs are reserved for future assignment, and shall not be used without formal assignment by IBM.
15 Miscellaneous This subclass ID is used for miscellaneous designs of the associated design class that are not covered by another Subclass.

Table 16 : Ornamental (ClassID = 9)

Subc.ass Name Description
0 No classification This subclass ID is used to indicate that the associated font has no design sub-classification or that the design sub-classification is not of significance to the creator or user of the font resource.
1 Engraver This style is characterized by fine lines or lines engraved on the stems. An example of this font style is the Copperplate family. This IBM Subclass reflects the ISO Ornamental Class and Inline Subclass, or the Serif Class and Engraving Subclass as documented in the 12/87 ISO/IEC 9541-5 draft standard.
2 Black Letter This style is generally based upon the printing style of the German monasteries and printers of the 12th to 15th centuries. An example of this font style is the Old English family. This IBM Subclass reflects the ISO Blackletters Class as documented in the 12/87 ISO/IEC 9541-5 draft standard.
3 Decorative This style is characterized by ornamental designs (typically from nature, such as leaves, flowers, animals, etc.) incorporated into the stems and strokes of the characters. An example of this font style is the Saphire family. This IBM Subclass reflects the ISO Ornamental Class and Decorative Subclass as documented in the 12/87 ISO/IEC 9541-5 draft standard.
4 Three Dimensional This style is characterized by a three dimensional (raised) appearance of the characters created by shading or geometric effects. An example of this font style is the Thorne Shaded family. This IBM Subclass reflects the ISO Ornamental Class and Three Dimensional Subclass as documented in the 12/87 ISO/IEC 9541-5 draft standard.
5-14 Reserved These subclass IDs are reserved for future assignment, and shall not be used without formal assignment by IBM.
15 Miscellaneous This subclass ID is used for miscellaneous designs of the associated design class that are not covered by another Subclass.

This style includes highly decorated or stylized character shapes that are typically used in headlines. This IBM Class reflects the ISO Ornamental Class and the ISO Blackletter Class as documented in the 12/87 ISO/IEC 9541-5 draft standard.

Table 17 : Scripts (ClassID=10)

Subc.ass Name Description
0 No classification This subclass ID is used to indicate that the associated font has no design sub-classification or that the design sub-classification is not of significance to the creator or user of the font resource.
1 Uncial This style is characterized by unjoined (nonconnecting) characters that are generally based on the hand writing style of Europe in the 6th to 9th centuries. An example of this font style is the Libra family. This IBM Subclass reflects the ISO Uncial Class as documented in the 12/87 ISO/IEC 9541-5 draft standard.
2 Brush Joined This style is characterized by joined (connecting) characters that have the appearance of being painted with a brush, with moderate contrast between thick and thin strokes. An example of this font style is the Mistral family. This IBM Subclass reflects the ISO Script Class, Joined Subclass, and Informal Specific Group as documented in the 12/87 ISO/IEC 9541-5 draft standard.
3 Formal Joined This style is characterized by joined (connecting) characters that have a printed (or drawn with a stiff brush) appearance with extreme contrast between the thick and thin strokes. An example of this font style is the Coronet family. This IBM Subclass reflects the ISO Script Class, Joined Subclass, and Formal Specific Group as documented in the 12/87 ISO/IEC 9541-5 draft standard.
4 Monotone Joined This style is characterized by joined (connecting) characters that have a uniform appearance with little or no contrast in the strokes. An example of this font style is the Kaufmann family. This IBM Subclass reflects the ISO Script Class, Joined Subclass, and Monotone Specific Group as documented in the 12/87 ISO/IEC 9541-5 draft standard.
5 Calligraphic This style is characterized by beautifully hand drawn, unjoined (non-connecting) characters that have an appearance of being drawn with a broad edge pen. An example of this font style is the Thompson Quillscript family. This IBM Subclass reflects the ISO Script Class, Unjoined Subclass, and Calligraphic Specific Group as documented in the 12/87 ISO/IEC 9541-5 draft standard.
6 Brush Unjoined This style is characterized by unjoined (non-connecting) characters that have the appearance of being painted with a brush, with moderate contrast between thick and thin strokes. An example of this font style is the Saltino family. This IBM Subclass reflects the ISO Script Class, Unjoined Subclass, and Brush Specific Group as documented in the 12/87 ISO/IEC 9541-5 draft standard.
7 Formal Unjoined This style is characterized by unjoined (non-connecting) characters that have a printed (or drawn with a stiff brush) appearance with extreme contrast between the thick and thin strokes. An example of this font style is the Virtuosa family. This IBM Subclass reflects the ISO Script Class, Unjoined Subclass, and Formal Specific Group as documented in the 12/87 ISO/IEC 9541-5 draft standard.
8 Monotone Unjoined This style is characterized by unjoined (non-connecting) characters that have a uniform appearance with little or no contrast in the strokes. An example of this font style is the Gilles Gothic family. This IBM Subclass reflects the ISO Script Class, Unjoined Subclass, and Monotone Specific Group as documented in the 12/87 ISO/IEC 9541-5 draft standard.
9-14 Reserved These subclass IDs are reserved for future assignment, and shall not be used without formal assignment by IBM.
15 Miscellaneous This subclass ID is used for miscellaneous designs of the associated design class that are not covered by another Subclass.

This style includes those typefaces that are designed to simulate handwriting. This IBM Class reflects the ISO Script Class and Uncial Class as documented in the 12/87 ISO/IEC 9541-5 draft standard.

Class ID = 12: Symbolic

This style is generally design independent, making it suitable for Pi and special characters (icons, dingbats, technical symbols, etc.) that may be used equally well with any font. This IBM Class reflects various ISO Specific Groups, as noted below. It is documented in the 12/87 ISO/IEC 9541-5 draft standard.

Table 18 : Symbolic (ClassID=12)

Subc.ass Name Description
0 No classification This subclass ID is used to indicate that the associated font has no design sub-classification or that the design sub-classification is not of significance to the creator or user of the font resource.
1-2 Reserved These subclass IDs are reserved for future assignment, and shall not be used without formal assignment by IBM.
3 Mixed serif This style is characterized by either both or a combination of serif and sans serif designs on those characters of the font for which design is important (e.g., superscript and subscript characters, numbers, copyright or trademark symbols, etc.). An example of this font style is found in the IBM Symbol family. This IBM Subclass is not reflected in the 12/87 ISO/IEC 9541-5 draft standard.
4-5 Reserved These subclass IDs are reserved for future assignment, and shall not be used without formal assignment by IBM.
6 Oldstyle Serif This style is characterized by a Oldstyle Serif IBM Class design on those characters of the font for which design is important (e.g., superscript and subscript characters, numbers, copyright or trademark symbols, etc.). An example of this font style is found in the IBM Sonoran Pi Serif family. This IBM Subclass is not directly reflected in the 12/87 ISO/IEC 9541-5 draft standard, though it is indirectly by the ISO Serif Class and Legibility Subclass (implies that all characters of the font exhibit the design appearance, while only a subset of the characters actually exhibit the design).
7 Neo-grotesque Sans Serif This style is characterized by a Neo-grotesque Sans Serif IBM Font Class and Subclass design on those characters of the font for which design is important (e.g., superscript and subscript characters, numbers, copyright or trademark symbols, etc.). An example of this font style is f ound in the IBM Sonoran Pi Sans Serif family. This IBM Subclass is not directly reflected in the 12/87 ISO/IEC 9541-5 draft standard, though it is indirectly by the ISO Sans Serif Class and Gothic Subclass (implies that all characters of the font exhibit the design appearance, while only a subset of the characters actually exhibit the design).
8-14 Reserved These subclass IDs are reserved for future assignment, and shall not be used without formal assignment by IBM.
15 Miscellaneous This subclass ID is used for miscellaneous designs of the associated design class that are not covered by another Subclass.

PANOSE

Table 19 documents a 10 byte array describing the PANOSE classification number. Tables 20 through 29 documents the contents of each of the byte arrays. Additional specifications required for PANOSE to specify non-Latin character sets.

The PANOSE definition contains ten digits each of which currently describes up to sixteen variations.

This 10 byte series of numbers are used to describe the visual characteristics of a given typeface. These characteristics are then used to associate the font with other fonts of similar appearance having different names. The variables for each digit are listed below. The specifications for each variable can be obtained in the specification PANOSE v2.0 Numerical Evaluation from available from Microsoft.

 

Table 19 : PANOSE

Type Name
uint8_t bFamilyType;
uint8_t bSerifStyle;
uint8_t bWeight;
uint8_t bProportion;
uint8_t bContrast;
uint8_t bStrokeVariation;
uint8_t bArmStyle;
uint8_t bLetterform;
uint8_t bMidline;
uint8_t bXHeight;


Table 20 : bFamilyType

Bit Meaning
0 Any
1 No Fit
2 Text and Display
3 Script
4 Decorative
5 Pictorial


Table 21 : bSerifStyle

Bit Meaning
0 Any
1 No Fit
2 Cove
3 Obtuse Cove
4 Square Cove
5 Obtuse Square Cove
6 Square
7 Thin
8 Bone
9 Exaggerated
10 Triangle
11 Normal Sans
12 Obtuse Sans
13 Perp Sans
14 Flared
15 Rounded


Table 22 : bWeight

Bit Meaning
0 Any
1 No Fit
2 Very Light
3 Light
4 Thin
5 Book
6 Medium
7 Demi
8 Bold
9 Heavy
10 Black
11 Nord


Table 23 : bProportion

Bit Meaning
0 Any
1 No Fit
2 Old Style
3 Modern
4 Even Width
5 Expanded
6 Condensed
7 Very Expanded
8 Very Condensed
9 Monospaced


Table 24 : bContrast

Bit Meaning
0 Any
1 No Fit
2 None
3 Very Low
4 Low
5 Medium Low
6 Medium
7 Medium High
8 High
9 Very High


Table 25 : bStrokeVariatoon

Bit Meaning
0 Any
1 No Fit
2 Gradual/Diagonal
3 Gradual/Transitional
4 Gradual/Vertical
5 Gradual/Horizontal
6 Rapid/Vertical
7 Rapid/Horizontal
8 Instant/Vertical


Table 26 : bArmStyle

Bit Meaning
0 Any
1 No Fit
2 Straight Arms/Horizontal
3 Straight Arms/Wedge
4 Straight Arms/Vertical
5 Straight Arms/Single Serif
6 Straight Arms/Double Serif
7 Non-Straight Arms/Horizontal
8 Non-Straight Arms/Wedge
9 Non-Straight Arms/Vertical
10 Non-Straight Arms/Single Serif
11 Non-Straight Arms/Double Serif


Table 27 : bLetterform

Bit Meaning
0 Any
1 No Fit
2 Normal/Contact
3 Normal/Weighted
4 Normal/Boxed
5 Normal/Flattened
6 Normal/Rounded
7 Normal/Off Center
8 Normal/Square
9 Oblique/Contact
10 Oblique/Weighted
11 Oblique/Boxed
12 Oblique/Flattened
13 Oblique/Rounded
14 Oblique/Off Center
15 Oblique/Square


Table 28

bMidline
Bit Meaning
0 Any
1 No Fit
2 Standard/Trimmed
3 Standard/Pointed
4 Standard/Serifed
5 High/Trimmed
6 High/Pointed
7 High/Serifed
8 Constant/Trimmed
9 Constant/Pointed
10 Constant/Serifed
11 Low/Trimmed
12 Low/Pointed
13 Low/Serifed


Table 29 : bXHeight

Bit Meaning
0 Any
1 No Fit
2 Constant/Small
3 Constant/Standard
4 Constant/Large
5 Ducking/Small
6 Ducking/Standard
7 Ducking/Large

ulUnicodeRange

ulUnicodeRange is an array of four 32-bit unsigned integers treated as a single bitfield, indicating the Unicode blocks or ranges covered by the font, with a value of 1 signifying that the given block or range is considered "covered" and a value of 0 signifying that it is not.

The exact semantics of "covered" are not defined, which gives font designers some flexibility. To illustrate, consider bit 33, which corresponds to the Unicode Currency Symbols block (U+20A0–U+20CF).

As of Unicode 8.0, this block has 31 defined characters. One (U+20A0 EURO-CURRENCY SIGN) does not correspond to any actual currency used either at present or in the past. Several others (e.g., U+20A3 FRENCH FRANC SIGN) correspond to currencies no longer in use. Moreover, as new currency symbols are created, new characters may be added to this block in the future, as, for example, U+20BE LARI SYMBOL was added to Unicode 8.0.

To require a font vendor to cover every defined character in this block in order to claim "coverage" by bit 33 of the ulUnicodeRange field is therefore unreasonable. Some of the characters are unlikely to be needed in practice, and complete coverage of the block for a given version of the Unicode standard may not be complete coverage for a later version.

The mapping of bits in this field to Unicode blocks and ranges is to be found in the OpenType spec.

achVendID

achVendID is a 4-byte character array specifying the font vendor identification.

It is not the royalty owner of the original artwork but the company responsible for the marketing and distribution of the typeface that is being classified. It is reasonable to assume that there will be 6 vendors of ITC Zapf Dingbats for use on desktop platforms in the near future (if not already). It is also likely that the vendors will have other inherent benefits in their fonts (more kern pairs, unregularized data, hand hinted, etc.). This identifier will allow for the correct vendors type to be used over another, possibly inferior, font file. These id's are assigned by Microsoft; the currently assigned vendor id's are shown in Table 30.

Table 30 : Vendor identification

Vendor ID Vendor Name
'ACG ' AGFA Compugraphic
'Adbe' Adobe
'Appl' Apple
'Alts' Altsys
'B? ' Bigelow & Holmes
'Bert' Berthold
'Bits' Bitstream
'DTC ' Digital Typeface Corp.
'HP ' Hewlett-Packard
'IBM ' IBM
'KATF' Kingsley/ATF
'Lans' Lanston Type Co., Ltd.
'LETR' Letraset
'Lino' Linotype
'Mono' Monotype
'MS ' Microsoft
'QMSI' QMS/Imagen
'URW ' URW
ZSFT ZSoft

fsSelection

fsSelection is a 2-byte bit field containing information concerning the nature of the font patterns, as follows:

Table 31 : Font patterns

Bit # C definition Description
0 ITALIC Font contains Italic characters, otherwise they are upright.
1 UNDERSCORE Characters are underscored.
2 NEGATIVE Characters have their foreground and background reversed.
3 OUTLINED Outline (hollow) characters, otherwise they are solid.
4 STRIKEOUT Characters are overstruck.
5 BOLD Characters are emboldened.

Platform-specific Information

This table is not fully used by macOS; however, it is used extensively by other platforms and non-Apple products.

Font vendors should fill in all the data in this table accurately, even if the font is intended for use on macOS only.

Many fonts have inaccurate information in their 'OS/2' table. Apple recommends that macOS client applications not depend on accurate information in the 'OS/2' table.

Dependencies

A number of fields in the 'OS/2' table replicate data found elsewhere in the font; most notably, the various ascent and descent fields mirror some of the contents of the horizontal header table. The macOS derives ascent and descent information from the latter; Windows from the former.

Fonts intended to be used on both platforms must have consistent values for the font's ascent and descent in these two tables.