[>64k:layout:GDEF] Implement version 2 Implements https://github.com/be-fonts/boring-expansion-spec/issues/36 Subset does NOT lower format.
diff --git a/src/hb-ot-layout-gdef-table.hh b/src/hb-ot-layout-gdef-table.hh index a890225..22e1772 100644 --- a/src/hb-ot-layout-gdef-table.hh +++ b/src/hb-ot-layout-gdef-table.hh
@@ -621,6 +621,9 @@ { switch (u.version.major) { case 1: return u.version1.get_size (); +#ifndef HB_NO_BORING_EXPANSION + case 2: return u.version2.get_size (); +#endif default: return u.version.static_size; } } @@ -631,6 +634,9 @@ if (unlikely (!u.version.sanitize (c))) return_trace (false); switch (u.version.major) { case 1: return_trace (u.version1.sanitize (c)); +#ifndef HB_NO_BORING_EXPANSION + case 2: return_trace (u.version2.sanitize (c)); +#endif default: return_trace (true); } } @@ -639,6 +645,9 @@ { switch (u.version.major) { case 1: return u.version1.subset (c); +#ifndef HB_NO_BORING_EXPANSION + case 2: return u.version2.subset (c); +#endif default: return false; } } @@ -647,6 +656,9 @@ { switch (u.version.major) { case 1: return u.version1.glyphClassDef != 0; +#ifndef HB_NO_BORING_EXPANSION + case 2: return u.version2.glyphClassDef != 0; +#endif default: return false; } } @@ -654,6 +666,9 @@ { switch (u.version.major) { case 1: return this+u.version1.glyphClassDef; +#ifndef HB_NO_BORING_EXPANSION + case 2: return this+u.version2.glyphClassDef; +#endif default: return Null(ClassDef); } } @@ -661,6 +676,9 @@ { switch (u.version.major) { case 1: return u.version1.attachList != 0; +#ifndef HB_NO_BORING_EXPANSION + case 2: return u.version2.attachList != 0; +#endif default: return false; } } @@ -668,6 +686,9 @@ { switch (u.version.major) { case 1: return this+u.version1.attachList; +#ifndef HB_NO_BORING_EXPANSION + case 2: return this+u.version2.attachList; +#endif default: return Null(AttachList); } } @@ -675,6 +696,9 @@ { switch (u.version.major) { case 1: return u.version1.ligCaretList != 0; +#ifndef HB_NO_BORING_EXPANSION + case 2: return u.version2.ligCaretList != 0; +#endif default: return false; } } @@ -682,6 +706,9 @@ { switch (u.version.major) { case 1: return this+u.version1.ligCaretList; +#ifndef HB_NO_BORING_EXPANSION + case 2: return this+u.version2.ligCaretList; +#endif default: return Null(LigCaretList); } } @@ -689,6 +716,9 @@ { switch (u.version.major) { case 1: return u.version1.markAttachClassDef != 0; +#ifndef HB_NO_BORING_EXPANSION + case 2: return u.version2.markAttachClassDef != 0; +#endif default: return false; } } @@ -696,6 +726,9 @@ { switch (u.version.major) { case 1: return this+u.version1.markAttachClassDef; +#ifndef HB_NO_BORING_EXPANSION + case 2: return this+u.version2.markAttachClassDef; +#endif default: return Null(ClassDef); } } @@ -703,6 +736,9 @@ { switch (u.version.major) { case 1: return u.version.to_int () >= 0x00010002u && u.version1.markGlyphSetsDef != 0; +#ifndef HB_NO_BORING_EXPANSION + case 2: return u.version2.markGlyphSetsDef != 0; +#endif default: return false; } } @@ -710,6 +746,9 @@ { switch (u.version.major) { case 1: return u.version.to_int () >= 0x00010002u ? this+u.version1.markGlyphSetsDef : Null(MarkGlyphSets); +#ifndef HB_NO_BORING_EXPANSION + case 2: return this+u.version2.markGlyphSetsDef; +#endif default: return Null(MarkGlyphSets); } } @@ -717,6 +756,9 @@ { switch (u.version.major) { case 1: return u.version.to_int () >= 0x00010003u && u.version1.varStore != 0; +#ifndef HB_NO_BORING_EXPANSION + case 2: return u.version2.varStore != 0; +#endif default: return false; } } @@ -724,6 +766,9 @@ { switch (u.version.major) { case 1: return u.version.to_int () >= 0x00010003u ? this+u.version1.varStore : Null(VariationStore); +#ifndef HB_NO_BORING_EXPANSION +#endif + case 2: return this+u.version2.varStore; default: return Null(VariationStore); } } @@ -829,6 +874,9 @@ union { FixedVersion<> version; /* Version identifier */ GDEFVersion1_2<SmallTypes> version1; +#ifndef HB_NO_BORING_EXPANSION + GDEFVersion1_2<MediumTypes> version2; +#endif } u; public: DEFINE_SIZE_MIN (4);