| Run DateTime: | Monday, 13 January 2025 21:16 |
| Machine Name: | fv-az1436-523 |
| Font file: | fonts/ttf/Jonova-BoldItalic.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:53 |
Index: 0, Jonova Bold Italic, Version 2.103 beta, 01/13/2025
| Table Tag | Table Offset | Table Length | Table Checksum |
| GDEF | 0x00040bac | 0x0000021c | 0xb841aacf |
| GPOS | 0x00040dc8 | 0x00001622 | 0x5a5dfaf7 |
| GSUB | 0x000423ec | 0x00000ea4 | 0xa8fe392d |
| OS/2 | 0x000001a8 | 0x00000060 | 0xf1d9343e |
| cmap | 0x0000135c | 0x00000c4a | 0x70ad2ffc |
| cvt | 0x00002214 | 0x0000002a | 0x046e09cc |
| fpgm | 0x00001fa8 | 0x00000173 | 0x066d9c37 |
| gasp | 0x00040ba4 | 0x00000008 | 0x00000010 |
| glyf | 0x00003398 | 0x0003a2c2 | 0x31a433b7 |
| head | 0x0000012c | 0x00000036 | 0x126c576f |
| hhea | 0x00000164 | 0x00000024 | 0x0d340e04 |
| hmtx | 0x00000208 | 0x00001152 | 0x08868fd2 |
| loca | 0x00002240 | 0x00001158 | 0x05f1fdef |
| maxp | 0x00000188 | 0x00000020 | 0x071615ad |
| meta | 0x00043290 | 0x0000003a | 0x739582ff |
| name | 0x0003d65c | 0x000009b4 | 0x026f13f5 |
| post | 0x0003e010 | 0x00002b94 | 0x3e3557d8 |
| 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] |
| P4125 | The PairSet table is valid | LookupList, Lookup[0], SubTable[0](PairPos, fmt 1), PairSet[132] |
| 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 |
| W1112 | Not all extremes are marked with the on-curve control points | Glyph index 447 |
| W1112 | Not all extremes are marked with the on-curve control points | Glyph index 942 |
| W1112 | Not all extremes are marked with the on-curve control points | Glyph index 946 |
| W1112 | Not all extremes are marked with the on-curve control points | Glyph index 955 |
| 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 | 0xb86546af |
| 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 = 3416375365 (Wednesday, 04 April 2012 09:09) |
| P1322 | The modified time is not zero | modified = 3819647277 (Monday, 13 January 2025 21:07) |
| P1327 | The xMin value matches the minimum glyph xMin | xMin = -1174 |
| P1329 | The yMin value matches the minimum glyph yMin | yMin = -566 |
| P1326 | The xMax value matches the maximum glyph xMax | xMax = 2178 |
| P1328 | The yMax value matches the maximum glyph yMax | yMax = 2262 |
| 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 = 570 |
| 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=688, 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.