![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Microsoft Typography | Developer... | OpenType specification | OpenType tables | The MMSD table | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
This table contains supplementary data enabling MM fonts to be used on a host. The MMSD table consists of a header that contains a version number of the table (version), initially set to 1.0 (0x00010000), and offsets to the axis, instance, and style tables (axis, instance, and style). An empty (missing) table is indicated by setting the corresponding offset to NULL.
Axis Table The axis table contains supplementary axis information. It consists of an axis count (nAxes), the size of an axis (axisSize), and an array of AxisRecords.
AxisRecord An AxisRecord specifies a long and short label offsets(longLabel and shortLabel) to Pascal strings that are used for UI display and PostScript font naming, respectively, e.g. "Weight" and " wt". (The first byte of a Pascal string specifies the number of string bytes that follow.)
The instance table contains supplementary instance information. It consists of an instance count (nInstances), the size an instance (instanceSize), and an array of InstanceRecords. The first instance record (index 0) specifies the default instance.
InstanceRecord An InstanceRecord specifies a primary instance name suffix offset (nameSuffix) to a Pascal string that is appended to the 533-converted FontName and an underscore character in order to form the instance FontName. For example, FontName "CaflischScriptMM" becomes "CafliScrMM" after applying the 533 rule, and becomes "CafliScrMM_280 LT" after appending an underscore and the instance name suffix of "280 LT".
Style Table
The style table contains supplementary style information.
It consists of a style count (nStyles), the size of a style (styleSize), and an array of
StyleRecords.
StyleRecord
A StyleRecord specifies style modifications that
may be applied to an axis. It consists of an axis index (axis), style modification
flags (flags), and an array of two ActionRecords. The flag specifies one
of four style bits: bold, italic, condensed, and extended; all other bits are
reserved.
ActionRecord An ActionRecord specifies the style modification at a point on the axis. It consists of an axis coordinate point (point) and the change applied to the axis coordinate (delta) at that point. Two ActionRecords may be used to specify different behaviors at two points. Intermediate points then interpolate between these. (If two points and therefore two actions aren't required the second ActionRecord may be marked as inactive with a delta field of zero.)
The use of offset and record size fields in MMSD table allows for a very flexible upgrade path without breaking existing implementations. However, for this scheme to be successful implementations must use these fields when calculating offsets for subtable and array element access. The Pascal string data for the short and long labels and the instance name suffix follows the last defined table.
Example of MMSD table for CaflishScriptMM, a single
axis multiple master font with 4 primary instances and one style. version =1.0 (00010000) The weight varies along the axis from design coordinate
280 (light) to design coordinate 640 (bold). The style table specifies
bold style modifications using a 2-point interpolation scheme:
coord 280 556
Bold styles applied to points between the second point and the end of the axis (640) add the delta (84) to that point and then clamp the result to the end of the axis ensuring the result is within the range of valid axis coordinates.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Microsoft Typography | Developer... | OpenType specification | OpenType tables | The MMSD table | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |