Already a subscriber? 

MADCAD.com Free Trial
Sign up for a 3 day free trial to explore the MADCAD.com interface, PLUS access the
2009 International Building Code to see how it all works.
If you like to setup a quick demo, let us know at support@madcad.com
or +1 800.798.9296 and we will be happy to schedule a webinar for you.
Security check
Please login to your personal account to use this feature.
Please login to your authorized staff account to use this feature.
Are you sure you want to empty the cart?
ISO/IEC 14496-22:2019 Information technology - Coding of audio-visual objects - Part 22: Open Font Format, 2019
- 1 Scope
- 2 Normative references
- 3 Terms, definitions and abbreviated terms [Go to Page]
- 3.1 Terms and definitions
- 3.2 Abbreviated terms
- 4 The Open Font file format [Go to Page]
- 4.1 Description
- 4.2 Filenames
- 4.3 Data types
- 4.4 Table version numbers
- 4.5 Top-level OFF organization [Go to Page]
- 4.5.1 Offset table
- 4.5.2 Table directory
- 4.5.3 Calculating checksums
- 4.6 Font collections [Go to Page]
- 4.6.1 The Font Collection overview
- 4.6.2 The Font Collection file structure
- 4.6.3 TTC header
- 5 Open font tables [Go to Page]
- 5.1 General
- 5.2 Required common tables [Go to Page]
- 5.2.1 List of required tables
- 5.2.2 cmap – Character to glyph index mapping table [Go to Page]
- 5.2.2.1 Table overview
- 5.2.2.2 cmap subtable formats [Go to Page]
- 5.2.2.2.1 Use of the language field in 'cmap' subtables
- 5.2.2.2.2 Format 0: Byte encoding table
- 5.2.2.2.3 Format 2: High byte mapping through table
- 5.2.2.2.4 Format 4: Segment mapping to delta values
- 5.2.2.2.5 Format 6: Trimmed table mapping
- 5.2.2.2.6 Format 8: mixed 16-bit and 32-bit coverage
- 5.2.2.2.7 Format 10: Trimmed array
- 5.2.2.2.8 Format 12: Segmented coverage
- 5.2.2.2.9 Format 13: Many-to-one range mappings
- 5.2.2.2.10 Format 14: Unicode variation sequences
- 5.2.3 head – Font header
- 5.2.4 hhea – Horizontal header
- 5.2.5 hmtx – Horizontal metrics
- 5.2.6 maxp – Maximum profile
- 5.2.7 name – Naming table [Go to Page]
- 5.2.7.1 Table structure
- 5.2.7.2 Name records
- 5.2.7.3 Platform, encoding and language IDs
- 5.2.7.4 Name IDs
- 5.2.8 OS/2 – Global font information table [Go to Page]
- 5.2.8.1 version
- 5.2.8.2 xAvgCharWidth
- 5.2.8.3 usWeightClass
- 5.2.8.4 usWidthClass
- 5.2.8.5 fsType
- 5.2.8.6 ySubscriptXSize
- 5.2.8.7 ySubscriptYSize
- 5.2.8.8 ySubscriptXOffset
- 5.2.8.9 ySubscriptYOffset
- 5.2.8.10 ySuperscriptXSize
- 5.2.8.11 ySuperscriptYSize
- 5.2.8.12 ySuperscriptXOffset
- 5.2.8.13 ySuperscriptYOffset
- 5.2.8.14 yStrikeoutSize
- 5.2.8.15 yStrikeoutPosition
- 5.2.8.16 sFamilyClass
- 5.2.8.17 Panose
- UnicodeRange
- 5.2.8.19 achVendID
- 5.2.8.20 fsSelection
- 5.2.8.21 usFirstCharIndex
- 5.2.8.22 usLastCharIndex
- 5.2.8.23 sTypoAscender
- 5.2.8.24 sTypoDescender
- 5.2.8.25 sTypoLineGap
- 5.2.8.26 usWinAscent
- 5.2.8.27 usWinDescent
- 5.2.8.28 CodePageRange
- 5.2.8.29 sxHeight
- 5.2.8.30 sCapHeight
- 5.2.8.31 usDefaultChar
- 5.2.8.32 usBreakChar
- 5.2.8.33 usMaxContext
- 5.2.8.34 usLowerOpticalPointSize
- 5.2.8.35 usUpperOpticalPointSize
- 5.2.9 Font class parameters
- 5.2.10 post – PostScript [Go to Page]
- 5.2.10.1 Version 1.0
- 5.2.10.2 Version 2.0
- 5.2.10.3 Version 2.5
- 5.2.10.4 Version 3.0
- 5.2.10.5 'post' Table and OFF Font Variations
- 5.3 Tables related to TrueType outlines [Go to Page]
- 5.3.1 List of TrueType outlines tables
- 5.3.2 cvt – Control value table
- 5.3.3 fpgm – Font program
- 5.3.4 glyf – Glyf data [Go to Page]
- 5.3.4.1 Table structure [Go to Page]
- 5.3.4.1.1 Simple glyph description
- 5.3.4.1.2 Composite glyph description
- 5.3.5 loca – Index to location
- 5.3.6 prep – Control value program
- 5.3.7 gasp – Grid-fitting and scan-conversion procedure table
- 5.4 Tables related to CFF outlines [Go to Page]
- 5.4.1 List of CFF outline tables
- 5.4.2 CFF – Compact Font Format (version 1) table
- 5.4.3 CFF2 – Compact Font Format (version 2) table [Go to Page]
- 5.4.3.1 Overview
- 5.4.3.2 Data layout
- 5.4.3.3 Data types
- 5.4.3.4 DICT data
- 5.4.3.5 INDEX data
- 5.4.3.6 Header
- 5.4.3.7 Top DICT data
- 5.4.3.8 CharStrings INDEX
- 5.4.3.9 Local and Global Subr INDEXes
- 5.4.3.10 Font DICT INDEX, Font DICTs and FDSelect
- NOTE While FDSelect format 4 allows for more than 65536 glyphs, other parts of the OFF format, such as the numGlyphs field of the 'maxp' table, are still constrained to 65536 glyphs.
- 5.4.3.11 Private DICT data
- 5.4.3.12 Extensions for font variations [Go to Page]
- 5.4.3.12.1 Syntax for font variations support operators
- 5.4.3.12.2 VariationStore data contents
- 5.4.4 VORG – Vertical origin table
- 5.5 Table for SVG glyph outlines [Go to Page]
- 5.5.1 SVG – The SVG (Scalable Vector Graphics) table
- 5.5.2 Color Palettes
- 5.5.3 Glyph Identifiers
- 5.5.4 Glyph Semantics and Metrics
- 5.5.5 Glyph Rendering
- 5.5.6 SVG glyph examples
- 5.6 Tables related to bitmap glyphs [Go to Page]
- 5.6.1 List of bitmap glyph tables
- 5.6.2 EBDT – Embedded bitmap data table [Go to Page]
- 5.6.2.1 OFF embedded bitmaps are also called 'sbits' (for “scaler bitmaps”). A set of bitmaps for a face at a given size is called a strike.Table structure
- 5.6.2.2 Glyph bitmap data formats [Go to Page]
- 5.6.2.2.1 Format 1: small metrics, byte-aligned data
- 5.6.2.2.2 Format 2: small metrics, bit-aligned data
- 5.6.2.2.3 Format 3: (obsolete)
- 5.6.2.2.4 Format 4: metrics in EBLC, compressed data
- 5.6.2.2.5 Format 5: metrics in EBLC, bit-aligned image data only
- 5.6.2.2.6 Format 6: big metrics, byte-aligned data
- 5.6.2.2.7 Format7: big metrics, bit-aligned data
- 5.6.2.2.8 Format 8: small metrics, component data
- 5.6.2.2.9 Format 9: big metrics, component data
- 5.6.3 EBLC – Embedded bitmap location table [Go to Page]
- 5.6.3.1 Table structure and data types
- 5.6.3.2 Description of table entries
- 5.6.4 EBSC – Embedded bitmap scaling table
- 5.6.5 CBDT – Color bitmap data table [Go to Page]
- 5.6.5.1 Table structure
- 5.6.5.2 Glyph bitmap data formats [Go to Page]
- 5.6.5.2.1 Format 17: small metrics, PNG image data
- 5.6.5.2.2 Format 18: big metrics, PNG image data
- 5.6.5.2.3 Format 19: metricsin CBLC, PNG image data
- 5.6.6 CBLC – Color bitmap location table
- 5.6.7 sbix – Standard bitmap graphics table [Go to Page]
- 5.6.7.1 Header
- 5.6.7.2 Strikes
- 5.6.7.3 Glyph data
- 5.6.7.4 Table dependencies
- 5.7 Optional tables [Go to Page]
- 5.7.1 DSIG – Digital signature table
- 5.7.2 hdmx – Horizontal device metrics
- 5.7.3 kern – Kerning
- 5.7.4 LTSH – Linear threshold
- 5.7.5 MERG – Merge table [Go to Page]
- 5.7.5.1 Grouping of glyphs
- 5.7.5.2 Table formats
- 5.7.5.3 Processing
- 5.7.6 meta – Metadata table [Go to Page]
- 5.7.6.1 Table formats
- 5.7.6.2 Metadata Tags
- 5.7.6.3 ScriptLangTag Values
- 5.7.7 PCLT – PCL 5 table
- 5.7.8 VDMX – Vertical device metrics
- 5.7.9 vhea – Vertical header table
- 5.7.10 vmtx – Vertical metric table
- 5.7.11 COLR – Color Table
- 5.7.12 CPAL – Palette Table
- 6 Advanced Open Font layout tables [Go to Page]
- 6.1 Advanced Open Font layout extensions [Go to Page]
- 6.1.1 Overview of advanced typographic layout extensions
- 6.1.2 TrueType versus OFF layout
- 6.1.3 OFF layout terminology
- 6.1.4 Text processing with OFF layout
- 6.1.5 OFF layout and Font variations
- 6.2 OFF layout common table formats [Go to Page]
- 6.2.1 Overview
- 6.2.2 OFF layout and Font variations
- 6.2.3 Table organization
- 6.2.4 Scripts and languages
- 6.2.5 Features and lookups
- 6.2.6 Coverage table
- 6.2.7 Class definition table
- 6.2.8 Device and VariationIndex tables
- 6.2.9 Feature variations
- 6.2.10 Common table examples
- 6.3 Advanced typographic tables [Go to Page]
- 6.3.1 BASE Baseline table [Go to Page]
- 6.3.1.1 BASE table and OFF Font variations
- 6.3.1.2 BASE table organization
- 6.3.1.3 BASE table structure
- 6.3.1.4 BASE table examples
- 6.3.2 GDEF – The glyph definition table [Go to Page]
- 6.3.2.1 Overview
- 6.3.2.2 Overview of GDEF subtables
- 6.3.2.3 GDEF table structure
- The Item Variation Store contains adjustment-delta values arranged in one or more sets of deltas that are referenced using delta-set indices. For values that require variation adjustment, a delta-set index is used to reference the particular variation data needed for that target value. Within the GDEF, GPOS or JSTF tables, delta-set indices are provided in VariationIndex tables associated with particular target items, such as caret positions in the GDEF table. For a description of the VariationIndex table, see subclause 6.2. For details on use of VariationIndex tables within the GDEF table, see discussion earlier in this chapter. For details on use of VariationIndex tables within the GPOS or JSTF tables, see the discussion of OFF Font variations in the chapters for each of those tables.
- GDEF table examples
- 6.3.3 GPOS – The glyph positioning table [Go to Page]
- 6.3.3.1 Overview
- The Item Variation Store format uses a two-level organization for variation data: a store can have multiple Item Variation Data subtables, and each subtable has multiple delta-set rows. A delta-set index is a two-part index: an outer index that selects a particular Item Variation Data subtable, and an inner index that selects a particular delta-set row within that subtable. A VariationIndex table specifies both the outer and inner portions of the delta-set index.
- GPOS table organization
- 6.3.3.2 GPOS lookup type descriptions
- 6.3.3.3 Shared tables: Value record, Anchor table and MarkArray table
- 6.3.3.4 GPOS subtable examples
- 6.3.4 GSUB – The glyph substitution table [Go to Page]
- 6.3.4.1 GSUB – Table overview
- 6.3.4.2 GSUB – Table organization and structure
- 6.3.4.3 GSUB – Lookup type descriptions
- 6.3.4.4 GSUB – subtable examples
- 6.3.5 JSTF – The justification table [Go to Page]
- 6.3.5.1 JSTF table overview
- 6.3.5.2 Table organization and structure
- 6.3.5.3 JSTF table examples
- 6.3.6 MATH – The mathematical typesetting table [Go to Page]
- 6.3.6.1 MATH table overview
- 6.3.6.2 MATH – Table organization and structure [Go to Page]
- 6.3.6.2.1 Shared Formats: MathValueRecord, Coverage
- 6.3.6.2.2 MATH Header
- 6.3.6.2.3 MathConstants Table
- 6.3.6.2.4 MathGlyphInfo Table
- 6.3.6.2.5 MathItalicsCorrectonInfo Table
- 6.3.6.2.6 MathTopAccentAttachment Table
- 6.3.6.2.7 ExtendedShapeCoverage Table
- 6.3.6.2.8 MathKernInfo Table
- 6.3.6.2.9 MathKern Table
- 6.3.6.2.10 MathVariants Table
- 6.3.6.2.11 MathGlyphConstruction Table
- 6.3.6.2.12 GlyphAssembly Table
- 6.3.6.3 OFF layout tags used with the MATH Table
- 6.4 Layout tag registry [Go to Page]
- 6.4.1 Scripts tags
- 6.4.2 Language tags
- 6.4.3 Feature tags [Go to Page]
- 6.4.3.1 Feature tag list
- 6.4.3.2 Feature descriptions and implementations
- 6.4.4 Baseline tags
- 7 OFF font variations [Go to Page]
- 7.1 Font variations overview [Go to Page]
- 7.1.1 General
- 7.1.2 Terminology
- 7.1.3 Variation space, default instances and adjustment deltas
- 7.1.4 Coordinate scales and normalization
- 7.1.5 Variation data
- 7.1.6 Variation data tables and miscellaneous requirements
- 7.1.7 Algorithm for interpolation of instance values
- 7.1.8 Interpolation example
- 7.1.9 Dynamic generation of static instance fonts
- 7.2 Font variations common table formats [Go to Page]
- 7.2.1 Overview
- 7.2.2 Tuple variation store [Go to Page]
- 7.2.2.1 Tuple records
- 7.2.2.2 Tuple variation store header
- 7.2.2.3 TupleVariationHeader
- 7.2.2.4 Serialized data
- 7.2.2.5 Packed “point” numbers
- 7.2.2.6 Packed deltas
- 7.2.2.7 Processing tuple variation store data
- 7.2.2.8 Differences between ‘gvar’ and ‘cvar’ tables
- 7.2.3 Item variation stores [Go to Page]
- 7.2.3.1 Variation regions
- 7.2.3.2 Item variation store and item variation data tables
- 7.2.3.3 Processing item variation store data
- 7.2.4 Design-variation axis tag registry [Go to Page]
- 7.2.4.1 Registered axis tags list
- 7.2.4.2 Registered axis tags definitions
- 7.3 Font variations tables [Go to Page]
- 7.3.1 avar – Axis variations table [Go to Page]
- 7.3.1.1 Overview
- 7.3.1.2 Table formats
- 7.3.1.3 Processing
- 7.3.1.4 Axis segments example
- 7.3.2 cvar – CVT variations table [Go to Page]
- 7.3.2.1 Table format
- 7.3.3 fvar – Font variations table [Go to Page]
- 7.3.3.1 Table formats
- 7.3.3.2 Variation Instance Selection
- 7.3.3.3 Example
- 7.3.4 gvar – Glyph variations table [Go to Page]
- 7.3.4.1 Glyph variations table format [Go to Page]
- 7.3.4.1.1 'gvar' header
- 7.3.4.1.2 Shared tuples array
- 7.3.4.1.3 The glyphVariationData table array
- 7.3.4.2 Processing the 'gvar' table
- 7.3.4.3 Point Numbers and processing for composite glyphs
- 7.3.4.4 Inferred deltas for un-referenced point numbers
- 7.3.5 HVAR – Horizontal metrics variations table [Go to Page]
- 7.3.5.1 Related and co-requisite tables
- 7.3.5.2 Table formats
- 7.3.5.3 Processing
- 7.3.6 MVAR – Metrics variations table [Go to Page]
- 7.3.6.1 Table formats
- 7.3.6.2 Processing
- 7.3.6.3 Value tags
- 7.3.7 STAT – Style attributes table [Go to Page]
- 7.3.7.1 Style attributes header
- 7.3.7.2 Axis records
- 7.3.7.3 Axis value tables
- 7.3.7.4 Examples [Go to Page]
- 7.3.7.4.1 Example 1: Non-variation font family with different weight variants
- 7.3.7.4.2 Example 2: Non-variation family with weight values plus italic
- 7.3.7.4.3 Example 3: Non-variation family with weight and variants, later extended to add width variants
- 7.3.7.4.4 Example 4: A weight/width variation font
- 7.3.7.4.5 Example 5: A family comprised of a non-italic variation font plus an italic variation font
- 7.3.7.4.6 Example 6: A varible font with non-analytic subfamily names associated with multiple axis values
- 7.3.8 VVAR – Vertical metrics variations table [Go to Page]
- 7.3.8.1 Related and co-requisite tables
- 7.3.8.2 Table formats
- 8 Recommendations for OFF fonts [Go to Page]
- 8.1 Byte ordering
- 8.2 'sfnt' version
- 8.3 Mixing outline formats
- 8.4 Filenames
- 8.5 Table alignment and length
- 8.6 Glyph 0: the .notdef glyph
- 8.7 'BASE' table
- 8.8 'cmap' table
- 8.9 'cvt' table
- 8.10 'fpgm' table
- 8.11 'glyf' table
- 8.12 'hdmx' table
- 8.13 'head' table
- 8.14 'hhea' table
- 8.15 'hmtx' table
- 8.16 'kern' table
- 8.17 'loca' table
- 8.18 'LTSH' table
- 8.19 'maxp' table
- 8.20 'name' table
- 8.21 'OS/2' table
- 8.22 'post' table
- 8.23 'prep' table
- 8.24 'VDMX' table
- 8.25 TrueType Collections
- 9 General recommendations [Go to Page]
- 9.1 Optimized table ordering
- 9.2 Non-standard (Symbol) fonts
- 9.3 Baseline to baseline distances
- 9.4 Style bits
- 9.5 Drop-out control
- 9.6 Embedded bitmaps
- 9.7 OFF CJK font guidelines
- 9.8 Stroke reduction in variable fonts
- 9.9 Families with optical size variants [Go to Page]
- version
- xAvgCharWidth
- usWeightClass
- usWidthClass
- fsType
- ySubscriptXSize
- ySubscriptYSize
- ySubscriptXOffset
- ySubscriptYOffset
- ySuperscriptXSize
- ySuperscriptYSize
- ySuperscriptXOffset
- ySuperscriptYOffset
- yStrikeoutSize
- yStrikeoutPosition
- sFamilyClass
- Panose
- ulUnicodeRange
- achVendID
- fsSelection
- usFirstCharIndex
- usLastCharIndex
- sTypoAscender
- sTypoDescender
- sTypoLineGap
- usWinAscent
- usWinDescent
- ulCodePageRange
- sxHeight
- sCapHeight
- usDefaultChar
- usBreakChar
- usMaxContext
- version
- xAvgCharWidth
- usWeightClass
- usWidthClass
- fsType
- ySubscriptXSize
- ySubscriptYSize
- ySubscriptXOffset
- ySubscriptYOffset
- ySuperscriptXSize
- ySuperscriptYSize
- ySuperscriptXOffset
- ySuperscriptYOffset
- yStrikeoutSize
- yStrikeoutPosition
- sFamilyClass
- Panose
- ulUnicodeRange
- achVendID
- fsSelection
- usFirstCharIndex
- usLastCharIndex
- sTypoAscender
- sTypoDescender
- sTypoLineGap
- usWinAscent
- usWinDescent
- ulCodePageRange
- sxHeight
- sCapHeight
- usDefaultChar
- usBreakChar
- usMaxContext
- Blank Page [Go to Page]