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.
Type | Name | Description |
---|---|---|
fixed32 | version | Version of MMFX table -Initially 0x00010000 |
Offset | metricId | Offset to metric id table -from beginning of MMFX table, may be NULL |
Offset | ascent | Offset to MM ascent metric -from beginning of MMFX table |
Offset | descent | Offset to MM descent metric -from beginning of MMFX table |
Offset | lineGap | Offset to MM lineGap metric -from beginning of MMFX 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.
Type | Name | Description |
---|---|---|
uint16 | nIds | Number of id-indexed metrics |
uint16 | offSize | Offset size (bytes) |
Offset | offset[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.