This is an archive of the original scripts.sil.org site, preserved as a historical reference. Some of the content is outdated. Please consult our other sites for more current information: software.sil.org, ScriptSource, FDBP, and silfontdev



Home

Contact Us

General

Initiative B@bel

WSI Guidelines

Encoding

Principles

Unicode

Training

Tutorials

PUA

Conversion

Resources

Utilities

TECkit

Maps

Resources

Input

Principles

Utilities

Tutorials

Resources

Type Design

Principles

Design Tools

Formats

Resources

Font Downloads

Gentium

Doulos

IPA

Rendering

Principles

Technologies

OpenType

Graphite

Resources

Font FAQ

Links

Glossary


Computers & Writing Systems

SIL HOME | SIL SOFTWARE | SUPPORT | DONATE | PRIVACY POLICY

You are here: Type Design > Formats
Short URL: https://scripts.sil.org/IWS-AppendixC

TrueType table listing

Alan Ward, Jonathan Kew, Bob Hallissy, 2015-01-20

Note:

This is an Appendix to “An Introduction to TrueType™ fonts”.

Below is a list of the tables used in TrueType files. Also included are tables added by OpenType, Graphite, Apple and some font tools such as FontForge. The table name is case sensitive and always consists of four eight-bit characters, which are spaces if the name below is less than four characters. The [req] label is placed on tables that are required in fonts that contain TrueType outlines. (It is possible to use PostScript outlines or bitmaps in an OpenType font.) [OpenType], [Graphite], [Apple] and [FontForge] tables are also indicated.

NameReqDescription
name [req] Contains strings that provide general information about the font. Strings are multilingual and multi-platform and are identified by number. Some numbers have a standard meaning such as font name and copyright. Arbitrary numbered strings can also be present.
glyf [req] Contains glyph outlines and hints. A glyph can consist of points or be composed from other glyphs in the font.
cmap [req] Contains multiple mapping tables from Unicode and various 8-bit encodings to glyph ids. Multi-platform.
post [req] Contains glyph names usually based on standard PostScript names or Unicode ids. Can be empty.
OS/2 [req on Windows] Contains line spacing, font weight, font style, codepoint ranges (codepage and Unicode) covered by glyphs, overall appearance, sub- and super-script support, strike out information.
     
head [req] Contains overall font metrics and checksum for font. Also contains font appearance (Mac).
hmtx [req] Contains advance width and left side bearing for each glyph.
hhea [req] Contains overall horizontal metrics and caret slope. Also contains line spacing (Mac).
kern   Contains kerning pair data.
     
hdmx [req] Contains precalculated advance widths for hinted glyphs.
LTHS   Contains size where each glyph starts scaling linearly (where size is unaffected by hints).
     
vmtx, vhea, VDMX   Vertical metrics analagous to hmtx, hhea, hdmx. Used for vertical writing systems.
     
loca [req] Mapping from glyph id to offset in glyf table.
maxp [req] Indicates complexity of glyphs and hints.
DSIG   Container for digital signatures.
     
PCLT   Indicates overall font appearance based on HP Printer Control Language (PCL) specification. Not used by any known OS or applications, but its inclusion is recommended by TTF specification.
gasp   Indicates at what sizes glyphs should be rendered using hints and/or anti-aliasing techniques.
prep, fpgm, cvt   Hints in the glyf table rely on these tables to provide subroutines and common values.
     
CFF   Contains embedded PostScript glyphs. Used instead of glyf table.
VORG   Contains precalculated vertical origins for PostScript glyphs. Used in vertical scripts.
     
EBDT, EBLC, EBSC   They contain information for embedded bitmap glyphs. Rarely used.
GSUB [OpenType] Contains glyph substitution data. The following types of substitutions are supported: one to one, one to many, one to several alternates, many to one, and contextual use of the preceding.
GPOS [OpenType] Contains glyph positioning data. The following types of positioning are supported: single glyph adjustment, pair adjustment, cursive attachment, mark (diacritic) to base, mark to ligature, mark to mark, and contextual use of the preceding.
GDEF [OpenType] Contains glyph definition data. Indicates glyph classes, caret locations for ligatures, and provides an attachment point cache. (Attachment points must be specified in GPOS too.)
BASE [OpenType] Contains baseline data. Can provide information on roman, centered, and hanging baselines. Supports horizontal and vertical baselines. Also can override line spacing data in other tables.
JSTF [OpenType] Contains paragraph justification data. Same basic capabilities as GSUB and GPOS. Can override GSUB and GPOS actions.
Silf [Graphite] Graphite table used to store rules specified in Graphite Description Language (GDL). This includes glyph classes, search patterns, and actions to transform a glyph stream.
     
Glat [Graphite] Graphite glyph attribute table used to store glyph specific information specified in GDL. This includes attachment points, ligature components, directionality, and breaking data.
Gloc [Graphite] Graphite table used to map from glyph id to offset in Glat table.
     
Feat [Graphite] Graphite feature table used to store features and possible settings specified in GDL. Features determine what rules are applied to transform a glyph stream.
     
mort [Apple] Contains tables specifying AAT “glyph metamorphosis” effects: ligatures, contextual or non-contextual substitutions, insertions, and rearrangements.
morx [Apple] Extended version of the mort table. Allows larger/more complex tables, and possibly more compact encoding.
feat [Apple] Describes AAT features, implemented by subtables in the mort table, and points to name table strings that describe them.
     
acnt [Apple] Specifies combinations of component glyphs to form accented compound glyphs (more compactly than in the glyf table).
bsln [Apple] Specifies baselines (Roman, hanging, centered, etc.) for aligning various types of script.
just [Apple] Indicates how to justify text (how extra space is distributed, and effects such as stretching glyphs, inserting kashidas, or choosing alternate forms).
lcar [Apple] Contains ligature caret data. Defines caret positions within ligatures, allowing more accurate editing than simply dividing up the glyph width.
fdsc [Apple] Contains font descriptor data. Contains values for attributes such as boldness, width, italic angle, etc. that can be used in font matching.
fmtx [Apple] Identifies a glyph which provides font metrics which are used instead of values in the hhea and vhea tables.
     
prop [Apple] Contains glyph properties (e.g., floating, mirrored, hanging).
Zapf [Apple] Contains reference information about each glyph (e.g., associated Unicode values, various glyph names)
     
opbd [Apple] Optical boundary information. Used to adjust glyph alignment at line edges.
trak [Apple] Specifies adjustments to glyph spacing (tighter or looser tracking).
     
fvar [Apple] Describes variation “axes” (such as weight, width, optical size) that the designer has created, allowing many different styles to be created from a single master design.
gvar [Apple] Contains the actual adjustments to be made to each glyph for each possible font variation.
avar [Apple] Allows the variation to have non-linear behavior as the user settings vary.
cvar [Apple] Specifies how the cvt table values (used in hinting) vary with different font variation settings.
     
bdat, bhed, bloc [Apple] Contain data for embedded bitmap glyphs.
hsty [Apple] Contains horizontal style data. Used on the Newton OS only to indicate how font styles (bold, italic, etc.) should be synthesized algorithmically.
PfEd [FontForge] FontForge extensions table contains private data utilized by FontForge; described  here
TeX [FontForge] TeX metrics table maintained by FontForge; described  here
BDF [FontForge] Contains the header information from old bdf fonts; described  here
FFTM [FontForge] Contains three timestamps: First FontForge's version date, then when the font was generated, and when the font was created; described  here


Note: the opinions expressed in submitted contributions below do not necessarily reflect the opinions of our website.

"John Grimes", Tue, Dec 22, 2009 18:14 (EST)
Additional Graphite Tables

You might like to add the Graphite tables 'Sill', 'Sile' and 'Sild' to this list, as per this spec document:

https://scripts.sil.org/cms/scripts/render_download.php?site_id=nrsi&format=file&media_id=GraphiteBinaryFormat_3_0&filename=GraphiteBinaryFormat_3_0.pdf



© 2003-2024 SIL International, all rights reserved, unless otherwise noted elsewhere on this page.
Provided by SIL's Writing Systems Technology team (formerly known as NRSI). Read our Privacy Policy. Contact us here.