MMFX

This table stores multiple master metrics as self-delimiting Type 2 font programs. The metric value of a particular instance is found by interpreting the metric charstring at that instance yielding a metric value on the Type 2 interpreter stack. The MMFX table consists of a header that contains a version number (version), initially set to 1.0 (0x00010000), and offsets to the metric id table, ascent, descent, and lineGap metrics (id, ascent, descent, and lineGap). The ascent, descent, and lineGap fields are the multiple master equivalents of the single master metrics found in the hhea table. An empty (missing) id table is indicated with a NULL offset.
 
TypeName Description
fixed32 versionVersion of MMFX table
-Initially 0x00010000
OffsetmetricIdOffset to metric id table
-from beginning of MMFX table, may be NULL
OffsetascentOffset to MM ascent metric
-from beginning of MMFX table
OffsetdescentOffset to MM descent metric
-from beginning of MMFX table
OffsetlineGapOffset to MM lineGap metric
-from beginning of MMFX table
  

Metric Id Table

The metric id table stores interpreted metrics that are accessed using metric ids specified in the GPOS, BASE, or GDEF tables. It consists of an id count (nIds), and offset size (offSize), and an array of offsets (offset). The offSize field may specify 2- or 4-byte offsets based on the maximum offset that is stored in the array.

An id is used to index the offset array and thereby locate the corresponding charstring which is interpreted to yield the required metric.
 
TypeNameDescription
uint16nIdsNumber of id-indexed metrics
uint16offSizeOffset size (bytes)
Offsetoffset[nIds]Offset array, from beginning of MMFX table
  

The interpreted metric data follows the metric id table.

The API interface to the MMFX table requires the device context and metric id parameters and returns X or Y fixed32 results.