Issues with OpenType/CFF and TrueType fonts in MS Font Validator
Version 1.2 — October 2019
Copyright
Copyright 2016 Adobe Systems Incorporated. All rights reserved.
Introduction
The following is a list of inappropriate error messages issued by the MS Font Validator version 1.0.1286.23890 for Adobe OpenType/CFF and TrueType fonts. These messages should be ignored when checking OpenType fonts that have CFF or TrueType font data. Note that these issues may be fixed in newer versions of the MS Font Validator.
1. Messages caused by the absence of a table that is TrueType specific
1.a. OpenType CFF fonts do not need or use these tables:
W0022 Recommended table is missing gasp
W0022 Recommended table is missing kern
W0022 Recommended table is missing hdmx
W0022 Recommended table is missing VDMX
E6059 Could not perform rasterization Unable to get data from rasterizer. 'glyf' table is not valid.
2. Messages caused by layout tables
2.a. The following message is caused by the presence of the GPOS ‘size’ feature, which correctly uses a non-NULL FeatureParams pointer. This feature is registered.
E5400 The FeatureParams field is not null FeatureList, FeatureRecord[30](size), FeatureTable
W5300 The FeatureRecord tag is valid, but unregistered FeatureList, FeatureRecord[<nnn>], tag = 'ss01'
3. Messages caused by OS/2 table version 4
3.a. Presence of this table version causes the following messages:
E2127 The table length does not match the expected length for this version
E2132 The version number is invalid 4
W0051 Cannot perform test due to other errors in this table OS/2 table appears to be corrupt. No further tests will be performed
W2106 The version number is valid, but less than 3 2
4. Messages caused by differences in approach by Adobe and MS
4.a. Adobe does not require that a font contain all the glyphs in a code page in order to declare support for that code page. As a result the following message may be seen:
W2101 A CodePage bit is set in ulCodePageRange, but the font is missing some of the printable characters from that codepage bit #<n>...
4.b. The first release of the Adobe OpenType fonts contained PUA (Private Use Area) Unicode values. Future versions of the same fonts will contain the same PUA values in order to avoid problems between versions. However, we agree that it is best to avoid using PUA values when possible, and new fonts will not have them. As a result, the following message may be seen:
W0307 Characters are mapped in the Unicode Private Use Area
4.c. The head table contains a value which indicates the lowest size at which the font can be read. This makes sense for TrueType fonts, where the font itself controls many details of hinting, and the designer can usefully determine the threshold of legibility. However, in the CFF model, the hints are only suggestions, and the rasterizer may change over time. The Adobe Type Department chooses to set this value to 3 as being so low that it will not interfere with future improvements in rasterization and anti-aliasing. As a result, the following warning will be seen:
W1305 The lowestRecPPEM value may be unreasonably small lowestRecPPEM = 3
4.d. A font which is not an italic style of another face in the same family can nevertheless have large italic angle. Examples are script fonts and italic designs which are the only font in the family. In this case the Adobe Type Department prefers to enter the real italic angle in the post table italicAngle field. This way, the insertion bar is correctly slanted in most programs. However, this will cause the following messages:
E1316 The macStyle italic bit is clear, but the post table italic angle is nonzero
E2308 The italicAngle is nonzero, but the head.macStyle italic bit is not set
4.e. The Adobe Type Department prefers to set the hhea table Ascender/Descender to the same value as the OS/2 table sTypoAscender/Descender, rather than the OS/2 table usWinAscent/Descent. We also prefer to set the LineGap to 20% of the em-square, although other choices are reasonable. As a result, the following messages are usually shown:
W1404 The LineGap value is less than the recommended value LineGap = 200, recommended = <n>
W1405 Ascender is different than OS/2.usWinAscent. Different line heights on Windows and Apple hhea.Ascender = <n1>, OS/2.usWinAscent = <n2>
W1406 Descender is different than OS/2.usWinDescent. Different line heights on Windows and Apple hhea.Descender = <n1>, OS/2.usWinDescent = <n2>
5. Messages caused by MS Validator bugs
E1703 Loca entry points outside the glyf range | Number of glyphs with the error = X
Document Version History
Version 1.0 First version. Read Roberts 4/24/2007
Version 1.1 Added section #5. Miguel Sousa 8/31/2015
Version 1.2 Converted to Markdown + minor edits. Josh Hadley 10/2019