reified
Version:
JS Binary Data API. Structs, arrays, bitfields, and numbers. Reify and Reference like nobody's business.
964 lines (953 loc) • 36.8 kB
Markdown
# TTF Font File Format
TTF file format mapping as an example and to explore the API.
## Types
```javascript
‹FontIndex›(12b)
| version: ‹TTFVersion›(4b)[ 4 ‹Uint8› ]
| tableCount: ‹Uint16› // Table
| range: ‹Uint16›
| selector: ‹Uint16›
| shift: ‹Uint16›
‹Table›(16b)
| tag: ‹CharArray›(4b) //name of table type
| checksum: ‹Uint32›
| contents: ‹VoidPtr› //points to below table types
| length: ‹Uint32›
‹Head›(54b)
| version: ‹Version›(4b)[ 4 ‹Uint8› ]
| fontRevision: ‹Int32›
| checkSumAdj: ‹Uint32›
| magicNumber: ‹Uint32›
| flags: ‹Uint16›
| unitsPerEm: ‹Uint16›
| created: ‹LongDateTime›(8b) { lo: ‹Uint32› | hi: ‹Uint32› }
| modified: ‹LongDateTime›(8b) { lo: ‹Uint32› | hi: ‹Uint32› }
| min: ‹Point›(4b) { x: ‹Int16› | y: ‹Int16› }
| max: ‹Point›(4b) { x: ‹Int16› | y: ‹Int16› }
| macStyle: ‹Uint16›
| lowestRecPPEM: ‹Uint16›
| fontDirHint: ‹Int16›
| indexToLocFormat: ‹Int16›
| glyphDataFormat: ‹Int16›
‹OS2›(96b)
| version: ‹Uint16›
| avgCharWidth: ‹Int16›
| weightClass: ‹Uint16›
| widthClass: ‹Uint16›
| typer: ‹Uint16›
| subscript: ‹Metrics›(8b)
| size: ‹Point›(4b) { x: ‹Int16› | y: ‹Int16› }
| position: ‹Point›(4b) { x: ‹Int16› | y: ‹Int16› }
| superscript: ‹Metrics›(8b)
| size: ‹Point›(4b) { x: ‹Int16› | y: ‹Int16› }
| position: ‹Point›(4b) { x: ‹Int16› | y: ‹Int16› }
| strikeout: ‹Strikeout›(4b) { size: ‹Int16› | position: ‹Int16› }
| class: ‹Int8x2›(2b)[ 2 ‹Int8› ]
| panose: ‹PANOSE›(10b)
| familyType: ‹familyType›(8bit)
· 0x1 Text and Display
· 0x2 Script
· 0x4 Decorative
· 0x8 Pictorial
| serifStyle: ‹serifStyle›(8bit)
· 0x1 Cove
· 0x2 Obtuse Cove
· 0x4 Square Cove
· 0x8 Obtuse Square Cove
· 0x10 Square
· 0x20 Thin
· 0x40 Bone
· 0x80 Exaggerated
· 0x100 Triangle
· 0x200 Normal Sans
· 0x400 Obtuse Sans
· 0x800 Perp Sans
· 0x1000Flared
· 0x2000Rounded
| weight: ‹weight›(8bit)
· 0x1 Very Light
· 0x2 Light
· 0x4 Thin
· 0x8 Book
· 0x10 Medium
· 0x20 Demi
· 0x40 Bold
· 0x80 Heavy
· 0x100 Black
· 0x200 Nord
| proportion: ‹proportion›(8bit)
· 0x1 Old Style
· 0x2 Modern
· 0x4 Even Width
· 0x8 Expanded
· 0x10 Condensed
· 0x20 Very Expanded
· 0x40 Very Condensed
· 0x80 Monospaced
| contrast: ‹contrast›(8bit)
· 0x1 None
· 0x2 Very Low
· 0x4 Low
· 0x8 Medium Low
· 0x10 Medium
· 0x20 Medium High
· 0x40 High
· 0x80 Very High
| strokeVariation: ‹strokeVariation›(8bit)
· 0x1 Gradual/Diagonal
· 0x2 Gradual/Transitional
· 0x4 Gradual/Vertical
· 0x8 Gradual/Horizontal
· 0x10 Rapid/Vertical
· 0x20 Rapid/Horizontal
· 0x40 Instant/Vertical
| armStyle: ‹armStyle›(8bit)
· 0x1 Straight Arms/Horizontal
· 0x2 Straight Arms/Wedge
· 0x4 Straight Arms/Vertical
· 0x8 Straight Arms/Single Serif
· 0x10 Straight Arms/Double Serif
· 0x20 Non-Straight Arms/Horizontal
· 0x40 Non-Straight Arms/Wedge
· 0x80 Non-Straight Arms/Vertical
· 0x100 Non-Straight Arms/Single Serif
· 0x200 Non-Straight Arms/Double Serif
| letterform: ‹letterform›(8bit)
· 0x1 Normal/Contact
· 0x2 Normal/Weighted
· 0x4 Normal/Boxed
· 0x8 Normal/Flattened
· 0x10 Normal/Rounded
· 0x20 Normal/Off Center
· 0x40 Normal/Square
· 0x80 Oblique/Contact
· 0x100 Oblique/Weighted
· 0x200 Oblique/Boxed
· 0x400 Oblique/Flattened
· 0x800 Oblique/Rounded
· 0x1000Oblique/Off Center
· 0x2000Oblique/Square
| midline: ‹midline›(8bit)
· 0x1 Standard/Trimmed
· 0x2 Standard/Pointed
· 0x4 Standard/Serifed
· 0x8 High/Trimmed
· 0x10 High/Pointed
· 0x20 High/Serifed
· 0x40 Constant/Trimmed
· 0x80 Constant/Pointed
· 0x100 Constant/Serifed
· 0x200 Low/Trimmed
· 0x400 Low/Pointed
· 0x800 Low/Serifed
| xHeight: ‹xHeight›(8bit)
· 0x1 Constant/Small
· 0x2 Constant/Standard
· 0x4 Constant/Large
· 0x8 Ducking/Small
· 0x10 Ducking/Standard
· 0x20 Ducking/Large
| unicodePages: ‹UnicodePages›(16b)
| 0: ‹UnicodePages0›(32bit)
· 0x1 0000-007F
· 0x2 0080-00FF
· 0x4 0100-017F
· 0x8 0180-024F
· 0x10 0250-02AF,1D00-1D7F,1D80-1DBF
· 0x20 02B0-02FF,A700-A71F
· 0x40 0300-036F,1DC0-1DFF
· 0x80 0370-03FF
· 0x100 2C80-2CFF
· 0x200 0400-04FF,0500-052F,2DE0-2DFF,A640-A69F
· 0x400 0530-058F
· 0x800 0590-05FF
· 0x1000 A500-A63F
· 0x2000 0600-06FF,0750-077F
· 0x4000 07C0-07FF
· 0x8000 0900-097F
· 0x10000 0980-09FF
· 0x20000 0A00-0A7F
· 0x40000 0A80-0AFF
· 0x80000 0B00-0B7F
· 0x100000 0B80-0BFF
· 0x200000 0C00-0C7F
· 0x400000 0C80-0CFF
· 0x800000 0D00-0D7F
· 0x1000000 0E00-0E7F
· 0x2000000 0E80-0EFF
· 0x4000000 10A0-10FF,2D00-2D2F
· 0x8000000 1B00-1B7F
· 0x10000000 1100-11FF
· 0x20000000 1E00-1EFF,2C60-2C7F,A720-A7FF
· 0x40000000 1F00-1FFF
· 0x-80000000 2000-206F,2E00-2E7F
| 1: ‹UnicodePages1›(32bit)
· 0x1 2070-209F
· 0x2 20A0-20CF
· 0x4 20D0-20FF
· 0x8 2100-214F
· 0x10 2150-218F
· 0x20 2190-21FF,27F0-27FF,2900-297F,2B00-2BFF
· 0x40 2200-22FF,2A00-2AFF,27C0-27EF,2980-29FF
· 0x80 2300-23FF
· 0x100 2400-243F
· 0x200 2440-245F
· 0x400 2460-24FF
· 0x800 2500-257F
· 0x1000 2580-259F
· 0x2000 25A0-25FF
· 0x4000 2600-26FF
· 0x8000 2700-27BF
· 0x10000 3000-303F
· 0x20000 3040-309F
· 0x40000 30A0-30FF,31F0-31FF
· 0x80000 3100-312F,31A0-31BF
· 0x100000 3130-318F
· 0x200000 A840-A87F
· 0x400000 3200-32FF
· 0x800000 3300-33FF
· 0x1000000 AC00-D7AF
· 0x2000000 D800-DFFF
· 0x4000000 10900-1091F
· 0x8000000 4E00-9FFF,2E80-2EFF,2F00-2FDF,2FF0-2FFF,3400-4DBF,20000-2A6DF,3190-319F
· 0x10000000 E000-F8FF
· 0x20000000 31C0-31EF,F900-FAFF,2F800-2FA1F
· 0x40000000 FB00-FB4F
· 0x-80000000 FB50-FDFF
| 2: ‹UnicodePages2›(32bit)
· 0x1 FE20-FE2F
· 0x2 FE10-FE1F,FE30-FE4F
· 0x4 FE50-FE6F
· 0x8 FE70-FEFF
· 0x10 FF00-FFEF
· 0x20 FFF0-FFFF
· 0x40 0F00-0FFF
· 0x80 0700-074F
· 0x100 0780-07BF
· 0x200 0D80-0DFF
· 0x400 1000-109F
· 0x800 1200-137F,1380-139F,2D80-2DDF
· 0x1000 13A0-13FF
· 0x2000 1400-167F
· 0x4000 1680-169F
· 0x8000 16A0-16FF
· 0x10000 1780-17FF,19E0-19FF
· 0x20000 1800-18AF
· 0x40000 2800-28FF
· 0x80000 A000-A48F,A490-A4CF
· 0x100000 1700-171F,1720-173F,1740-175F,1760-177F
· 0x200000 10300-1032F
· 0x400000 10330-1034F
· 0x800000 10400-1044F
· 0x1000000 1D000-1D0FF,1D100-1D1FF,1D200-1D24F
· 0x2000000 1D400-1D7FF
· 0x4000000 FF000-FFFFD,100000-10FFFD
· 0x8000000 FE00-FE0F,E0100-E01EF
· 0x10000000 E0000-E007F
· 0x20000000 1900-194F
· 0x40000000 1950-197F
· 0x-80000000 1980-19DF
| 3: ‹UnicodePages3›(32bit)
· 0x1 1A00-1A1F
· 0x2 2C00-2C5F
· 0x4 2D30-2D7F
· 0x8 4DC0-4DFF
· 0x10 A800-A82F
· 0x20 10000-1007F,10080-100FF,10100-1013F
· 0x40 10140-1018F
· 0x80 10380-1039F
· 0x100 103A0-103DF
· 0x200 10450-1047F
· 0x400 10480-104AF
· 0x800 10800-1083F
· 0x1000 10A00-10A5F
· 0x2000 1D300-1D35F
· 0x4000 12000-123FF,12400-1247F
· 0x8000 1D360-1D37F
· 0x10000 1B80-1BBF
· 0x20000 1C00-1C4F
· 0x40000 1C50-1C7F
· 0x80000 A880-A8DF
· 0x100000 A900-A92F
· 0x200000 A930-A95F
· 0x400000 AA00-AA5F
· 0x800000 10190-101CF
· 0x1000000 101D0-101FF
· 0x2000000 102A0-102DF,10280-1029F,10920-1093F
· 0x4000000 1F030-1F09F,1F000-1F02F
| vendorID: ‹CharArray›(4b)
| selection: ‹Uint16›
| firstChar: ‹Uint16›
| lastChar: ‹Uint16›
| typographic: ‹Typographic›(6b) { ascender: ‹Int16› | descender: ‹Int16› | lineGap: ‹Int16› }
| winTypograph: ‹WindowsTypographic›(4b) { ascender: ‹Uint16› | descender: ‹Uint16› }
| codePages1: ‹CodePages1›(32bit)
· 0x10000000 0
· 0x1 Latin 1
· 0x2 Latin 2: Eastern Europe
· 0x4 Cyrillic
· 0x8 Greek
· 0x10 Turkish
· 0x20 Hebrew
· 0x40 Arabic
· 0x80 Windows Baltic
· 0x100 Vietnamese
· 0x200 Reserved for Alternate ANSI
· 0x10000 Thai
· 0x20000 JIS/Japan
· 0x40000 Chinese Simplified-PRC/Singapore
· 0x80000 Korean Wansung
· 0x100000 Chinese Traditional-Taiwan/Hong Kong
· 0x200000 Korean Johab
· 0x400000 Reserved for Alternate ANSI & OEM
· 0x20000000 Macintosh Character Set (US Roman)
· 0x40000000 OEM Character Set
· 0x-80000000 Symbol Character Set
| codePages2: ‹CodePages2›(32bit)
· 0x8000 0
· 0x1 Reserved for OEM
· 0x10000 IBM Greek
· 0x20000 MS-DOS Russian
· 0x40000 MS-DOS Nordic
· 0x80000 Arabic
· 0x100000 MS-DOS Canadian French
· 0x200000 Hebrew
· 0x400000 MS-DOS Icelandic
· 0x800000 MS-DOS Portuguese
· 0x1000000 IBM Turkish
· 0x2000000 IBM Cyrillic; primarily Russian
· 0x4000000 Latin 2
· 0x8000000 MS-DOS Baltic
· 0x10000000 Greek; former 437 G
· 0x20000000 Arabic; ASMO 708
· 0x40000000 WE/Latin 1
· 0x-80000000 US
| xHeight: ‹Int16›
| capHeight: ‹Int16›
| defaultChar: ‹Uint16›
| breakChar: ‹Uint16›
| maxContext: ‹Uint16›
```
## Example reified output
```javascript
{ filename: 'DejaVuSansMono.ttf',
name: 'DejaVuSansMono',
index:
{ version: 'TrueType',
tableCount: 18,
range: 256,
selector: 4,
shift: 32 },
tables:
[ { tag: 'FFTM',
checksum: 1407076357,
contents: { type: ‹VoidPtr›, address: 300 },
length: 28 },
{ tag: 'GDEF',
checksum: 2053270988,
contents: { type: ‹VoidPtr›, address: 328 },
length: 176 },
{ tag: 'GPOS',
checksum: 1094198046,
contents: { type: ‹VoidPtr›, address: 504 },
length: 14582 },
{ tag: 'GSUB',
checksum: 1445877738,
contents: { type: ‹VoidPtr›, address: 15088 },
length: 1212 },
{ tag: 'OS/2',
checksum: 2298243506,
contents:
{ version: 1,
avgCharWidth: 1233,
weightClass: 'Semi-light',
widthClass: 'Medium',
typer: 0,
subscript: { size: { x: 1331, y: 1433 }, position: { x: 0, y: 286 } },
superscript: { size: { x: 1331, y: 1433 }, position: { x: 0, y: 983 } },
strikeout: { size: 102, position: 530 },
class: [ 0, 0 ],
panose:
{ familyType: [ 'Script' ],
serifStyle: [ 'Cove', 'Obtuse Cove', 'Obtuse Square Cove' ],
weight: [ 'Light', 'Thin' ],
proportion: [ 'Old Style', 'Expanded' ],
contrast: [ 'None', 'Very Low' ],
strokeVariation: [ 'Gradual/Horizontal' ],
armStyle: [ 'Straight Arms/Vertical' ],
letterform: [ 'Normal/Weighted' ],
midline: [ 'Standard/Pointed' ],
xHeight: [ 'Constant/Large' ] },
unicodePages:
[ 'Alphabetic Presentation Forms',
'Arabic ',
'Arabic Presentation Forms-B',
'Arabic Supplement',
'Arrows ',
'Basic Latin',
'Block Elements ',
'Box Drawing',
'Combining Diacritical Marks',
'Combining Diacritical Marks Supplement ',
'Control Pictures ',
'Currency Symbols ',
'Cyrillic ',
'Cyrillic Extended-A',
'Cyrillic Extended-B',
'Cyrillic Supplement',
'Dingbats ',
'Geometric Shapes ',
'Georgian ',
'Georgian Supplement',
'Greek Extended ',
'Greek and Coptic ',
'IPA Extensions ',
'Lao',
'Latin Extended Additional',
'Latin Extended-A ',
'Latin Extended-B ',
'Latin Extended-C ',
'Latin Extended-D ',
'Latin-1 Supplement ',
'Letterlike Symbols ',
'Mathematical Alphanumeric Symbols',
'Mathematical Operators ',
'Miscellaneous Mathematical Symbols-A ',
'Miscellaneous Mathematical Symbols-B ',
'Miscellaneous Symbols',
'Miscellaneous Symbols and Arrows ',
'Miscellaneous Technical',
'Modifier Tone Letters',
'Non-Plane 0 *',
'Number Forms ',
'Phonetic Extensions',
'Phonetic Extensions Supplement ',
'Private Use Area (plane 0) ',
'Spacing Modifier Letters ',
'Specials ',
'Superscripts And Subscripts',
'Supplemental Arrows-A',
'Supplemental Arrows-B',
'Supplemental Mathematical Operators' ],
vendorID: 'PfEd',
selection: 64,
firstChar: 32,
lastChar: 65535,
typographic: { ascender: 1556, descender: -492, lineGap: 410 },
winTypograph: { ascender: 1901, descender: 483 },
codePages1:
[ '0',
'Latin 1',
'Latin 2: Eastern Europe',
'Cyrillic',
'Greek',
'Turkish',
'Arabic',
'Windows Baltic',
'Vietnamese',
'Macintosh Character Set (US Roman)',
'OEM Character Set' ],
codePages2:
[ 'IBM Greek',
'MS-DOS Russian',
'MS-DOS Nordic',
'Arabic',
'MS-DOS Canadian French',
'MS-DOS Icelandic',
'MS-DOS Portuguese',
'IBM Turkish',
'IBM Cyrillic; primarily Russian',
'Latin 2',
'MS-DOS Baltic',
'Greek; former 437 G',
'WE/Latin 1' ],
xHeight: 0,
capHeight: 0,
defaultChar: 5,
breakChar: 0,
maxContext: 3 },
length: 86 },
{ tag: 'cmap',
checksum: 230425762,
contents: { type: ‹VoidPtr›, address: 16388 },
length: 5538 },
{ tag: 'cvt ',
checksum: 3918989068,
contents: { type: ‹VoidPtr›, address: 21928 },
length: 560 },
{ tag: 'fpgm',
checksum: 1526885343,
contents: { type: ‹VoidPtr›, address: 22488 },
length: 172 },
{ tag: 'gasp',
checksum: 458759,
contents: { type: ‹VoidPtr›, address: 22660 },
length: 12 },
{ tag: 'glyf',
checksum: 1883368785,
contents: { type: ‹VoidPtr›, address: 22672 },
length: 239352 },
{ tag: 'head',
checksum: 3992135760,
contents:
{ version: '0100',
fontRevision: 150732,
checkSumAdj: 2633691831,
magicNumber: 1594834165,
flags: 31,
unitsPerEm: 2048,
created: { lo: 0, hi: 3334228120 },
modified: { lo: 0, hi: 3334228120 },
min: { x: -1142, y: -767 },
max: { x: 1470, y: 2133 },
macStyle: 0,
lowestRecPPEM: 8,
fontDirHint: 0,
indexToLocFormat: 1,
glyphDataFormat: 0 },
length: 54 },
{ tag: 'hhea',
checksum: 146276871,
contents: { type: ‹VoidPtr›, address: 262080 },
length: 36 },
{ tag: 'hmtx',
checksum: 243468867,
contents: { type: ‹VoidPtr›, address: 262116 },
length: 6346 },
{ tag: 'loca',
checksum: 362015968,
contents: { type: ‹VoidPtr›, address: 268464 },
length: 12680 },
{ tag: 'maxp',
checksum: 302449703,
contents: { type: ‹VoidPtr›, address: 281144 },
length: 32 },
{ tag: 'name',
checksum: 1625352837,
contents: { type: ‹VoidPtr›, address: 281176 },
length: 8469 },
{ tag: 'post',
checksum: 2878182796,
contents: { type: ‹VoidPtr›, address: 289648 },
length: 30055 },
{ tag: 'prep',
checksum: 986169351,
contents: { type: ‹VoidPtr›, address: 319704 },
length: 1819 } ] }
```
## Pre reification
```javascript
{ filename: 'DejaVuSansMono.ttf',
name: 'DejaVuSansMono',
index:
<FontIndex>
| version: <TTFVersion> [ <Uint8> 0, <Uint8> 1, <Uint8> 0, <Uint8> 0 ]
| tableCount: <Uint16> 18
| range: <Uint16> 256
| selector: <Uint16> 4
| shift: <Uint16> 32,
tables:
<Tablex18>
[ <Table>
| tag: <Char4> 'FFTM'
| checksum: <Uint32> 1407076357
| contents: <VoidPtr> (<Address> 300) (0b)
| length: <Uint32> 28,
<Table>
| tag: <Char4> 'GDEF'
| checksum: <Uint32> 2053270988
| contents: <VoidPtr> (<Address> 328) (0b)
| length: <Uint32> 176,
<Table>
| tag: <Char4> 'GPOS'
| checksum: <Uint32> 1094198046
| contents: <VoidPtr> (<Address> 504) (0b)
| length: <Uint32> 14582,
<Table>
| tag: <Char4> 'GSUB'
| checksum: <Uint32> 1445877738
| contents: <VoidPtr> (<Address> 15088) (0b)
| length: <Uint32> 1212,
<Table>
| tag: <Char4> 'OS/2'
| checksum: <Uint32> 2298243506
| contents: <*OS2> (<Address> 16300)
| version: <Uint16> 1
| avgCharWidth: <Int16> 1233
| weightClass: <Uint16> 400
| widthClass: <Uint16> 5
| typer: <Uint16> 0
| subscript: <Metrics>
| size: <Point> { x: <Int16> 1331 | y: <Int16> 1433 }
| position: <Point> { x: <Int16> 0 | y: <Int16> 286 }
| superscript: <Metrics>
| size: <Point> { x: <Int16> 1331 | y: <Int16> 1433 }
| position: <Point> { x: <Int16> 0 | y: <Int16> 983 }
| strikeout: <Strikeout> { size: <Int16> 102 | position: <Int16> 530 }
| class: <Int8x2> [Object]
| panose: <PANOSE>
| familyType: ‹familyType›
· Text and Display: false,
· Script: true,
· Decorative: false,
· Pictorial: false
| serifStyle: ‹serifStyle›
· Cove: true,
· Obtuse Cove: true,
· Square Cove: false,
· Obtuse Square Cove: true,
· Square: false,
· Thin: false,
· Bone: false,
· Exaggerated: false,
· Triangle: false,
· Normal Sans: false,
· Obtuse Sans: false,
· Perp Sans: false,
· Flared: false,
· Rounded: false
| weight: ‹weight›
· Very Light: false,
· Light: true,
· Thin: true,
· Book: false,
· Medium: false,
· Demi: false,
· Bold: false,
· Heavy: false,
· Black: false,
· Nord: false
| proportion: ‹proportion›
· Old Style: true,
· Modern: false,
· Even Width: false,
· Expanded: true,
· Condensed: false,
· Very Expanded: false,
· Very Condensed: false,
· Monospaced: false
| contrast: ‹contrast›
· None: true,
· Very Low: true,
· Low: false,
· Medium Low: false,
· Medium: false,
· Medium High: false,
· High: false,
· Very High: false
| strokeVariation: ‹strokeVariation›
· Gradual/Diagonal: false,
· Gradual/Transitional: false,
· Gradual/Vertical: false,
· Gradual/Horizontal: true,
· Rapid/Vertical: false,
· Rapid/Horizontal: false,
· Instant/Vertical: false
| armStyle: ‹armStyle›
· Straight Arms/Horizontal: false,
· Straight Arms/Wedge: false,
· Straight Arms/Vertical: true,
· Straight Arms/Single Serif: false,
· Straight Arms/Double Serif: false,
· Non-Straight Arms/Horizontal: false,
· Non-Straight Arms/Wedge: false,
· Non-Straight Arms/Vertical: false,
· Non-Straight Arms/Single Serif: false,
· Non-Straight Arms/Double Serif: false
| letterform: ‹letterform›
· Normal/Contact: false,
· Normal/Weighted: true,
· Normal/Boxed: false,
· Normal/Flattened: false,
· Normal/Rounded: false,
· Normal/Off Center: false,
· Normal/Square: false,
· Oblique/Contact: false,
· Oblique/Weighted: false,
· Oblique/Boxed: false,
· Oblique/Flattened: false,
· Oblique/Rounded: false,
· Oblique/Off Center: false,
· Oblique/Square: false
| midline: ‹midline›
· Standard/Trimmed: false,
· Standard/Pointed: true,
· Standard/Serifed: false,
· High/Trimmed: false,
· High/Pointed: false,
· High/Serifed: false,
· Constant/Trimmed: false,
· Constant/Pointed: false,
· Constant/Serifed: false,
· Low/Trimmed: false,
· Low/Pointed: false,
· Low/Serifed: false
| xHeight: ‹xHeight›
· Constant/Small: false,
· Constant/Standard: false,
· Constant/Large: true,
· Ducking/Small: false,
· Ducking/Standard: false,
· Ducking/Large: false
| unicodePages: <UnicodePages>
| 0: ‹UnicodePages0›
· 0000-007F: true,
· 0080-00FF: true,
· 0100-017F: true,
· 0180-024F: true,
· 0250-02AF,1D00-1D7F,1D80-1DBF: true,
· 02B0-02FF,A700-A71F: true,
· 0300-036F,1DC0-1DFF: true,
· 0370-03FF: true,
· 2C80-2CFF: false,
· 0400-04FF,0500-052F,2DE0-2DFF,A640-A69F: true,
· 0530-058F: false,
· 0590-05FF: false,
· A500-A63F: false,
· 0600-06FF,0750-077F: true,
· 07C0-07FF: false,
· 0900-097F: false,
· 0980-09FF: false,
· 0A00-0A7F: false,
· 0A80-0AFF: false,
· 0B00-0B7F: false,
· 0B80-0BFF: false,
· 0C00-0C7F: false,
· 0C80-0CFF: false,
· 0D00-0D7F: false,
· 0E00-0E7F: false,
· 0E80-0EFF: true,
· 10A0-10FF,2D00-2D2F: true,
· 1B00-1B7F: false,
· 1100-11FF: false,
· 1E00-1EFF,2C60-2C7F,A720-A7FF: true,
· 1F00-1FFF: true,
· 2000-206F,2E00-2E7F: false
| 1: ‹UnicodePages1›
· 2070-209F: true,
· 20A0-20CF: true,
· 20D0-20FF: false,
· 2100-214F: true,
· 2150-218F: true,
· 2190-21FF,27F0-27FF,2900-297F,2B00-2BFF: true,
· 2200-22FF,2A00-2AFF,27C0-27EF,2980-29FF: true,
· 2300-23FF: true,
· 2400-243F: true,
· 2440-245F: false,
· 2460-24FF: false,
· 2500-257F: true,
· 2580-259F: true,
· 25A0-25FF: true,
· 2600-26FF: true,
· 2700-27BF: true,
· 3000-303F: false,
· 3040-309F: false,
· 30A0-30FF,31F0-31FF: false,
· 3100-312F,31A0-31BF: false,
· 3130-318F: false,
· A840-A87F: false,
· 3200-32FF: false,
· 3300-33FF: false,
· AC00-D7AF: false,
· D800-DFFF: true,
· 10900-1091F: false,
· 4E00-9FFF,2E80-2EFF,2F00-2FDF,2FF0-2FFF,3400-4DBF,20000-2A6DF,3190-319F: false,
· E000-F8FF: true,
· 31C0-31EF,F900-FAFF,2F800-2FA1F: false,
· FB00-FB4F: true,
· FB50-FDFF: false
| 2: ‹UnicodePages2›
· FE20-FE2F: false,
· FE10-FE1F,FE30-FE4F: false,
· FE50-FE6F: false,
· FE70-FEFF: true,
· FF00-FFEF: false,
· FFF0-FFFF: true,
· 0F00-0FFF: false,
· 0700-074F: false,
· 0780-07BF: false,
· 0D80-0DFF: false,
· 1000-109F: false,
· 1200-137F,1380-139F,2D80-2DDF: false,
· 13A0-13FF: false,
· 1400-167F: false,
· 1680-169F: false,
· 16A0-16FF: false,
· 1780-17FF,19E0-19FF: false,
· 1800-18AF: false,
· 2800-28FF: false,
· A000-A48F,A490-A4CF: false,
· 1700-171F,1720-173F,1740-175F,1760-177F: false,
· 10300-1032F: false,
· 10330-1034F: false,
· 10400-1044F: false,
· 1D000-1D0FF,1D100-1D1FF,1D200-1D24F: false,
· 1D400-1D7FF: true,
· FF000-FFFFD,100000-10FFFD: false,
· FE00-FE0F,E0100-E01EF: false,
· E0000-E007F: false,
· 1900-194F: false,
· 1950-197F: false,
· 1980-19DF: false
| 3: ‹UnicodePages3›
· 1A00-1A1F: false,
· 2C00-2C5F: false,
· 2D30-2D7F: false,
· 4DC0-4DFF: false,
· A800-A82F: false,
· 10000-1007F,10080-100FF,10100-1013F: false,
· 10140-1018F: false,
· 10380-1039F: false,
· 103A0-103DF: false,
· 10450-1047F: false,
· 10480-104AF: false,
· 10800-1083F: false,
· 10A00-10A5F: false,
· 1D300-1D35F: false,
· 12000-123FF,12400-1247F: false,
· 1D360-1D37F: false,
· 1B80-1BBF: false,
· 1C00-1C4F: false,
· 1C50-1C7F: false,
· A880-A8DF: false,
· A900-A92F: false,
· A930-A95F: false,
· AA00-AA5F: false,
· 10190-101CF: false,
· 101D0-101FF: false,
· 102A0-102DF,10280-1029F,10920-1093F: false,
· 1F030-1F09F,1F000-1F02F: false
| vendorID: <Char4> 'PfEd'
| selection: <Uint16> 64
| firstChar: <Uint16> 32
| lastChar: <Uint16> 65535
| typographic: <Typographic> { ascender: <Int16> 1556 | descender: <Int16> -492 | lineGap: <Int16> 410 }
| winTypograph: <WindowsTypographic> { ascender: <Uint16> 1901 | descender: <Uint16> 483 }
| codePages1: ‹CodePages1›
· 0: true,
· Latin 1: true,
· Latin 2: Eastern Europe: true,
· Cyrillic: true,
· Greek: true,
· Turkish: true,
· Hebrew: false,
· Arabic: true,
· Windows Baltic: true,
· Vietnamese: true,
· Reserved for Alternate ANSI: false,
· Thai: false,
· JIS/Japan: false,
· Chinese Simplified-PRC/Singapore: false,
· Korean Wansung: false,
· Chinese Traditional-Taiwan/Hong Kong: false,
· Korean Johab: false,
· Reserved for Alternate ANSI & OEM: false,
· Macintosh Character Set (US Roman): true,
· OEM Character Set: true,
· Symbol Character Set: false
| codePages2: ‹CodePages2›
· 0: false,
· Reserved for OEM: false,
· IBM Greek: true,
· MS-DOS Russian: true,
· MS-DOS Nordic: true,
· Arabic: true,
· MS-DOS Canadian French: true,
· Hebrew: false,
· MS-DOS Icelandic: true,
· MS-DOS Portuguese: true,
· IBM Turkish: true,
· IBM Cyrillic; primarily Russian: true,
· Latin 2: true,
· MS-DOS Baltic: true,
· Greek; former 437 G: true,
· Arabic; ASMO 708: false,
· WE/Latin 1: true,
· US: false
| xHeight: <Int16> 0
| capHeight: <Int16> 0
| defaultChar: <Uint16> 5
| breakChar: <Uint16> 0
| maxContext: <Uint16> 3
| length: <Uint32> 86,
<Table>
| tag: <Char4> 'cmap'
| checksum: <Uint32> 230425762
| contents: <VoidPtr> (<Address> 16388) (0b)
| length: <Uint32> 5538,
<Table>
| tag: <Char4> 'cvt '
| checksum: <Uint32> 3918989068
| contents: <VoidPtr> (<Address> 21928) (0b)
| length: <Uint32> 560,
<Table>
| tag: <Char4> 'fpgm'
| checksum: <Uint32> 1526885343
| contents: <VoidPtr> (<Address> 22488) (0b)
| length: <Uint32> 172,
<Table>
| tag: <Char4> 'gasp'
| checksum: <Uint32> 458759
| contents: <VoidPtr> (<Address> 22660) (0b)
| length: <Uint32> 12,
<Table>
| tag: <Char4> 'glyf'
| checksum: <Uint32> 1883368785
| contents: <VoidPtr> (<Address> 22672) (0b)
| length: <Uint32> 239352,
<Table>
| tag: <Char4> 'head'
| checksum: <Uint32> 3992135760
| contents: <*Head> (<Address> 262024)
| version: <Version> [Object]
| fontRevision: <Int32> 150732
| checkSumAdj: <Uint32> 2633691831
| magicNumber: <Uint32> 1594834165
| flags: <Uint16> 31
| unitsPerEm: <Uint16> 2048
| created: <LongDateTime> { lo: <Uint32> 0 | hi: <Uint32> 3334228120 }
| modified: <LongDateTime> { lo: <Uint32> 0 | hi: <Uint32> 3334228120 }
| min: <Point> { x: <Int16> -1142 | y: <Int16> -767 }
| max: <Point> { x: <Int16> 1470 | y: <Int16> 2133 }
| macStyle: <Uint16> 0
| lowestRecPPEM: <Uint16> 8
| fontDirHint: <Int16> 0
| indexToLocFormat: <Int16> 1
| glyphDataFormat: <Int16> 0
| length: <Uint32> 54,
<Table>
| tag: <Char4> 'hhea'
| checksum: <Uint32> 146276871
| contents: <VoidPtr> (<Address> 262080) (0b)
| length: <Uint32> 36,
<Table>
| tag: <Char4> 'hmtx'
| checksum: <Uint32> 243468867
| contents: <VoidPtr> (<Address> 262116) (0b)
| length: <Uint32> 6346,
<Table>
| tag: <Char4> 'loca'
| checksum: <Uint32> 362015968
| contents: <VoidPtr> (<Address> 268464) (0b)
| length: <Uint32> 12680,
<Table>
| tag: <Char4> 'maxp'
| checksum: <Uint32> 302449703
| contents: <VoidPtr> (<Address> 281144) (0b)
| length: <Uint32> 32,
<Table>
| tag: <Char4> 'name'
| checksum: <Uint32> 1625352837
| contents: <VoidPtr> (<Address> 281176) (0b)
| length: <Uint32> 8469,
<Table>
| tag: <Char4> 'post'
| checksum: <Uint32> 2878182796
| contents: <VoidPtr> (<Address> 289648) (0b)
| length: <Uint32> 30055,
<Table>
| tag: <Char4> 'prep'
| checksum: <Uint32> 986169351
| contents: <VoidPtr> (<Address> 319704) (0b)
| length: <Uint32> 1819 ] }
```