|
|
OS/2 - OS/2 and Windows Metrics (Version 1)
NOTE: This is maintained for purposes of being able to validate
version 1 OS/2 tables.
The OS/2 table consists of a set of metrics
that are required in OpenType fonts. The layout of version 1 of this table is as follows:
version
Format: |
2-byte unsigned short |
Units: |
n/a |
Title: |
OS/2 table version number. |
Description: |
The version number for this OS/2 table.
|
Comments: |
The version number allows for identification of the precise contents and layout for the OS/2 table. The version number for this layout is one (1). The version number for the previous layout (in rev.1.5 of this spec and earlier) was zero (0). Version 0 of the OS/2 table was 78 bytes; Version 1 is 86 bytes, having added the ulCodePageRange1 and ulCodePageRange2 fields. |
xAvgCharWidth
Format: |
2-byte signed short |
Units: |
Pels / em units |
Title: |
Average weighted escapement. |
Description: |
The Average Character Width parameter specifies the arithmetic average of the escapement (width) of all of the 26 lowercase letters a through z of the Latin alphabet and the space character. If any of the 26 lowercase letters are not present, this parameter should equal the weighted average of all glyphs in the font. For non-UGL (platform 3, encoding 0) fonts, use the unweighted average.
|
Comments: |
This parameter is a descriptive attribute of the font
that specifies the spacing of characters for comparing one font
to another for selection or substitution. For proportionally spaced
fonts, this value is useful in estimating the length for lines
of text. The weighting factors provided with this example are
only valid for Latin lowercase letters. If other character sets,
or capital letters are used, the corresponding frequency of use values
should be used. One needs to be careful when comparing fonts
that use different frequency of use values for font mapping. The
average character width for the following set of upper and lowercase letters only, is calculated according to this formula: Sum the individual character
widths multiplied by the following weighting factors and then
divide by 1000. For example: |
Letter |
Weight Factor |
Letter |
Weight Factor |
a |
64 |
o |
56 |
b |
14 |
p |
17 |
c |
27 |
q |
4 |
d |
35 |
r |
49 |
e |
100 |
s |
56 |
f |
20 |
t |
71 |
g |
14 |
u |
31 |
h |
42 |
v |
10 |
i |
63 |
w |
18 |
j |
3 |
x |
3 |
k |
6 |
y |
18 |
l |
35 |
z |
2 |
m |
20 |
space |
166 |
n |
56 |
|
|
usWeightClass
Format: |
2-byte unsigned short |
Title: |
Weight class. |
Description: |
Indicates the visual weight (degree of blackness
or thickness of strokes) of the characters in the font. |
Comments: |
Value |
Description |
C Definition (from windows.h) |
100 |
Thin |
FW_THIN |
200 |
Extra-light (Ultra-light) |
FW_EXTRALIGHT |
300 |
Light |
FW_LIGHT |
400 |
Normal (Regular) |
FW_NORMAL |
500 |
Medium |
FW_MEDIUM |
600 |
Semi-bold (Demi-bold) |
FW_SEMIBOLD |
700 |
Bold |
FW_BOLD |
800 |
Extra-bold (Ultra-bold) |
FW_EXTRABOLD |
900 |
Black (Heavy) |
FW_BLACK |
usWidthClass
Format: |
2-byte unsigned short |
Title: |
Width class. |
Description: |
Indicates a relative change from the normal aspect
ratio (width to height ratio) as specified by a font designer
for the glyphs in a font. |
Comments: |
Although every character in a font
may have a different numeric aspect ratio, each character in a
font of normal width has a relative aspect ratio of one. When
a new type style is created of a different width class (either
by a font designer or by some automated means) the relative aspect
ratio of the characters in the new font is some percentage greater
or less than those same characters in the normal font -- it is
this difference that this parameter specifies. |
Value |
Description |
C Definition |
% of normal |
1 |
Ultra-condensed |
FWIDTH_ULTRA_CONDENSED |
50 |
2 |
Extra-condensed |
FWIDTH_EXTRA_CONDENSED |
62.5 |
3 |
Condensed |
FWIDTH_CONDENSED |
75 |
4 |
Semi-condensed |
FWIDTH_SEMI_CONDENSED |
87.5 |
5 |
Medium (normal) |
FWIDTH_NORMAL |
100 |
6 |
Semi-expanded |
FWIDTH_SEMI_EXPANDED |
112.5 |
7 |
Expanded |
FWIDTH_EXPANDED |
125 |
8 |
Extra-expanded |
FWIDTH_EXTRA_EXPANDED |
150 |
9 |
Ultra-expanded |
FWIDTH_ULTRA_EXPANDED |
200 |
fsType
Format: |
2-byte unsigned short |
Title: |
Type flags. |
Description: |
Indicates font embedding licensing rights for the
font. Embeddable fonts may be stored in a document. When a document
with embedded fonts is opened on a system that does not have the
font installed (the remote system), the embedded font may be loaded
for temporary (and in some cases, permanent) use on that system
by an embedding-aware application. Embedding licensing rights
are granted by the vendor of the font.
The OpenType Font Embedding DLL Specification and DLL
release notes describe the APIs used to implement support for
OpenType font embedding and loading. Applications that implement
support for font embedding, either through use of the Font Embedding
DLL or through other means, must not embed fonts which are not
licensed to permit embedding. Further, applications loading embedded
fonts for temporary use (see Preview & Print and Editable
embedding below) must delete the fonts when the document
containing the embedded font is closed.
|
Bit |
Bit Mask |
Description |
|
0x0000 |
Installable Embedding: No fsType bit is set. Thus fsType is zero.
Fonts with this setting indicate that they may be embedded and permanently installed on the remote system by an application. The user of the remote system acquires the identical rights, obligations and licenses for that font as the original purchaser of the font, and is subject to the same end-user license agreement, copyright, design patent, and/or trademark as was the original purchaser. |
0 |
0x0001 |
Reserved, must be zero. |
1 |
0x0002 |
Restricted License embedding:
Fonts that have only this bit set must not be modified, embedded or exchanged in any manner without first obtaining permission of the legal owner. Caution: For Restricted License embedding to take effect, it must be the only level of embedding selected. |
2 |
0x0004 |
Preview & Print embedding: When this bit is set, the font may be embedded, and temporarily loaded on the remote system. Documents containing Preview & Print fonts must be opened "read-only;" no edits can be applied to the document. |
3 |
0x0008 |
Editable embedding: When this bit is set, the font may be embedded but must only be installed temporarily on other systems. In contrast to Preview
& Print fonts, documents containing Editable fonts may be opened for reading, editing is permitted, and changes may be saved.
|
4-15 |
|
Reserved, must be zero. |
Comments: |
If multiple embedding bits
are set, the least restrictive license granted takes precedence.
For example, if bits 1 and 3 are set, bit 3 takes precedence
over bit 1and the font may be embedded with Editable rights. For
compatibility purposes, most vendors granting Editable embedding
rights are also setting the Preview & Print bit (0x000C).
This will permit an application that only supports Preview &
Print embedding to detect that font embedding is allowed. |
|
Restricted License embedding (0x0002): Fonts that have this bit set must not be modified, embedded or exchanged in any manner without first obtaining permission of the legal owner. Caution: note that for Restricted License embedding to take effect, it must be the only level of embedding selected (as noted in the previous paragraph).
|
|
Preview & Print embedding (0x0004): Fonts with this bit set indicate that they may be embedded within documents but must only be installed temporarily on the remote system. Any document which includes a Preview & Print embedded font must be opened “read-only;” the application must not allow the user to edit the document; it can only be viewed and/or printed. |
|
Editable embedding (0x0008): Fonts with this bit set indicate that they may be embedded in documents, but must only be installed temporarily on the remote system. In contrast to Preview & Print fonts, documents containing Editable fonts may be opened “read-write;” editing is permitted, and changes may be saved. |
|
Installable embedding (0x0000): Fonts with this setting indicate that they may be embedded and permanently installed on the remote system by an application. The user of the remote system acquires the identical rights, obligations and licenses for that font as the original purchaser of the font, and is subject to the same end-user license agreement, copyright, design patent, and/or trademark as was the original purchaser. |
ySubscriptXSize
Format: |
2-byte signed short |
Units: |
Font design units |
Title: |
Subscript horizontal font size. |
Description: |
The recommended horizontal
size in font design units for subscripts for this font. |
Comments: |
If a font has two recommended sizes for subscripts,
e.g., numerics and other, the numeric sizes should be stressed.
This size field maps to the em square size of the font being used
for a subscript. The horizontal font size specifies a font designer's
recommended horizontal font size for subscript characters associated
with this font. If a font does not include all of the required
subscript characters for an application, and the application can
substitute characters by scaling the character of a font or by
substituting characters from another font, this parameter specifies
the recommended em square for those subscript characters.
For example, if the em square for a font is 2048 and ySubScriptXSize
is set to 205, then the horizontal size for a simulated subscript
character would be 1/10th the size of the normal character.
|
ySubscriptYSize
Format: |
2-byte signed short |
Units: |
Font design units |
Title: |
Subscript vertical font size. |
Description: |
The recommended vertical
size in font design units for subscripts for this font. |
Comments: |
If a font has two recommended sizes for subscripts,
e.g. numerics and other, the numeric sizes should be stressed.
This size field maps to the emHeight of the font being used for
a subscript. The horizontal font size specifies a font designer's
recommendation for horizontal font size of subscript characters
associated with this font. If a font does not include all of
the required subscript characters for an application, and the
application can substitute characters by scaling the characters
in a font or by substituting characters from another font, this
parameter specifies the recommended horizontal EmInc for those
subscript characters.
For example, if the em square for a font is 2048 and ySubScriptYSize
is set to 205, then the vertical size for a simulated subscript
character would be 1/10th the size of the normal character.
|
ySubscriptXOffset
Format: |
2-byte signed short |
Units: |
Font design units |
Title: |
Subscript x offset. |
Description: |
The recommended horizontal
offset in font design untis for subscripts for this font. |
Comments: |
The Subscript X Offset parameter specifies a font designer's
recommended horizontal offset -- from the character origin of
the font to the character origin of the subscript's character
-- for subscript characters associated with this font. If a font
does not include all of the required subscript characters for
an application, and the application can substitute characters,
this parameter specifies the recommended horizontal position from
the character escapement point of the last character before the
first subscript character. For upright characters, this value
is usually zero; however, if the characters of a font have an
incline (italic characters) the reference point for subscript
characters is usually adjusted to compensate for the angle of
incline. |
ySubscriptYOffset
Format: |
2-byte signed short |
Units: |
Font design units |
Title: |
Subscript y offset. |
Description: |
The recommended vertical offset in font design units
from the baseline for subscripts for this font. |
Comments: |
The Subscript Y Offset parameter specifies a font designer's
recommended vertical offset from the character baseline to the
character baseline for subscript characters associated with this
font. Values are expressed as a positive offset below the character
baseline. If a font does not include all of the required subscript
for an application, this parameter specifies the recommended vertical
distance below the character baseline for those subscript characters. |
ySuperscriptXSize
Format: |
2-byte signed short |
Units: |
Font design units |
Title: |
Superscript horizontal font
size. |
Description: |
The recommended horizontal
size in font design units for superscripts for this font. |
Comments: |
If a font has two recommended sizes for subscripts,
e.g., numerics and other, the numeric sizes should be stressed.
This size field maps to the em square size of the font being used
for a subscript. The horizontal font size specifies a font designer's
recommended horizontal font size for superscript characters associated
with this font. If a font does not include all of the required
superscript characters for an application, and the application
can substitute characters by scaling the character of a font or
by substituting characters from another font, this parameter specifies
the recommended em square for those superscript characters.
For example, if the em square for a font is 2048 and ySuperScriptXSize
is set to 205, then the horizontal size for a simulated superscript
character would be 1/10th the size of the normal character. |
ySuperscriptYSize
Format: |
2-byte signed short |
Units: |
Font design units |
Title: |
Superscript vertical font size. |
Description: |
The recommended vertical
size in font design units for superscripts for this font. |
Comments: |
If a font has two recommended sizes for subscripts,
e.g., numerics and other, the numeric sizes should be stressed.
This size field maps to the emHeight of the font being used for
a subscript. The vertical font size specifies a font designer's
recommended vertical font size for superscript characters associated
with this font. If a font does not include all of the required
superscript characters for an application, and the application
can substitute characters by scaling the character of a font or
by substituting characters from another font, this parameter specifies
the recommended EmHeight for those superscript characters.
For example, if the em square for a font is 2048 and ySuperScriptYSize
is set to 205, then the vertical size for a simulated superscript
character would be 1/10th the size of the normal character. |
ySuperscriptXOffset
Format: |
2-byte signed short |
Units: |
Font design units |
Title: |
Superscript x offset. |
Description: |
The recommended horizontal
offset in font design units for superscripts for this font. |
Comments: |
The Superscript X Offset parameter specifies a font
designer's recommended horizontal offset -- from the character
origin to the superscript character's origin for the superscript
characters associated with this font. If a font does not include
all of the required superscript characters for an application,
this parameter specifies the recommended horizontal position from
the escapement point of the character before the first superscript
character. For upright characters, this value is usually zero;
however, if the characters of a font have an incline (italic characters)
the reference point for superscript characters is usually adjusted
to compensate for the angle of incline.
|
ySuperscriptYOffset
Format: |
2-byte signed short |
Units: |
Font design units |
Title: |
Superscript y offset. |
Description: |
The recommended vertical offset in font design units
from the baseline for superscripts for this font. |
Comments: |
The Superscript Y Offset parameter specifies a font
designer's recommended vertical offset -- from the character baseline
to the superscript character's baseline associated with this font.
Values for this parameter are expressed as a positive offset
above the character baseline. If a font does not include all
of the required superscript characters for an application, this
parameter specifies the recommended vertical distance above the
character baseline for those superscript characters. |
yStrikeoutSize
Format: |
2-byte signed short |
Units: |
Font design units |
Title: |
Strikeout size. |
Description: |
Width of the strikeout
stroke in font design units. |
Comments: |
This field should normally be the width of the em dash
for the current font. If the size is one, the strikeout line will
be the line represented by the strikeout position field. If the
value is two, the strikeout line will be the line represented
by the strikeout position and the line immediately above
the strikeout position. For a Roman font with a 2048 em square,
102 is suggested. |
yStrikeoutPosition
Format: |
2-byte signed short |
Units: |
Font design units |
Title: |
Strikeout position. |
Description: |
The position of the top of the strikeout
stroke relative to the baseline in font design units. |
Comments: |
Positive values represent distances above the baseline,
while negative values represent distances below the baseline.
A value of zero falls directly on the baseline, while a value
of one falls one pel above the baseline. The value of strikeout
position should not interfere with the recognition of standard
characters, and therefore should not line up with crossbars in
the font. For a Roman font with a 2048 em square, 460 is suggested. |
sFamilyClass
Format: |
2-byte signed short |
Title: |
Font-family class and subclass. |
Description: |
This parameter is a classification
of font-family design. |
Comments: |
The font class and font subclass are registered values
assigned by IBM to each font family. This parameter is intended
for use in selecting an alternate font when the requested font
is not available. The font class is the most general and the font
subclass is the most specific. The high byte of this field contains
the family class, while the low byte contains the family subclass.
|
Panose
Format: |
10 byte array |
Title: |
PANOSE classification number |
International: |
Additional specifications are required for PANOSE
to classify non-Latin character sets. |
Description: |
This 10 byte series of numbers is used to describe
the visual characteristics of a given typeface. These characteristics
are then used to associate the font with other fonts of similar
appearance having different names. The variables for each digit
are listed below. The Panose values are fully described in the Panose "greybook" reference, currently owned by Agfa-Monotype. |
Comments: |
The PANOSE definition contains ten digits each of which
currently describes up to sixteen variations. Windows uses
bFamilyType, bSerifStyle and bProportion in the font mapper to
determine family type. It also uses bProportion to determine
if the font is monospaced. If the font is a symbol font, the first byte of the PANOSE number (bFamilyType) must be set to "pictorial." Good PANOSE values in fonts are very valuable to users of the Windows fonts folder. The specification for assigning PANOSE values is located at http://www.fonts.com/hp/panose/greybook/ |
PANOSE
Type |
Name |
Description |
BYTE |
bFamilyType; |
Family Type |
BYTE |
bSerifStyle; |
Serif Style |
BYTE |
bWeight; |
Weight |
BYTE |
bProportion; |
Proportion |
BYTE |
bContrast; |
Contrast |
BYTE |
bStrokeVariation; |
Stroke Variation |
BYTE |
bArmStyle; |
Arm Style |
BYTE |
bLetterform; |
Letterform |
BYTE |
bMidline; |
Midline |
BYTE |
bXHeight; |
X Height |
Family Type
Value |
Description |
0 |
Any |
1 |
No Fit |
2 |
Text and Display |
3 |
Script |
4 |
Decorative |
5 |
Pictorial |
Serif Style
Value |
Description |
0 |
Any |
1 |
No Fit |
2 |
Cove |
3 |
Obtuse Cove |
4 |
Square Cove |
5 |
Obtuse Square Cove |
6 |
Square |
7 |
Thin |
8 |
Bone |
9 |
Exaggerated |
10 |
Triangle |
11 |
Normal Sans |
12 |
Obtuse Sans |
13 |
Perp Sans |
14 |
Flared |
15 |
Rounded |
Weight
Value |
Description |
0 |
Any |
1 |
No Fit |
2 |
Very Light |
3 |
Light |
4 |
Thin |
5 |
Book |
6 |
Medium |
7 |
Demi |
8 |
Bold |
9 |
Heavy |
10 |
Black |
11 |
Nord |
Proportion
Value |
Description |
0 |
Any |
1 |
No Fit |
2 |
Old Style |
3 |
Modern |
4 |
Even Width |
5 |
Expanded |
6 |
Condensed |
7 |
Very Expanded |
8 |
Very Condensed |
9 |
Monospaced |
Contrast
Value |
Description |
0 |
Any |
1 |
No Fit |
2 |
None |
3 |
Very Low |
4 |
Low |
5 |
Medium Low |
6 |
Medium |
7 |
Medium High |
8 |
High |
9 |
Very High |
Stroke Variation
Value |
Description |
0 |
Any |
1 |
No Fit |
2 |
Gradual/Diagonal |
3 |
Gradual/Transitional |
4 |
Gradual/Vertical |
5 |
Gradual/Horizontal |
6 |
Rapid/Vertical |
7 |
Rapid/Horizontal |
8 |
Instant/Vertical |
Arm Style
Value |
Description |
0 |
Any |
1 |
No Fit |
2 |
Straight Arms/Horizontal |
3 |
Straight Arms/Wedge |
4 |
Straight Arms/Vertical |
5 |
Straight Arms/Single Serif |
6 |
Straight Arms/Double Serif |
7 |
Non-Straight Arms/Horizontal |
8 |
Non-Straight Arms/Wedge |
9 |
Non-Straight Arms/Vertical |
10 |
Non-Straight Arms/Single Serif |
11 |
Non-Straight Arms/Double Serif |
Letterform
Value |
Description |
0 |
Any |
1 |
No Fit |
2 |
Normal/Contact |
3 |
Normal/Weighted |
4 |
Normal/Boxed |
5 |
Normal/Flattened |
6 |
Normal/Rounded |
7 |
Normal/Off Center |
8 |
Normal/Square |
9 |
Oblique/Contact |
10 |
Oblique/Weighted |
11 |
Oblique/Boxed |
12 |
Oblique/Flattened |
13 |
Oblique/Rounded |
14 |
Oblique/Off Center |
15 |
Oblique/Square |
Midline
Value |
Description |
0 |
Any |
1 |
No Fit |
2 |
Standard/Trimmed |
3 |
Standard/Pointed |
4 |
Standard/Serifed |
5 |
High/Trimmed |
6 |
High/Pointed |
7 |
High/Serifed |
8 |
Constant/Trimmed |
9 |
Constant/Pointed |
10 |
Constant/Serifed |
11 |
Low/Trimmed |
12 |
Low/Pointed |
13 |
Low/Serifed |
X-height
Value |
Description |
0 |
Any |
1 |
No Fit |
2 |
Constant/Small |
3 |
Constant/Standard |
4 |
Constant/Large |
5 |
Ducking/Small |
6 |
Ducking/Standard |
7 |
Ducking/Large |
ulUnicodeRange1 (Bits 0-31)
ulUnicodeRange2 (Bits 32-63)
ulUnicodeRange3 (Bits 64-95)
ulUnicodeRange4 (Bits 96-127)
Format: |
32-bit unsigned long(4 copies) totaling 128 bits. |
Title: |
Unicode Character Range |
Description: |
This field is used to specify the Unicode
blocks or ranges encompassed by the font file in the 'cmap' subtable
for platform 3, encoding ID 1 (Microsoft platform). If the bit
is set (1) then the Unicode range is considered functional. If
the bit is clear (0) then the range is not considered functional.
Each of the bits is treated as an independent flag and the bits
can be set in any combination. The determination of "functional"
is left up to the font designer, although character set selection
should attempt to be functional by ranges if at all possible.
All reserved fields must be zero. Each long is in Big-Endian
form. See the Basic Multilingual Plane of ISO/IEC 10646-1 or the
Unicode Standard v.3.0 for the list of Unicode ranges and characters. |
Bit |
Description |
0 |
Basic Latin |
1 |
Latin-1 Supplement |
2 |
Latin Extended-A |
3 |
Latin Extended-B |
4 |
IPA Extensions |
5 |
Spacing Modifier Letters |
6 |
Combining Diacritical Marks |
7 |
Basic Greek |
8 |
Greek Symbols and Coptic |
9 |
Cyrillic |
10 |
Armenian |
11 |
Basic Hebrew |
12 |
Hebrew Extended (A and B blocks combined) |
13 |
Basic Arabic |
14 |
Arabic Extended |
15 |
Devanagari |
16 |
Bengali |
17 |
Gurmukhi |
18 |
Gujarati |
19 |
Oriya |
20 |
Tamil |
21 |
Telugu |
22 |
Kannada |
23 |
Malayalam |
24 |
Thai |
25 |
Lao |
26 |
Basic Georgian |
27 |
Georgian Extended |
28 |
Hangul Jamo |
29 |
Latin Extended Additional |
30 |
Greek Extended |
31 |
General Punctuation |
32 |
Superscripts And Subscripts |
33 |
Currency Symbols |
34 |
Combining Diacritical Marks For Symbols |
35 |
Letterlike Symbols |
36 |
Number Forms |
37 |
Arrows |
38 |
Mathematical Operators |
39 |
Miscellaneous Technical |
40 |
Control Pictures |
41 |
Optical Character Recognition |
42 |
Enclosed Alphanumerics |
43 |
Box Drawing |
44 |
Block Elements |
45 |
Geometric Shapes |
46 |
Miscellaneous Symbols |
47 |
Dingbats |
48 |
CJK Symbols And Punctuation |
49 |
Hiragana |
50 |
Katakana |
51 |
Bopomofo |
52 |
Hangul Compatibility Jamo |
53 |
CJK Miscellaneous |
54 |
Enclosed CJK Letters And Months |
55 |
CJK Compatibility |
56 |
Hangul |
57 |
Reserved for Unicode SubRanges |
58 |
Reserved for Unicode SubRanges |
59 |
CJK Unified Ideographs |
60 |
Private Use Area |
61 |
CJK Compatibility Ideographs |
62 |
Alphabetic Presentation Forms |
63 |
Arabic Presentation Forms-A |
64 |
Combining Half Marks |
65 |
CJK Compatibility Forms |
66 |
Small Form Variants |
67 |
Arabic Presentation Forms-B |
68 |
Halfwidth And Fullwidth Forms |
69 |
Specials |
70-127 |
Reserved for Unicode SubRanges |
achVendID
Format: |
4-byte character array |
Title: |
Font Vendor Identification |
Description: |
The four character identifier
for the vendor of the given type face. |
Comments: |
This is not the royalty owner of the original artwork.
This is the company responsible for the marketing and distribution
of the typeface that is being classified. It is reasonable to
assume that there will be 6 vendors of ITC Zapf Dingbats for use
on desktop platforms in the near future (if not already). It
is also likely that the vendors will have other inherent benefits
in their fonts (more kern pairs, unregularized data, hand hinted,
etc.). This identifier will allow for the correct vendor's type
to be used over another, possibly inferior, font file. The Vendor
ID value is not required.
Microsoft has assigned values for some font suppliers as listed
below. Uppercase vendor ID's are reserved by Microsoft. Other
suppliers can choose their own mixed case or lowercase ID's, or
leave the field blank. |
fsSelection
Format: |
2-byte bit field. |
Title: |
Font selection flags. |
Description: |
Contains information concerning
the nature of the font patterns, as follows: |
Bit # |
macStyle bit |
C definition |
Description |
0 |
bit 1 |
ITALIC |
Font contains Italic characters, otherwise they are upright. |
1 |
|
UNDERSCORE |
Characters are underscored. |
2 |
|
NEGATIVE |
Characters have their foreground and background reversed. |
3 |
|
OUTLINED |
Outline (hollow) characters, otherwise they are solid. |
4 |
|
STRIKEOUT |
Characters are overstruck. |
5 |
bit 0 |
BOLD |
Characters are emboldened. |
6 |
|
REGULAR |
Characters are in the standard weight/style for the font. |
Comments: |
All undefined bits must be
zero.
This field contains information on the original design of the
font. Bits 0 & 5 can be used to determine if the font was
designed with these features or whether some type of machine simulation
was performed on the font to achieve this appearance. Bits 1-4
are rarely used bits that indicate the font is primarily a decorative
or special purpose font.
If bit 6 is set, then bits 0 and 5 must be clear, else the behavior
is undefined. As noted above, the settings of bits 0 and 1 must
be reflected in the macStyle bits in the 'head' table. While bit
6 on implies that bits 0 and 1 of macStyle are clear (along with
bits 0 and 5 of fsSelection), the reverse is not true. Bits 0
and 1 of macStyle (and 0 and 5 of fsSelection) may be clear and
that does not give any indication of whether or not bit 6 of fsSelection
is clear (e.g., Arial Light would have all bits cleared; it is
not the regular version of Arial). |
usFirstCharIndex
Format: |
2-byte USHORT |
Description: |
The minimum Unicode index (character code) in this
font, according to the cmap subtable for platform ID 3 and platform- specific encoding
ID 0 or 1. For most fonts supporting Win-ANSI or other character
sets, this value would be 0x0020. |
usLastCharIndex
Format: |
2-byte USHORT |
Description: |
The maximum Unicode index (character code) in this
font, according to the cmap subtable for platform ID 3 and encoding
ID 0 or 1. This value depends on which character sets the font
supports. |
sTypoAscender
Format: |
SHORT |
Description: |
The typographic ascender for this font. Remember
that this is not the same as the Ascender value in the 'hhea'
table, which Apple defines in a far different manner. One good
source for sTypoAscender in Latin based fonts is the Ascender value from an AFM file. For CJK fonts see below.
The suggested usage for sTypoAscender is that it be used in
conjunction with unitsPerEm to compute a typographically correct
default line spacing. The goal is to free applications from Macintosh
or Windows-specific metrics which are constrained by backward
compatibility requirements. These new metrics, when combined with
the character design widths, will allow applications to lay out
documents in a typographically correct and portable fashion. These
metrics will be exposed through Windows APIs. Macintosh applications
will need to access the 'sfnt' resource and parse it to extract
this data from the "OS/2" table.
For CJK (Chinese, Japanese, and Korean) fonts that are intended to be used for vertical writing (in addition to horizontal writing), the required value for sTypoAscender is that which describes the top of the of the ideographic em-box. For example, if the ideographic em-box of the font extends from coordinates 0,-120 to 1000,880 (that is, a 1000x1000 box set 120 design units below the Latin baseline), then the value of sTypoAscender must be set to 880. Failing to adhere to these requirements will result in incorrect vertical layout.
|
sTypoDescender
Format: |
SHORT |
Description: |
The typographic descender for this font. Remember
that this is not the same as the Descender value in the 'hhea'
table, which Apple defines in a far different manner. One good
source for sTypoDescender in Latin based fonts is the Descender value from an AFM
file. For CJK fonts see below.
The suggested usage for sTypoDescender is that it be used in
conjunction with unitsPerEm to compute a typographically correct
default line spacing. The goal is to free applications from Macintosh
or Windows-specific metrics which are constrained by backward
compatability requirements. These new metrics, when combined with
the character design widths, will allow applications to lay out
documents in a typographically correct and portable fashion. These
metrics will be exposed through Windows APIs. Macintosh applications
will need to access the 'sfnt' resource and parse it to extract
this data from the "OS/2" table (unless Apple exposes
the 'OS/2' table through a new API).
For CJK (Chinese, Japanese, and Korean) fonts that are intended to be used for vertical writing (in addition to horizontal writing), the required value for sTypoDescender is that which describes the bottom of the of the ideographic em-box. For example, if the ideographic em-box of the font extends from coordinates 0,-120 to 1000,880 (that is, a 1000x1000 box set 120 design units below the Latin baseline), then the value of sTypoDescender must be set to -120. Failing to adhere to these requirements will result in incorrect vertical layout.
|
sTypoLineGap
Format: |
2-byte SHORT |
Description: |
The typographic line gap for this font. Remember
that this is not the same as the LineGap value in the 'hhea' table,
which Apple defines in a far different manner.
The suggested usage for usTypoLineGap is that it be used in
conjunction with unitsPerEm to compute a typographically correct
default line spacing. Typical values average 7-10% of units per
em. The goal is to free applications from Macintosh or Windows-specific
metrics which are constrained by backward compatability requirements
(see chapter, "Recommendations for Windows Fonts). These
new metrics, when combined with the character design widths, will
allow applications to lay out documents in a typographically correct
and portable fashion. These metrics will be exposed through Windows
APIs. Macintosh applications will need to access the 'sfnt' resource
and parse it to extract this data from the "OS/2" table
(unless Apple exposes the 'OS/2' table through a new API) |
usWinAscent
Format: |
2-byte USHORT |
Description: |
The ascender metric for Windows. This, too, is distinct
from Apple's Ascender value and from the usTypoAscender values.
usWinAscent is computed as the yMax for all characters in the
Windows ANSI character set. usWinAscent is used to compute the
Windows font height and default line spacing. For platform 3 encoding
0 fonts, it is the same as yMax. Windows will clip the bitmap of any portion of a glyph that appears above this value. Some applications use this value to determine default line spacing. This is strongly discouraged. The typographic ascender, descender and line gap fields in conjunction with unitsPerEm should be used for this purpose. Developers should set this field keeping the above factors in mind.
If any clipping is unacceptable, then the value should be set to yMax.
However, if a developer desires to provide appropriate default line spacing using this field, for those applications that continue to use this field for doing so (against OpenType recommendations), then the value should be set appropriately. In such a case, it may result in some glyph bitmaps being clipped. |
usWinDescent
Format: |
2-byte USHORT |
Description: |
The descender metric for Windows. This, too, is distinct
from Apple's Descender value and from the usTypoDescender values.
usWinDescent is computed as the -yMin for all characters in the
Windows ANSI character set. usWinDescent is used to compute the
Windows font height and default line spacing. For platform 3 encoding
0 fonts, it is the same as -yMin. Windows will clip the bitmap of any portion of a glyph that appears below this value. Some applications use this value to determine default line spacing. This is strongly discouraged. The typographic ascender, descender and line gap fields in conjunction with unitsPerEm should be used for this purpose. Developers should set this field keeping the above factors in mind.
If any clipping is unacceptable, then the value should be set to yMin.
However, if a developer desires to provide appropriate default line spacing using this field, for those applications that continue to use this field for doing so (against OpenType recommendations), then the value should be set appropriately. In such a case, it may result in some glyph bitmaps being clipped. |
ulCodePageRange1 Bits 0-31
ulCodePageRange2 Bits 32-63
Format: |
32-bit unsigned long(2 copies) totaling 64 bits. |
Title: |
Code Page Character Range |
Description: |
This field is used to specify the code pages
encompassed by the font file in the 'cmap' subtable for platform
3, encoding ID 1 (Microsoft platform). If the font file is encoding
ID 0, then the Symbol Character Set bit should be set. If the
bit is set (1) then the code page is considered functional. If
the bit is clear (0) then the code page is not considered functional.
Each of the bits is treated as an independent flag and the bits
can be set in any combination. The determination of "functional"
is left up to the font designer, although character set selection
should attempt to be functional by code pages if at all possible.
Symbol character sets have a special meaning. If the symbol bit
(31) is set, and the font file contains a 'cmap' subtable for
platform of 3 and encoding ID of 1, then all of the characters
in the Unicode range 0xF000 - 0xF0FF (inclusive) will be used
to enumerate the symbol character set. If the bit is not set,
any characters present in that range will not be enumerated as
a symbol character set.
All reserved fields must be zero. Each long is in Big-Endian
form. |
Bit |
Code Page |
Description |
0 |
1252 |
Latin 1 |
1 |
1250 |
Latin 2: Eastern Europe |
2 |
1251 |
Cyrillic |
3 |
1253 |
Greek |
4 |
1254 |
Turkish |
5 |
1255 |
Hebrew |
6 |
1256 |
Arabic |
7 |
1257 |
Windows Baltic |
8-15 |
|
Reserved for Alternate ANSI |
16 |
874 |
Thai |
17 |
932 |
JIS/Japan |
18 |
936 |
Chinese: Simplified chars--PRC and Singapore |
19 |
949 |
Korean Wansung |
20 |
950 |
Chinese: Traditional chars--Taiwan and Hong Kong |
21 |
1361 |
Korean Johab |
22-28 |
|
Reserved for Alternate ANSI & OEM |
29 |
|
Macintosh Character Set (US Roman) |
30 |
|
OEM Character Set |
31 |
|
Symbol Character Set |
32-47 |
|
Reserved for OEM |
48 |
869 |
IBM Greek |
49 |
866 |
MS-DOS Russian |
50 |
865 |
MS-DOS Nordic |
51 |
864 |
Arabic |
52 |
863 |
MS-DOS Canadian French |
53 |
862 |
Hebrew |
54 |
861 |
MS-DOS Icelandic |
55 |
860 |
MS-DOS Portuguese |
56 |
857 |
IBM Turkish |
57 |
855 |
IBM Cyrillic; primarily Russian |
58 |
852 |
Latin 2 |
59 |
775 |
MS-DOS Baltic |
60 |
737 |
Greek; former 437 G |
61 |
708 |
Arabic; ASMO 708 |
62 |
850 |
WE/Latin 1 |
63 |
437 |
US |
|
|