Run DateTime: | Monday, 13 January 2025 21:20 |
Machine Name: | fv-az1436-523 |
Font file: | fonts/ttf/Jonova-Bold.ttf |
Error code | Message | Details |
I0004 | The file begins with an Offset Table (file contains a single font) | |
I0005 | Total time validating file | 0:00:55 |
Index: 0, Jonova Bold, Version 2.103 beta, 01/13/2025
Table Tag | Table Offset | Table Length | Table Checksum |
GDEF | 0x00044488 | 0x0000021c | 0xb81eaacf |
GPOS | 0x000446a4 | 0x000015f6 | 0xf358513d |
GSUB | 0x00045c9c | 0x00000ea4 | 0xa8fe392d |
OS/2 | 0x000001a8 | 0x00000060 | 0xf1d933be |
cmap | 0x0000135c | 0x00000c4a | 0x70ad2ffc |
cvt | 0x00002214 | 0x0000002a | 0x046e09cc |
fpgm | 0x00001fa8 | 0x00000173 | 0x065d9c37 |
gasp | 0x00044480 | 0x00000008 | 0x00000010 |
glyf | 0x00003398 | 0x0003dbd3 | 0xc8d49399 |
head | 0x0000012c | 0x00000036 | 0x12465785 |
hhea | 0x00000164 | 0x00000024 | 0x0ba70757 |
hmtx | 0x00000208 | 0x00001152 | 0x091c706f |
loca | 0x00002240 | 0x00001158 | 0x065a0b54 |
maxp | 0x00000188 | 0x00000020 | 0x07161558 |
meta | 0x00046b40 | 0x0000003a | 0x739582ff |
name | 0x00040f6c | 0x0000097e | 0xfb3c0f42 |
post | 0x000418ec | 0x00002b94 | 0x3e3f57d8 |
prep | 0x0000211c | 0x000000f6 | 0xbff37954 |
Error code | Message | Details |
P0011 | The numTables field is non-zero | 18 |
P0010 | The searchRange, entrySelector, and rangeShift fields are all valid | |
P0032 | The directory entry tags are in ascending order | |
P0031 | The directory entry tag names are valid | |
P0030 | The directory entry table offsets are all multiples of 4 | |
P0020 | All required tables are present | |
W0022 | Recommended table is missing | kern |
W0022 | Recommended table is missing | hdmx |
W0022 | Recommended table is missing | VDMX |
W0022 | Recommended table is missing | DSIG |
P0022 | No unnecessary tables are present | |
P0021 | Tables are in optimal order |
Error code | Message | Details |
P4006 | The version numbers 0x00010000 or 0x0001002 are okay | 0x00010002 |
P4002 | All header offsets point within the table | |
P4003 | The Coverage offset is nonzero and points within the GDEF table | LigCaretList |
P4005 | The offsets in the CaretValue array are valid | LigCaretList, LigGlyph[0] |
P4005 | The offsets in the CaretValue array are valid | LigCaretList, LigGlyph[1] |
P4005 | The offsets in the CaretValue array are valid | LigCaretList, LigGlyph[2] |
P4005 | The offsets in the CaretValue array are valid | LigCaretList, LigGlyph[3] |
P4005 | The offsets in the CaretValue array are valid | LigCaretList, LigGlyph[4] |
P4004 | The offsets in the LigGlyph array are valid | LigCaretList |
I4000 | The MarkSetCount of the GDEF table | MarkGlyphSetsDef: MarkSetCount=1 |
P4007 | The MarkGlyphSetsDefTable of the GDEF table is okay | MarkGlyphSetsDef |
Error code | Message | Details |
P4132 | The version number is 0x00010000 | |
P4115 | All header offsets point within the table | |
P5500 | The LangSysTable is valid | ScriptList, ScriptRecord[0](DFLT), ScriptTable, DefaultLangSysTable |
P5900 | The Script Table is valid | ScriptList, ScriptRecord[0](DFLT), ScriptTable |
P5500 | The LangSysTable is valid | ScriptList, ScriptRecord[1](cyrl), ScriptTable, DefaultLangSysTable |
P5900 | The Script Table is valid | ScriptList, ScriptRecord[1](cyrl), ScriptTable |
P5500 | The LangSysTable is valid | ScriptList, ScriptRecord[2](grek), ScriptTable, DefaultLangSysTable |
P5900 | The Script Table is valid | ScriptList, ScriptRecord[2](grek), ScriptTable |
P5500 | The LangSysTable is valid | ScriptList, ScriptRecord[3](latn), ScriptTable, DefaultLangSysTable |
P5900 | The Script Table is valid | ScriptList, ScriptRecord[3](latn), ScriptTable |
P5800 | The ScriptList Table is valid | ScriptList |
P5400 | The Feature table is valid | FeatureList, FeatureRecord[0](kern), FeatureTable |
P5400 | The Feature table is valid | FeatureList, FeatureRecord[1](mark), FeatureTable |
P5300 | The FeatureList table is valid | FeatureList |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[0] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[1] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[2] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[3] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[4] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[5] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[6] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[7] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[8] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[9] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[10] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[11] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[12] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[13] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[14] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[15] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[16] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[17] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[18] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[19] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[20] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[21] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[22] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[23] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[24] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[25] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[26] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[27] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[28] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[29] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[30] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[31] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[32] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[33] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[34] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[35] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[36] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[37] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[38] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[39] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[40] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[41] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[42] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[43] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[44] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[45] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[46] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[47] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[48] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[49] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[50] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[51] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[52] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[53] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[54] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[55] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[56] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[57] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[58] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[59] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[60] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[61] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[62] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[63] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[64] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[65] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[66] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[67] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[68] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[69] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[70] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[71] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[72] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[73] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[74] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[75] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[76] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[77] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[78] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[79] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[80] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[81] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[82] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[83] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[84] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[85] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[86] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[87] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[88] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[89] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[90] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[91] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[92] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[93] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[94] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[95] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[96] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[97] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[98] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[99] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[100] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[101] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[102] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[103] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[104] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[105] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[106] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[107] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[108] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[109] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[110] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[111] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[112] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[113] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[114] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[115] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[116] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[117] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[118] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[119] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[120] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[121] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[122] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[123] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[124] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[125] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[126] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[127] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[128] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[129] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[130] |
P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[131] |
P4124 | The PairPos subtable is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1) |
P4124 | The PairPos subtable is valid | LookupList, Lookup[0], SubTable[1](PairPos, fmt 2) |
P4125 | The PairSet table is valid | LookupList, Lookup[1], SubTable[0](PairPos, fmt 1), PairSet[0] |
P4125 | The PairSet table is valid | LookupList, Lookup[1], SubTable[0](PairPos, fmt 1), PairSet[1] |
P4125 | The PairSet table is valid | LookupList, Lookup[1], SubTable[0](PairPos, fmt 1), PairSet[2] |
P4125 | The PairSet table is valid | LookupList, Lookup[1], SubTable[0](PairPos, fmt 1), PairSet[3] |
P4125 | The PairSet table is valid | LookupList, Lookup[1], SubTable[0](PairPos, fmt 1), PairSet[4] |
P4125 | The PairSet table is valid | LookupList, Lookup[1], SubTable[0](PairPos, fmt 1), PairSet[5] |
P4125 | The PairSet table is valid | LookupList, Lookup[1], SubTable[0](PairPos, fmt 1), PairSet[6] |
P4125 | The PairSet table is valid | LookupList, Lookup[1], SubTable[0](PairPos, fmt 1), PairSet[7] |
P4125 | The PairSet table is valid | LookupList, Lookup[1], SubTable[0](PairPos, fmt 1), PairSet[8] |
P4125 | The PairSet table is valid | LookupList, Lookup[1], SubTable[0](PairPos, fmt 1), PairSet[9] |
P4125 | The PairSet table is valid | LookupList, Lookup[1], SubTable[0](PairPos, fmt 1), PairSet[10] |
P4125 | The PairSet table is valid | LookupList, Lookup[1], SubTable[0](PairPos, fmt 1), PairSet[11] |
P4125 | The PairSet table is valid | LookupList, Lookup[1], SubTable[0](PairPos, fmt 1), PairSet[12] |
P4125 | The PairSet table is valid | LookupList, Lookup[1], SubTable[0](PairPos, fmt 1), PairSet[13] |
P4124 | The PairPos subtable is valid | LookupList, Lookup[1], SubTable[0](PairPos, fmt 1) |
P4101 | The BaseArray table is valid | LookupList, Lookup[2], SubTable[0](MarkBasePos), BaseArray |
P4121 | The MarkBasePos subtable is valid | LookupList, Lookup[2], SubTable[0](MarkBasePos) |
P4101 | The BaseArray table is valid | LookupList, Lookup[3], SubTable[0](MarkBasePos), BaseArray |
P4121 | The MarkBasePos subtable is valid | LookupList, Lookup[3], SubTable[0](MarkBasePos) |
P4101 | The BaseArray table is valid | LookupList, Lookup[4], SubTable[0](MarkBasePos), BaseArray |
P4121 | The MarkBasePos subtable is valid | LookupList, Lookup[4], SubTable[0](MarkBasePos) |
P4101 | The BaseArray table is valid | LookupList, Lookup[5], SubTable[0](MarkBasePos), BaseArray |
P4121 | The MarkBasePos subtable is valid | LookupList, Lookup[5], SubTable[0](MarkBasePos) |
P4101 | The BaseArray table is valid | LookupList, Lookup[6], SubTable[0](MarkBasePos), BaseArray |
P4121 | The MarkBasePos subtable is valid | LookupList, Lookup[6], SubTable[0](MarkBasePos) |
P4101 | The BaseArray table is valid | LookupList, Lookup[7], SubTable[0](MarkBasePos), BaseArray |
P4121 | The MarkBasePos subtable is valid | LookupList, Lookup[7], SubTable[0](MarkBasePos) |
P4101 | The BaseArray table is valid | LookupList, Lookup[8], SubTable[0](MarkBasePos), BaseArray |
P4121 | The MarkBasePos subtable is valid | LookupList, Lookup[8], SubTable[0](MarkBasePos) |
P5600 | The LookupList table is valid | LookupList |
Error code | Message | Details |
P4208 | The version number is 0x00010000 | |
P4204 | All header offsets point within the table | |
P5500 | The LangSysTable is valid | ScriptList, ScriptRecord[0](DFLT), ScriptTable, DefaultLangSysTable |
P5900 | The Script Table is valid | ScriptList, ScriptRecord[0](DFLT), ScriptTable |
P5500 | The LangSysTable is valid | ScriptList, ScriptRecord[1](cyrl), ScriptTable, DefaultLangSysTable |
P5900 | The Script Table is valid | ScriptList, ScriptRecord[1](cyrl), ScriptTable |
P5500 | The LangSysTable is valid | ScriptList, ScriptRecord[2](grek), ScriptTable, DefaultLangSysTable |
P5900 | The Script Table is valid | ScriptList, ScriptRecord[2](grek), ScriptTable |
P5500 | The LangSysTable is valid | ScriptList, ScriptRecord[3](latn), ScriptTable, DefaultLangSysTable |
P5900 | The Script Table is valid | ScriptList, ScriptRecord[3](latn), ScriptTable |
P5800 | The ScriptList Table is valid | ScriptList |
P5400 | The Feature table is valid | FeatureList, FeatureRecord[0](ccmp), FeatureTable |
P5400 | The Feature table is valid | FeatureList, FeatureRecord[1](liga), FeatureTable |
P5300 | The FeatureList table is valid | FeatureList |
P4205 | The LigatureSubst subtable is valid | LookupList, Lookup[0], SubTable[0](LigatureSubst, fmt 1) |
P4205 | The LigatureSubst subtable is valid | LookupList, Lookup[1], SubTable[0](LigatureSubst, fmt 1) |
P4201 | The ChainContextSubst subtable is valid | LookupList, Lookup[2], SubTable[0](ChainContextSubst, fmt 3) |
P4201 | The ChainContextSubst subtable is valid | LookupList, Lookup[2], SubTable[1](ChainContextSubst, fmt 3) |
P4201 | The ChainContextSubst subtable is valid | LookupList, Lookup[2], SubTable[2](ChainContextSubst, fmt 3) |
P4201 | The ChainContextSubst subtable is valid | LookupList, Lookup[2], SubTable[3](ChainContextSubst, fmt 3) |
P4201 | The ChainContextSubst subtable is valid | LookupList, Lookup[2], SubTable[4](ChainContextSubst, fmt 3) |
P4201 | The ChainContextSubst subtable is valid | LookupList, Lookup[2], SubTable[5](ChainContextSubst, fmt 3) |
P4201 | The ChainContextSubst subtable is valid | LookupList, Lookup[2], SubTable[6](ChainContextSubst, fmt 3) |
P4201 | The ChainContextSubst subtable is valid | LookupList, Lookup[2], SubTable[7](ChainContextSubst, fmt 3) |
P4205 | The LigatureSubst subtable is valid | LookupList, Lookup[3], SubTable[0](LigatureSubst, fmt 1) |
P4207 | The SingleSubst subtable is valid | LookupList, Lookup[4], SubTable[0](SingleSubst, fmt 2) |
P4205 | The LigatureSubst subtable is valid | LookupList, Lookup[5], SubTable[0](LigatureSubst, fmt 1) |
P5600 | The LookupList table is valid | LookupList |
Error code | Message | Details |
W2106 | The version number is valid, but less than 5 | 4 |
P2112 | The table length matches the expected length for this version | |
P2120 | The xAvgCharWidth field equals the calculated value | |
P2122 | The usWeightClass is consistent with the PANOSE weight value | |
P2118 | The usWeightClass is a valid value | 700 |
P2119 | The width class is a valid value | 5 |
P2103 | The fsType field is valid | 0x0000, Installable Embedding |
P2109 | All subscript and superscript values appear valid | |
P2108 | The yStrikeoutSize and yStrikeoutPosition appear valid | |
P2107 | The sFamilyClass Class ID and Subclass ID values are in a valid range | |
P2104 | All panose values are in a valid range | |
P2113 | The Unicode Range fields' bits are all allowable values | |
E2101 | There are undefined bits set in fsSelection field | Bit(s) 7 |
P2100 | The usFirstCharIndex and usLastCharIndex fields are valid | first = 0x0020, last = 0xfb02 |
W2117 | The value of sTypoAscender minus sTypoDescender is greater than unitsPerEm | sTypoAscender = 2012, sTypoDescender = -574 |
W2101 | A CodePage bit is set in ulCodePageRange, but the font is missing some of the printable characters from that codepage | bit #0, Latin 1 (missing chars: U00AD) |
W2101 | A CodePage bit is set in ulCodePageRange, but the font is missing some of the printable characters from that codepage | bit #1, Latin 2 (missing chars: U00AD) |
W2101 | A CodePage bit is set in ulCodePageRange, but the font is missing some of the printable characters from that codepage | bit #2, Cyrillic (missing chars: U00AD) |
W2101 | A CodePage bit is set in ulCodePageRange, but the font is missing some of the printable characters from that codepage | bit #3, Greek (missing chars: U00AD) |
W2101 | A CodePage bit is set in ulCodePageRange, but the font is missing some of the printable characters from that codepage | bit #4, Turkish (missing chars: U00AD) |
W2101 | A CodePage bit is set in ulCodePageRange, but the font is missing some of the printable characters from that codepage | bit #7, Baltic (missing chars: U00AD) |
W2101 | A CodePage bit is set in ulCodePageRange, but the font is missing some of the printable characters from that codepage | bit #8, Vietnamese (missing chars: U00AD U01A0 U01AF U01A1 U01B0 U20AB) |
W2100 | A CodePage bit is clear in ulCodePageRange, but the font contains all of the printable characters from that codepage | bit #29, Mac character set |
W2101 | A CodePage bit is set in ulCodePageRange, but the font is missing some of the printable characters from that codepage | bit #48, IBM Greek (missing chars: U00AD) |
W2101 | A CodePage bit is set in ulCodePageRange, but the font is missing some of the printable characters from that codepage | bit #50, MS-DOS Nordic (missing chars: U20A7) |
W2101 | A CodePage bit is set in ulCodePageRange, but the font is missing some of the printable characters from that codepage | bit #54, MS-DOS Icelandic (missing chars: U20A7) |
W2101 | A CodePage bit is set in ulCodePageRange, but the font is missing some of the printable characters from that codepage | bit #55, MS-DOS Portuguese (missing chars: U20A7) |
W2101 | A CodePage bit is set in ulCodePageRange, but the font is missing some of the printable characters from that codepage | bit #56, IBM Turkish (missing chars: U00AD) |
W2101 | A CodePage bit is set in ulCodePageRange, but the font is missing some of the printable characters from that codepage | bit #57, IBM Cyrillic (missing chars: U00AD) |
W2101 | A CodePage bit is set in ulCodePageRange, but the font is missing some of the printable characters from that codepage | bit #58, Latin 2 (missing chars: U00AD) |
W2101 | A CodePage bit is set in ulCodePageRange, but the font is missing some of the printable characters from that codepage | bit #59, MS-DOS Baltic (missing chars: U00AD) |
W2101 | A CodePage bit is set in ulCodePageRange, but the font is missing some of the printable characters from that codepage | bit #62, WE/Latin 1 (missing chars: U00AD) |
W2101 | A CodePage bit is set in ulCodePageRange, but the font is missing some of the printable characters from that codepage | bit #63, US (missing chars: U20A7) |
P2101 | The CodePage Range fields' bits are all allowable values | |
P2110 | The sxHeight field is nonzero | 1004 |
P2105 | The sCapHeight field is nonzero | 1464 |
P2116 | The usDefaultChar field is zero | |
P2114 | The usBreakChar is mapped to a glyf | |
P2124 | The usMaxContext field matches the calculated value | 4 |
Error code | Message | Details |
P0312 | The table version number is 0 | |
P0307 | Each subtable offset is within the table | |
P0306 | Each subtable length is within the table | |
P0309 | The subtables are in the correct order | |
P0302 | There are no duplicate subtables | |
P0308 | No overlapping subtables were found | |
P0310 | Each subtable's format number is valid | |
P0305 | The subtable internal format appears valid | PlatID = 0, EncID = 3, Fmt = 4 |
P0305 | The subtable internal format appears valid | PlatID = 3, EncID = 1, Fmt = 4 |
W0302 | The table does not contain any Apple subtables | |
W0301 | Apple logo mapping test not performed, cmap 1,0 not present | |
P0304 | Character code U+20AC, the euro character, is mapped for cmap 3,1 | |
W0307 | Characters are mapped in the Unicode Private Use area | |
P0314 | All non mac subtables have a language field of zero |
Error code | Message | Details |
P0400 | The length of the cvt table is an even number of bytes |
Error code | Message | Details |
I0900 | Validation for the fpgm table is not directly implemented, but rasterization testing will validate any executed hinting instructions |
Error code | Message | Details |
P1003 | The version number is valid | version = 1 |
P1000 | All of the rangeGaspBehavior fields contain valid flags | |
P1002 | The gaspRange array is in sorted order | |
P1001 | The gaspRange array has a 0xFFFF sentinel | |
P1004 | No adjacent ranges have identical flags |
Error code | Message | Details |
P1700 | Correct format of loca (0 or 1) | |
E1111 | Intersecting contours | Glyph index 20 |
I1111 | Unable to perform test due to previously detected errors | Glyph index 20 Test: ValidateSimpContMisor |
E1111 | Intersecting contours | Glyph index 31 |
I1111 | Unable to perform test due to previously detected errors | Glyph index 31 Test: ValidateSimpContMisor |
W1110 | Intersecting components of composite glyph | Glyph index 375 |
E1111 | Intersecting contours | Glyph index 969 |
I1111 | Unable to perform test due to previously detected errors | Glyph index 969 Test: ValidateSimpContMisor |
W1111 | Duplicated knots | Glyph index 978 |
W1111 | Duplicated knots | Glyph index 979 |
E1111 | Intersecting contours | Glyph index 979 |
I1111 | Unable to perform test due to previously detected errors | Glyph index 979 Test: ValidateSimpContMisor |
W1111 | Duplicated knots | Glyph index 980 |
W1111 | Duplicated knots | Glyph index 982 |
W1111 | Duplicated knots | Glyph index 984 |
W1111 | Duplicated knots | Glyph index 986 |
E1110 | Misoriented contour | Glyph index 986 |
Error code | Message | Details |
P1323 | Table length is 54 bytes | |
P1324 | The table version number is 0x00010000 | |
P1330 | fontRevision is consistent with the font's version string | 2.103 |
P1307 | Font checksum is correct | 0x6830500a |
P1321 | The magic number is 0x5f0f3cf5 | |
W1302 | Non-linear scaling flag (bit 4) is set, but hdmx table is not present | |
W1303 | Non-linear scaling flag (bit 4) is set, but LTSH table is not present | |
P1301 | Reserved bit 14 of the flags field is clear | |
P1302 | Reserved bit 15 of the flags field is clear | |
P1325 | The unitsPerEm value is a power of two in the range 64..16384 | 2048 |
P1300 | The created time is not zero | created = 3416375362 (Wednesday, 04 April 2012 09:09) |
P1322 | The modified time is not zero | modified = 3819647272 (Monday, 13 January 2025 21:07) |
P1327 | The xMin value matches the minimum glyph xMin | xMin = -1108 |
P1329 | The yMin value matches the minimum glyph yMin | yMin = -566 |
P1326 | The xMax value matches the maximum glyph xMax | xMax = 2076 |
P1328 | The yMax value matches the maximum glyph yMax | yMax = 2292 |
P1316 | The macStyle bold bit matches the name table's font subfamily string | |
P1320 | The macStyle italic bit matches the name table's font subfamily string | |
P1314 | The macStyle bold bit matches the OS/2 fsSelection bit | |
P1318 | The macStyle italic bit matches the OS/2 fsSelection bit | |
P1319 | The macStyle italic bit matches the post table italic angle | |
P1313 | The lowestRecPPEM value is in a reasonable range | |
P1308 | The fontDirectionHint is in the range -2..2 | 2 |
P1312 | The indexToLocFormat value is 0 or 1 | 1 |
P1311 | The indexToLocFormat value matches the loca table | 1 |
P1309 | The glyphDataFormat value is 0 |
Error code | Message | Details |
P1406 | The table version number is 0x00010000 | |
P1409 | The Ascender value is greater than zero | |
P1411 | The Descender is less than zero | |
P1410 | Ascender is less than or equal to head.yMax | |
I1402 | Descender should be greater than or equal to head.yMin | Descender = -574, head.yMin = -566 |
P1413 | LineGap is greater than or equal to 0 | |
P1415 | Ascender is same value as OS/2.usWinAscent | |
P1416 | Descender value is the same as OS/2.usWinDescent | |
P1414 | The LineGap is greater to or equal the minimum recommended value | |
P1400 | The advanceWidthMax field equals the calculated value | |
P1402 | The minLeftSideBearing field equals the calculated value | |
P1403 | The minRightSideBearing field equals the calculated value | |
P1407 | The xMaxExtent field equals the calculated value | |
P1405 | The reserved fields are all set to zero | |
P1401 | The metricDataFormat field is set to zero | |
P1404 | The numberOfHMetrics value is consistent with the length of the hmtx table | |
P1408 | The caretSlope angle matches the post.italicAngle |
Error code | Message | Details |
P1501 | The size of the table matches the calculated size | |
P1500 | The horizontal metrics are all within an allowable range of values |
Error code | Message | Details |
P1700 | Correct format of loca (0 or 1) | |
P1704 | The number of entries is equal to (maxp.numGlyphs + 1) | |
P1705 | The entries are sorted in ascending order | |
P1706 | All entries point within range of the glyf table | |
W1701 | Loca references a glyf entry which length is not a multiple of 4 | Number of glyphs with the warning = 583 |
I1700 | Loca references a zero-length entry in the glyf table | Number of glyphs that are empty = 2 |
P1703 | All glyphs in the glyf table are referenced by the loca table |
Error code | Message | Details |
P1905 | Table version is 1.0 and a glyf table is present and no CFF table is present | |
P1902 | Table version is 1.0 and the table is 32 bytes long | |
P1903 | The numGlyphs value equals the number of entries in the loca array plus one | numGlyphs = 1109 |
I1900 | maxSizeOfInstructions via method #1 | maxSizeOfInstructions=609, computed from the glyf table |
P1900 | The points, contours, and component values match the calculated values |
Error code | Message | Details |
I0040 | Not an OpenType table, contents not validated |
Error code | Message | Details |
P2001 | The format selector field is 0 | |
P2007 | No strings extended past the end of the table | |
P2003 | The NameRecords array is in sorted order | |
P2006 | No name records are using reserved Name IDs | |
E2003 | The table doesn't contain strings for Mac platform | |
P2009 | The version string is in the correct format | platID = 3, encID = 1, langID = 1033, "Version 2.103 beta" |
P2004 | All strings had valid Platform Specific Encoding IDs | |
P2002 | All Microsoft unicode strings had valid Language IDs | |
P2008 | The length of every unicode string is an even # of bytes | |
E2008 | The PostScript string is not present for both required platforms | Mac Postscript string is missing, but MS Postscript string is present |
P2010 | The subfamily string is consistent with the style of the font | |
P2015 | No name record specified Unicode Variation Sequences cmap subtable | PlatformID=0, EncodingID=5 is for Variation Sequences (Format 14) |
I2002 | No string for Typographic Family name (Name ID 16) | |
I2004 | No string for Typographic Subfamily name (Name ID 17) | |
P2012 | No inconsistencies were found for Copyright strings | |
P2014 | No inconsistencies were found for Trademark strings | |
P2013 | No inconsistencies were found for Description strings |
Error code | Message | Details |
P2304 | The table length is valid | |
P2308 | The version number is valid | |
P2302 | The italicAngle value is reasonable and consistent with other tables | |
P2305 | The underlinePosition value is not less than hhea.Descender | |
P2306 | The underlineThickness value is reasonable | |
P2301 | The isFixedPitch field is consistent with other table(s) | matches the hmtx and OS/2 tables |
P2307 | The numberOfGlyphs field equals maxp.numGlyphs | |
P2300 | The glyphNameIndex array contains valid indexes | |
P2303 | The names in the post table are consistent with the Adobe Glyph List names |
Error code | Message | Details |
I2400 | Validation for the prep table is not directly implemented, but rasterization testing will validate any executed hinting instructions |
Error code | Message | Details |
P6000 | No problems were found during rasterization testing |
Error code | Message | Details |
P6000 | No problems were found during rasterization testing |
Error code | Message | Details |
P6000 | No problems were found during rasterization testing |
Note: The Font Validator's helpfile contains detailed information about each error message. The latest OpenType specification is available at the Microsoft Typography website.