| Required Tables | ||
|---|---|---|
| cmap | Character to glyph mapping | Required |
| head | Font header | Required |
| hhea | Horizontal headerRequired | |
| hmtx | Horizontal metrics | Required |
| maxp | Maximum profile | Required |
| name | Naming table | Required |
| OS/2 | Windows specific metrics | Required |
| post | PostScript information | Required |
| TrueType Tables | ||
| cvt | Control Value Table | Ignored |
| fpgm | Font program | Ignored |
| glyf | Glyph data | Ignored |
| loca | Index to location | Ignored |
| prep | CVT Program | Ignored |
| PostScript Tables | ||
| CFF | Compact font format | Required |
| Advanced Typographic Tables | ||
| BASE | Baseline data | Ignored |
| GDEF | Glyph definition data | Ignored |
| GPOS | Glyph positioning data | For "kern" feature |
| GSUB | Glyph substitution data | For "vrt2" feature |
| JSTF | Justification data | Ignored |
| Bitmap Tables | ||
| EBDT | Embedded bitmap data | Ignored |
| EBLC | Embedded bitmap location data | Ignored |
| EBSC | Embedded bitmap scaling data | Ignored |
| Other OpenType Tables | ||
| DSIG | Digital signature | Ignored |
| gasp | Grid-fitting/Scan-conversion | Ignored |
| hdmx | Horizontal device metrics | Ignored |
| kern | Kerning | Ignored |
| LTSH | Linear threshold data | Ignored |
| PCLT | PCL 5 data | Ignored |
| VDMX | Vertical device metrics | Ignored |
| vhea | Vertical metrics header | For vertical mode |
| vmtx | Vertical metrics | For vertical mode |
Following is a discussion of ATM's treatment of individual OpenType tables. Reviewers should be familiar with the v.1.2 OpenType Specification.
cmap
The cmap table version must be >= 0 (equivalent to ignoring it).
The OpenType specificationstrongly recommends, but ATM requires a cmap with PlatformID 3 (Microsoft) and EncodingID 1 (Unicode). This cmap must be in format 4 (Microsoft Standard).
ATM uses an optional cmap with PlatformID 4 (Custom) and EncodingID less than 256. This provides a "compatibility" cmap that contains the original font encoding for converted non-StandardEncoded Adobe fonts. The compatibility cmap must be in either format 0 (Apple Standard) or format 6 (Trimmed). Note: PlatformID 4 is not defined in the current OpenType specification.
All other cmaps are ignored. In particular, ATM does not use:
Note: contrary to the current OpenType specification, ATM does not support PlatformID 3 EncodingID 0 for Symbol fonts, even for the font "Symbol".
The cmap table checksum must be correct.
head
ATM uses the following fields from the head table.
If the OS/2.achVendID is 'ADBE' then fontRevision must be >= 1.0 (0.9 during beta).
When bit 12 of the flags field is set, it indicates a converted font, and ATM does the following:
All other bits in the flags field are ignored.
All other fields are ignored.
The head table checksum (and the checkSumAdjustment field) are currently ignored.
hhea
ATM uses the following fields from the hhea table.
All other fields are ignored.
The hhea table checksum must be correct.
ATM uses the hMetrics array to obtain advance widths for single master fonts. This includes an implicit advance width when numberOfHMetrics is less than numGlyphs. ATM ignores leftSideBearing. The hmtx table is required but is actually ignored for Multiple Master fonts.
The hmtx table checksum must be correct.
ATM requires the maxp table and obtains numGlyphs from it. The version must be >= 0.5 (hexadecimal) and < 2.0. All other fields are ignored.
The maxp table checksum must be correct.
ATM requires a format 0 name table. Names must be defined for PlatformID 3 (Microsoft) and EncodingID 1 (Unicode). ATM requires the following NameIDs.
The following NameID is optional:
All other names are ignored.
The name table checksum must be correct.
ATM uses the following fields:
The following fields are ignored.
The OS/2 table checksum must be correct.
ATM uses the following fields from the post table.
All other fields are ignored.
The post table checksum must be correct.
ATM requires this table.
The CFF table checksum is currently ignored.
GPOS
If the GPOS table is present, ATM requires the version to be >= 1.0 and < 2.0.
The GPOS table is used only for the 'kern' feature. See ATM Kerning Spec.
The GPOS table checksum must be correct.
GSUB
ATM looks for a GSUB table in every OpenType font to determine if vertical mode is supported (see description below). The requirements stated in thi s section are necessary for ATM to support vertical mode for the font. If any of these requirements are not met, then ATM loads the font but disables vertical mode.
If the GSUB table is present, ATM requires the version to be >= 1.0 and < 2.0. The ScriptList is ignored. If the FeatureList does not contain a 'vrt2' feature, the rest of the GSUB table is ignored. The vrt2 feature must include a single lookup of LookupType 1 (Single Substitution Subtable). The predecessor feature, 'vert', is ignored.
The lookup must contain a single subtable of format 1 (delta) or format 2 (general Single Substitution). The LookupFlag must be zero.
The coverage table must be format 1 (index array) or format 2 (index ranges).
The Windows menuname (name ID FontFamily (1)) must <= 30 characters long (to allow for '@').
The GSUB table checksum must be correct.
EBDT, EBLC, EBSC
ATM does not support bitmaps in OpenType fonts.
vhea
This table is required for fonts that support vertical mode. ATM uses the following fields from the vhea table.
All other fields are ignored.
The vhea table checksum must be correct.
vmtx
This table is required for fonts that support vertical mode.
ATM uses the vMetrics array to obtain advance widths in vertical mode. This includes an implicit advance width when numOfLongVerMetrics is less than numGlyphs. ATM ignores rightSideBearing.
The vmtx table checksum must be correct.
vertical mode
ATM reports a second "face" to the system for fonts that support vertical mode:
The Windows menuname of this face is formed by appending '@' with the normal font menuname.
The font bounding box is rotated 90 degrees counter-clockwise. The metrics derived from the bounding box are recalculated:
The Unicode encoding from the cmap is recalculated, using the one-to-one glyph substitution specified by GSUB 'vrt2'.
When producing glyph data for the @facename, ATM does the following: