The OS/2 table, named after IBM’s operating system where it began, holds
the metrics and classifications Windows uses: weight and width, embedding permissions,
line spacing, which Unicode ranges and code pages the font covers, and style bits.
OpenType requires it; Apple’s specification makes it optional. There are six versions,
0 to 5, and each adds fields at the end, so a reader must check the version and the
table’s length before reading the later fields. Version 4 or later is strongly
recommended.
Fields
| Offset | Type | Name | From version | Description |
|---|---|---|---|---|
0 | uint16 | version | 0 | 0 to 5. |
2 | FWORD | xAvgCharWidth | 0 | The average advance width of all glyphs with non-zero width. Versions 0 to 2 used a weighted average of the lower-case letters and space instead (a 64, b 14, c 27, d 35, e 100, f 20, g 14, h 42, i 63, j 3, k 6, l 35, m 20, n 56, o 56, p 17, q 4, r 49, s 56, t 71, u 31, v 10, w 18, x 3, y 18, z 2, space 166, divided by 1,000), and many fonts still carry that value. Not reliable for layout. |
4 | uint16 | usWeightClass | 0 | Visual weight, 1 to 1,000: see weight classes. |
6 | uint16 | usWidthClass | 0 | 1 to 9: see width classes. |
8 | uint16 | fsType | 0 | Embedding permissions: see fsType. |
10 | FWORD | ySubscriptXSize | 0 | Recommended horizontal size of subscripts, in design units: 205 in a 2,048-unit em means a tenth of the em. |
12 | FWORD | ySubscriptYSize | 0 | Recommended vertical size of subscripts. |
14 | FWORD | ySubscriptXOffset | 0 | Horizontal offset of subscripts; usually 0 except in slanted fonts. |
16 | FWORD | ySubscriptYOffset | 0 | Vertical offset of subscripts, positive downwards from the baseline. |
18 | FWORD | ySuperscriptXSize | 0 | Recommended horizontal size of superscripts. |
20 | FWORD | ySuperscriptYSize | 0 | Recommended vertical size of superscripts. |
22 | FWORD | ySuperscriptXOffset | 0 | Horizontal offset of superscripts. |
24 | FWORD | ySuperscriptYOffset | 0 | Vertical offset of superscripts, positive upwards. |
26 | FWORD | yStrikeoutSize | 0 | Thickness of the strikeout stroke, normally that of the em dash and of the underline in post. |
28 | FWORD | yStrikeoutPosition | 0 | Position of the top of the strikeout stroke above the baseline. |
30 | int16 | sFamilyClass | 0 | High byte: IBM family class; low byte: subclass. |
32 | uint8 × 10 | panose | 0 | The PANOSE classification. |
42 | uint32 × 4 | ulUnicodeRange1 to 4 | 0 (bits defined from 1) | 128 bits, one per group of Unicode blocks the font supports. |
58 | Tag | achVendID | 0 | The vendor’s four-character ID, from Microsoft’s registry, or blank (zeros or four spaces). By convention only registered IDs are all upper case. |
62 | uint16 | fsSelection | 0 | Style bits: see fsSelection. |
64 | uint16 | usFirstCharIndex | 0 | The lowest code in the Windows cmap subtable (3, 0 or 1), or 0xFFFF if it is above U+FFFF. |
66 | uint16 | usLastCharIndex | 0 | The highest code, or 0xFFFF if the font has characters above U+FFFF. |
68 | FWORD | sTypoAscender | 0 | Typographic ascender, for portable line spacing. In CJK fonts for vertical text, the top of the ideographic em box. |
70 | FWORD | sTypoDescender | 0 | Typographic descender, usually negative. |
72 | FWORD | sTypoLineGap | 0 | Typographic line gap. Default line spacing is ascender − descender + line gap. |
74 | UFWORD | usWinAscent | 0 | Height above the baseline of the clipping region: Windows GDI clips anything above it, so it should be at least yMax. |
76 | UFWORD | usWinDescent | 0 | Depth below the baseline of the clipping region, as a positive number; at least −yMin. A VDMX table overrides both at the sizes it covers. |
78 | uint32 × 2 | ulCodePageRange1, 2 | 1 | 64 bits, one per code page the font supports. |
86 | FWORD | sxHeight | 2 | The x-height: by default the top of the glyph for U+0078 x, or 0 if there is none. |
88 | FWORD | sCapHeight | 2 | The capital height: by default the top of U+0048 H, or 0. |
90 | uint16 | usDefaultChar | 2 | The character to show for missing ones; 0 means glyph 0. Cannot name characters above U+FFFF; discouraged. |
92 | uint16 | usBreakChar | 2 | The word break character, usually U+0020. Discouraged for the same reason. |
94 | uint16 | usMaxContext | 2 | The longest glyph context any layout feature uses: 2 for pair kerning, 3 for an “ffi” ligature. |
96 | uint16 | usLowerOpticalPointSize | 5 | The smallest size, in twips (twentieths of a point), this optical-size design is for, inclusive; 0 if the font has no optical sizes. Superseded by STAT. |
98 | uint16 | usUpperOpticalPointSize | 5 | The size it is for up to, exclusive; 0xFFFF means no limit, and is the value for fonts without optical sizes. |
| Version | Defined in | Length | Notes |
|---|---|---|---|
| 0 | TrueType 1.5 | 78 bytes | Apple’s documentation stops at usLastCharIndex, so some old fonts have a 68-byte version 0 table. |
| 1 | TrueType 1.66 | 86 bytes | Adds the code page ranges. |
| 2 | OpenType 1.1 | 96 bytes | Adds x-height, cap height, default and break characters, maximum context. |
| 3 | OpenType 1.4 | 96 bytes | Same fields; Unicode range bits for Unicode 3.2; embedding bits made exclusive. |
| 4 | OpenType 1.5 | 96 bytes | Same fields; fsSelection bits 7 to 9; Unicode range bits for Unicode 5.1. |
| 5 | OpenType 1.7 | 100 bytes | Adds the optical point size range. |
Weight classes
Any value from 1 to 1,000 is valid, on the same scale as the wght
variation axis. The usual values, with their windows.h names:
| Value | Weight | C name |
|---|---|---|
| 100 | Thin | FW_THIN |
| 200 | Extra-light (Ultra-light) | FW_EXTRALIGHT |
| 300 | Light | FW_LIGHT |
| 400 | Normal (Regular) | FW_NORMAL |
| 500 | Medium | FW_MEDIUM |
| 600 | Semi-bold (Demi-bold) | FW_SEMIBOLD |
| 700 | Bold | FW_BOLD |
| 800 | Extra-bold (Ultra-bold) | FW_EXTRABOLD |
| 900 | Black (Heavy) | FW_BLACK |
Width classes
| Value | Width | C name | % of normal (wdth) |
|---|---|---|---|
| 1 | Ultra-condensed | FWIDTH_ULTRA_CONDENSED | 50 |
| 2 | Extra-condensed | FWIDTH_EXTRA_CONDENSED | 62.5 |
| 3 | Condensed | FWIDTH_CONDENSED | 75 |
| 4 | Semi-condensed | FWIDTH_SEMI_CONDENSED | 87.5 |
| 5 | Medium (normal) | FWIDTH_NORMAL | 100 |
| 6 | Semi-expanded | FWIDTH_SEMI_EXPANDED | 112.5 |
| 7 | Expanded | FWIDTH_EXPANDED | 125 |
| 8 | Extra-expanded | FWIDTH_EXTRA_EXPANDED | 150 |
| 9 | Ultra-expanded | FWIDTH_ULTRA_EXPANDED | 200 |
fsType: embedding permissions
| Bits | Mask | Meaning |
|---|---|---|
| 0 to 3 | 0x000F | Usage permissions, one of the values below. Bit 0 is permanently reserved and must be 0. |
| 4 to 7 | 0x00F0 | Reserved; 0. |
| 8 | 0x0100 | No subsetting: the font must not be subset before it is embedded. |
| 9 | 0x0200 | Bitmap embedding only: only the font’s bitmaps may be embedded, no outlines; a font with no bitmaps cannot be embedded. |
| 10 to 15 | 0xFC00 | Reserved; 0. |
| Value of bits 0 to 3 | Permission |
|---|---|
| 0 | Installable embedding: the font may be embedded and installed permanently on the remote system, whose user gets the same rights as the purchaser. |
| 2 | Restricted licence embedding: the font must not be modified, embedded or exchanged without the owner’s explicit permission. |
| 4 | Preview and print embedding: the font may be embedded and loaded temporarily to view or print the document, which must be opened read-only. |
| 8 | Editable embedding: as preview and print, but the document may be edited and saved. |
From version 3 the four values are exclusive. Versions 0 to 2 allowed several bits at once, the least restrictive winning, and some fonts set both 4 and 8. Versions 0 and 1 define only bits 0 to 3. Apple’s documentation gives a meaning to bit 1 alone, from a draft of the table, and some early fonts wrongly used the value 1. Software that loads a font embedded for preview or editing must delete it when the document is closed.
fsSelection
| Bit | Mask | Name | Meaning |
|---|---|---|---|
| 0 | 0x0001 | ITALIC | Italic or oblique glyphs. Must match macStyle bit 1 in head. |
| 1 | 0x0002 | UNDERSCORE | Glyphs are underscored. |
| 2 | 0x0004 | NEGATIVE | Foreground and background reversed. |
| 3 | 0x0008 | OUTLINED | Hollow outline glyphs. |
| 4 | 0x0010 | STRIKEOUT | Glyphs are struck through. |
| 5 | 0x0020 | BOLD | Bold. Must match macStyle bit 0. |
| 6 | 0x0040 | REGULAR | The regular style of the family; bits 0 and 5 must then be clear. |
| 7 | 0x0080 | USE_TYPO_METRICS | Use sTypoAscender − sTypoDescender + sTypoLineGap for line spacing, not the usWin values. Version 4 and later. |
| 8 | 0x0100 | WWS | The family and subfamily names already fit the weight, width and slope model, so name IDs 21 and 22 are not needed. Version 4 and later. |
| 9 | 0x0200 | OBLIQUE | An oblique rather than a true italic design, for software such as CSS that tells them apart. Version 4 and later. |
| 10 to 15 | 0xFC00 | reserved | 0. Bit 15 has been used by some legacy software; its use is deprecated. |
In versions 0 to 3 only bits 0 to 6 are defined, and readers should ignore the rest. Bits 1 to 4 are rarely used and mark decorative or special-purpose fonts.
IBM family classes
The high byte of sFamilyClass is the class and the low byte the
subclass, as IBM defined them. In every class, subclass 0 is “no classification” and
15 “miscellaneous”; the subclasses not listed are reserved. Classes 6, 11, 13 and 14
are reserved.
| Class | Name | Subclasses |
|---|---|---|
| 0 | No classification | – |
| 1 | Oldstyle serifs | 1 IBM rounded legibility, 2 Garalde, 3 Venetian, 4 modified Venetian, 5 Dutch modern, 6 Dutch traditional, 7 contemporary, 8 calligraphic |
| 2 | Transitional serifs | 1 direct line, 2 script |
| 3 | Modern serifs | 1 Italian, 2 script |
| 4 | Clarendon serifs | 1 Clarendon, 2 modern, 3 traditional, 4 newspaper, 5 stub serif, 6 monotone, 7 typewriter |
| 5 | Slab serifs | 1 monotone, 2 humanist, 3 geometric, 4 Swiss, 5 typewriter |
| 7 | Freeform serifs | 1 modern |
| 8 | Sans serif | 1 IBM neo-grotesque gothic, 2 humanist, 3 low-x round geometric, 4 high-x round geometric, 5 neo-grotesque gothic, 6 modified neo-grotesque gothic, 9 typewriter gothic, 10 matrix |
| 9 | Ornamentals | 1 engraver, 2 black letter, 3 decorative, 4 three-dimensional |
| 10 | Scripts | 1 uncial, 2 brush joined, 3 formal joined, 4 monotone joined, 5 calligraphic, 6 brush unjoined, 7 formal unjoined, 8 monotone unjoined |
| 12 | Symbolic | 3 mixed serif, 6 oldstyle serif, 7 neo-grotesque sans serif |
For example, 0x0805 is a neo-grotesque gothic sans serif, the class of
Helvetica.
PANOSE
Ten bytes that describe how the typeface looks, so that software can find a similar font. The first byte, the family kind, decides what the other nine mean. For Latin text faces (family kind 2) they are, in order:
| Byte | Name | Byte | Name |
|---|---|---|---|
| 0 | bFamilyType | 5 | bStrokeVariation |
| 1 | bSerifStyle | 6 | bArmStyle |
| 2 | bWeight | 7 | bLetterform |
| 3 | bProportion | 8 | bMidline |
| 4 | bContrast | 9 | bXHeight |
Family kind 3, Latin hand written, makes byte 1 the tool kind instead, and so on; some software uses family kind 5, Latin symbol, to spot symbol fonts, and the proportion byte to spot monospaced ones. The values of each byte are defined in the PANOSE Classification Metrics Guide, which OpenType names as the normative source and no longer repeats; this site does not list them yet. A variable font can carry only one PANOSE value, normally that of its default instance. All zeros means “any”, no classification given.
Unicode range bits
Bit n is in ulUnicodeRange1 for 0 to 31,
ulUnicodeRange2 for 32 to 63 and so on, counting from the least
significant bit of each uint32. A set bit says the font is functional for
those ranges, as judged by its designer. The ranges ran out with Unicode 5.1; the
dlng and slng entries of the meta table are the
newer way to declare coverage.
| Bit | Ranges |
|---|---|
| 0 | Basic Latin 0000–007F |
| 1 | Latin-1 Supplement 0080–00FF |
| 2 | Latin Extended-A 0100–017F |
| 3 | Latin Extended-B 0180–024F |
| 4 | IPA Extensions 0250–02AF; Phonetic Extensions 1D00–1D7F; Phonetic Extensions Supplement 1D80–1DBF |
| 5 | Spacing Modifier Letters 02B0–02FF; Modifier Tone Letters A700–A71F |
| 6 | Combining Diacritical Marks 0300–036F; Combining Diacritical Marks Supplement 1DC0–1DFF |
| 7 | Greek and Coptic 0370–03FF |
| 8 | Coptic 2C80–2CFF (versions 1 and 2: “Greek Symbols and Coptic”) |
| 9 | Cyrillic 0400–04FF; Cyrillic Supplement 0500–052F; Cyrillic Extended-A 2DE0–2DFF; Cyrillic Extended-B A640–A69F |
| 10 | Armenian 0530–058F |
| 11 | Hebrew 0590–05FF |
| 12 | Vai A500–A63F (versions 1 and 2: “Hebrew Extended”) |
| 13 | Arabic 0600–06FF; Arabic Supplement 0750–077F |
| 14 | NKo 07C0–07FF (versions 1 and 2: “Arabic Extended”) |
| 15 | Devanagari 0900–097F |
| 16 | Bangla 0980–09FF |
| 17 | Gurmukhi 0A00–0A7F |
| 18 | Gujarati 0A80–0AFF |
| 19 | Odia 0B00–0B7F |
| 20 | Tamil 0B80–0BFF |
| 21 | Telugu 0C00–0C7F |
| 22 | Kannada 0C80–0CFF |
| 23 | Malayalam 0D00–0D7F |
| 24 | Thai 0E00–0E7F |
| 25 | Lao 0E80–0EFF |
| 26 | Georgian 10A0–10FF; Georgian Supplement 2D00–2D2F |
| 27 | Balinese 1B00–1B7F (versions 1 and 2: “Georgian Extended”) |
| 28 | Hangul Jamo 1100–11FF |
| 29 | Latin Extended Additional 1E00–1EFF; Latin Extended-C 2C60–2C7F; Latin Extended-D A720–A7FF |
| 30 | Greek Extended 1F00–1FFF |
| 31 | General Punctuation 2000–206F; Supplemental Punctuation 2E00–2E7F |
| 32 | Superscripts And Subscripts 2070–209F |
| 33 | Currency Symbols 20A0–20CF |
| 34 | Combining Diacritical Marks For Symbols 20D0–20FF |
| 35 | Letterlike Symbols 2100–214F |
| 36 | Number Forms 2150–218F |
| 37 | Arrows 2190–21FF; Supplemental Arrows-A 27F0–27FF; Supplemental Arrows-B 2900–297F; Miscellaneous Symbols and Arrows 2B00–2BFF |
| 38 | Mathematical Operators 2200–22FF; Supplemental Mathematical Operators 2A00–2AFF; Miscellaneous Mathematical Symbols-A 27C0–27EF; Miscellaneous Mathematical Symbols-B 2980–29FF |
| 39 | Miscellaneous Technical 2300–23FF |
| 40 | Control Pictures 2400–243F |
| 41 | Optical Character Recognition 2440–245F |
| 42 | Enclosed Alphanumerics 2460–24FF |
| 43 | Box Drawing 2500–257F |
| 44 | Block Elements 2580–259F |
| 45 | Geometric Shapes 25A0–25FF |
| 46 | Miscellaneous Symbols 2600–26FF |
| 47 | Dingbats 2700–27BF |
| 48 | CJK Symbols And Punctuation 3000–303F |
| 49 | Hiragana 3040–309F |
| 50 | Katakana 30A0–30FF; Katakana Phonetic Extensions 31F0–31FF |
| 51 | Bopomofo 3100–312F; Bopomofo Extended 31A0–31BF |
| 52 | Hangul Compatibility Jamo 3130–318F |
| 53 | Phags-pa A840–A87F (versions 1 and 2: “CJK Miscellaneous”) |
| 54 | Enclosed CJK Letters And Months 3200–32FF |
| 55 | CJK Compatibility 3300–33FF |
| 56 | Hangul Syllables AC00–D7AF |
| 57 | Non-Plane 0: at least one character above U+FFFF |
| 58 | Phoenician 10900–1091F |
| 59 | CJK Unified Ideographs 4E00–9FFF; CJK Radicals Supplement 2E80–2EFF; Kangxi Radicals 2F00–2FDF; Ideographic Description Characters 2FF0–2FFF; CJK Unified Ideographs Extension A 3400–4DBF; Extension B 20000–2A6DF; Kanbun 3190–319F |
| 60 | Private Use Area (plane 0) E000–F8FF |
| 61 | CJK Strokes 31C0–31EF; CJK Compatibility Ideographs F900–FAFF; CJK Compatibility Ideographs Supplement 2F800–2FA1F |
| 62 | Alphabetic Presentation Forms FB00–FB4F |
| 63 | Arabic Presentation Forms-A FB50–FDFF |
| 64 | Combining Half Marks FE20–FE2F |
| 65 | Vertical Forms FE10–FE1F; CJK Compatibility Forms FE30–FE4F |
| 66 | Small Form Variants FE50–FE6F |
| 67 | Arabic Presentation Forms-B FE70–FEFF |
| 68 | Halfwidth And Fullwidth Forms FF00–FFEF |
| 69 | Specials FFF0–FFFF |
| 70 | Tibetan 0F00–0FFF |
| 71 | Syriac 0700–074F |
| 72 | Thaana 0780–07BF |
| 73 | Sinhala 0D80–0DFF |
| 74 | Myanmar 1000–109F |
| 75 | Ethiopic 1200–137F; Ethiopic Supplement 1380–139F; Ethiopic Extended 2D80–2DDF |
| 76 | Cherokee 13A0–13FF |
| 77 | Unified Canadian Aboriginal Syllabics 1400–167F |
| 78 | Ogham 1680–169F |
| 79 | Runic 16A0–16FF |
| 80 | Khmer 1780–17FF; Khmer Symbols 19E0–19FF |
| 81 | Mongolian 1800–18AF |
| 82 | Braille Patterns 2800–28FF |
| 83 | Yi Syllables A000–A48F; Yi Radicals A490–A4CF |
| 84 | Tagalog 1700–171F; Hanunoo 1720–173F; Buhid 1740–175F; Tagbanwa 1760–177F |
| 85 | Old Italic 10300–1032F |
| 86 | Gothic 10330–1034F |
| 87 | Deseret 10400–1044F |
| 88 | Byzantine Musical Symbols 1D000–1D0FF; Musical Symbols 1D100–1D1FF; Ancient Greek Musical Notation 1D200–1D24F |
| 89 | Mathematical Alphanumeric Symbols 1D400–1D7FF |
| 90 | Private Use (plane 15) F0000–FFFFD; Private Use (plane 16) 100000–10FFFD |
| 91 | Variation Selectors FE00–FE0F; Variation Selectors Supplement E0100–E01EF |
| 92 | Tags E0000–E007F |
| 93 | Limbu 1900–194F |
| 94 | Tai Le 1950–197F |
| 95 | New Tai Lue 1980–19DF |
| 96 | Buginese 1A00–1A1F |
| 97 | Glagolitic 2C00–2C5F |
| 98 | Tifinagh 2D30–2D7F |
| 99 | Yijing Hexagram Symbols 4DC0–4DFF |
| 100 | Syloti Nagri A800–A82F |
| 101 | Linear B Syllabary 10000–1007F; Linear B Ideograms 10080–100FF; Aegean Numbers 10100–1013F |
| 102 | Ancient Greek Numbers 10140–1018F |
| 103 | Ugaritic 10380–1039F |
| 104 | Old Persian 103A0–103DF |
| 105 | Shavian 10450–1047F |
| 106 | Osmanya 10480–104AF |
| 107 | Cypriot Syllabary 10800–1083F |
| 108 | Kharoshthi 10A00–10A5F |
| 109 | Tai Xuan Jing Symbols 1D300–1D35F |
| 110 | Cuneiform 12000–123FF; Cuneiform Numbers and Punctuation 12400–1247F |
| 111 | Counting Rod Numerals 1D360–1D37F |
| 112 | Sundanese 1B80–1BBF |
| 113 | Lepcha 1C00–1C4F |
| 114 | Ol Chiki 1C50–1C7F |
| 115 | Saurashtra A880–A8DF |
| 116 | Kayah Li A900–A92F |
| 117 | Rejang A930–A95F |
| 118 | Cham AA00–AA5F |
| 119 | Ancient Symbols 10190–101CF |
| 120 | Phaistos Disc 101D0–101FF |
| 121 | Carian 102A0–102DF; Lycian 10280–1029F; Lydian 10920–1093F |
| 122 | Domino Tiles 1F030–1F09F; Mahjong Tiles 1F000–1F02F |
| 123 to 127 | Reserved; 0 |
Version 1 defined bits 0 to 69 only, version 2 (from OpenType 1.3) up to 83, version 3 up to 92, and version 4 bit 58 and 93 to 122. The old meanings given in brackets were dropped in version 2 (bit 53 in version 3) and the bits reassigned in version 4; in a version 1 or 2 table the old meaning may be the one intended.
Code page bits
Bits 0 to 31 are in ulCodePageRange1, 32 to 63 in
ulCodePageRange2. If the symbol bit (31) is set and the font has a Windows
Unicode cmap subtable, the characters U+F000 to U+F0FF form the symbol
character set.
| Bit | Code page | Description | Bit | Code page | Description |
|---|---|---|---|---|---|
| 0 | 1252 | Latin 1 | 32 to 47 | – | Reserved for OEM |
| 1 | 1250 | Latin 2: Eastern Europe | 48 | 869 | IBM Greek |
| 2 | 1251 | Cyrillic | 49 | 866 | MS-DOS Russian |
| 3 | 1253 | Greek | 50 | 865 | MS-DOS Nordic |
| 4 | 1254 | Turkish | 51 | 864 | Arabic |
| 5 | 1255 | Hebrew | 52 | 863 | MS-DOS Canadian French |
| 6 | 1256 | Arabic | 53 | 862 | Hebrew |
| 7 | 1257 | Windows Baltic | 54 | 861 | MS-DOS Icelandic |
| 8 | 1258 | Vietnamese (from version 2) | 55 | 860 | MS-DOS Portuguese |
| 9 to 15 | – | Reserved for alternate ANSI | 56 | 857 | IBM Turkish |
| 16 | 874 | Thai | 57 | 855 | IBM Cyrillic; mainly Russian |
| 17 | 932 | JIS/Japan | 58 | 852 | Latin 2 |
| 18 | 936 | Chinese: Simplified (PRC and Singapore) | 59 | 775 | MS-DOS Baltic |
| 19 | 949 | Korean Wansung | 60 | 737 | Greek; former 437 G |
| 20 | 950 | Chinese: Traditional (Taiwan and Hong Kong SAR) | 61 | 708 | Arabic; ASMO 708 |
| 21 | 1361 | Korean Johab | 62 | 850 | WE/Latin 1 |
| 22 to 28 | – | Reserved for alternate ANSI or OEM | 63 | 437 | US |
| 29 | – | Macintosh character set (US Roman) | |||
| 30 | – | OEM character set | |||
| 31 | – | Symbol character set |
In variable fonts
A variable font should set USE_TYPO_METRICS and make the
hhea line metrics equal to the sTypo ones. Metrics that change
with the design are varied through the MVAR table, keyed by these tags:
cpht sCapHeight, hasc sTypoAscender, hdsc
sTypoDescender, hlgp sTypoLineGap, xhgt sxHeight,
hcla usWinAscent, hcld usWinDescent, stro
yStrikeoutPosition, strs yStrikeoutSize, sbxo
ySubscriptXOffset, sbxs ySubscriptXSize, sbyo
ySubscriptYOffset, sbys ySubscriptYSize, spxo
ySuperscriptXOffset, spxs ySuperscriptXSize, spyo
ySuperscriptYOffset, spys ySuperscriptYSize. Weight, width and optical
size come from the wght, wdth and opsz axes
instead; a wdth above 200 gives width class 9.
Example
The 96-byte version 2 OS/2 table of KaTeX’s Size2 Regular font:
00000000 00 02 03 73 01 90 00 05 00 00 02 8A 02 BC 00 00
00000010 00 8C 02 8A 02 BC 00 00 01 E0 00 31 01 02 00 00
00000020 00 00 00 00 00 00 00 00 00 00 80 00 00 EF 10 00
00000030 EC ED 00 00 00 00 00 00 00 00 50 66 45 64 00 40
00000040 00 20 2A 06 03 20 FF 38 00 5A 05 50 03 5E 20 00
00000050 00 8F 5E 03 00 00 00 00 00 00 00 00 00 20 00 01
- Version 2; average width 883; weight 400, normal; width 5, normal;
fsType0, installable embedding. - Subscripts 650 × 700, 140 below the baseline; superscripts 650 × 700, 480 above; strikeout 49 thick at 258.
- No family class and PANOSE all zeros: not classified.
- Unicode ranges
800000EF1000ECED0 0: bits 0 to 3, 5 to 7 and 31 (Latin, modifier letters, combining marks, Greek, punctuation), and 32, 34, 35, 37 to 39, 42, 43, 45 to 47 and 60 (sub- and superscripts, symbols, arrows, mathematical operators, technical, box drawing, geometric shapes, dingbats, private use). - Vendor
PfEd, the ID FontForge writes by default;fsSelection0x0040, regular. - Characters U+0020 to U+2A06. Typographic ascender 800, descender −200, line gap
90; Windows ascent 1,360 and descent 862, matching
yMaxand −yMininhead. - Code pages
2000008F5E030000: 1252, 1250, 1251, 1253, 1257 and Macintosh (bits 0 to 3, 7, 29), and 869, 866, 855, 852, 775, 737 and 850 (bits 48, 49, 57 to 60, 62). - x-height and cap height 0, default character 0, break character U+0020, maximum context 1.