The 'fdsc'
table
Introduction
The font descriptors table (tag name: 'fdsc'
) allows applications to take an existing run of text and allow the user to specify a new font family for that run of text. A new style run that best preserves the font style information using the new font family will be created by using the style information that you provide.
All fonts should have an 'fdsc'
table to ensure compatibility with applications that support font family conversions.
A standard list of tags has been defined by Apple Computer Inc. These include common descriptors like weight, width, optical size, and many others. Additional font tags can be defined by registering them with Apple.
The 'fdsc'
table contains the descriptive information required to provide font family substitution. The font descriptor array consists of <tag, value> pairs. Each pair describes a specific attribute of your font.
The introduction provided some examples of cases in which an application that supports text style matching is used to replace an old style run with a new font family to provide a new style run.
Font Descriptors Table Format
The font descriptors table consists of a font descriptors table header and a font descriptor array. The overall structure of the font descriptors table is shown in the following figure:
The font descriptors table header format is as follows:
Type |
Name |
Description |
---|---|---|
fixed32 | version | Version number of the font descriptors table (0x00010000 for the current version). |
uint32 | descriptorCount | Number of style descriptors that will be included to characterize this font. Each descriptor consists of a <tag, value> pair. These pairs are located in the gxFontDescriptor array that follows. |
gxFontDescriptor | descriptor[] | List of tagged-coordinate pairs. |
The format for the font descriptor array is shown in the following table:
Type |
Name |
Description |
---|---|---|
uint32 | tag | The 4-byte table tag name. |
fixed32 | value | The value for the descriptor tag. |
The descriptors currently defined are these:
Name |
Tag |
Value |
Description |
---|---|---|---|
Weight | wght | 1.0 | Percent weight relative to regular weight. |
Width | wdth | 1.0 | Percent width relative to regular width. |
Slant | slnt | 0.0 | Angle of slant in degrees, where positive is clockwise from straight up. |
Optical size | opsz | 12.0 | Point size the font was designed for. |
Non-alphabetic | nalf | 0 | These values are treated as integers, not fixed32s. 0 means alphabetic, and greater integers mean the font is non-alphabetic (e.g. symbols). |
The non-alphabetic code values are:
Code |
Meaning |
---|---|
0 | Alphabetic |
1 | Dingbats |
2 | Pi characters |
3 | Fleurons |
4 | Decorative borders |
5 | International symbols |
6 | Math symbols |
Font Descriptors Table Example
This example font has two style descriptors. The following table summarizes the font descriptor data for this font.
Descriptor Tag |
Descriptor Value |
---|---|
'wght' | +0.8 |
'wdth' | +1.0 |
The Font Descriptors Table for this example font is given in this table:
Offset/ |
Value |
Name |
Comment |
---|---|---|---|
0/4 | 0x00010000 | version | Version number of the glyph properties table, in fixed-point format. |
4/4 | 2 | descriptorCount | Number of style descriptors (<tag, value> pairs) used to describe this font is 2. |
(The font descriptor array follows. There are two style descriptors in the array) | |||
8/4 | 0x77676874 | tag | Descriptor tag is 'wght'. |
12/4 | 0x0000CCCC | value | Descriptor value for 'wght' is +0.8. |
16/4 | 0x77647468 | tag | Descriptor tag is 'wdth'. |
20/4 | 0x00010000 | value | Descriptor value for 'wdth' is +1.0. |