* PosLookup
*/
-enum {
- GPOS_Single = 1,
- GPOS_Pair = 2,
- GPOS_Cursive = 3,
- GPOS_MarkBase = 4,
- GPOS_MarkLig = 5,
- GPOS_MarkMark = 6,
- GPOS_Context = 7,
- GPOS_ChainContext = 8,
- GPOS_Extension = 9,
-};
-
struct PosLookupSubTable
{
friend struct PosLookup;
+ enum {
+ Single = 1,
+ Pair = 2,
+ Cursive = 3,
+ MarkBase = 4,
+ MarkLig = 5,
+ MarkMark = 6,
+ Context = 7,
+ ChainContext = 8,
+ Extension = 9,
+ };
+
inline bool apply (APPLY_ARG_DEF, unsigned int lookup_type) const
{
switch (lookup_type) {
- case GPOS_Single: return u.single->apply (APPLY_ARG);
- case GPOS_Pair: return u.pair->apply (APPLY_ARG);
- case GPOS_Cursive: return u.cursive->apply (APPLY_ARG);
- case GPOS_MarkBase: return u.markBase->apply (APPLY_ARG);
- case GPOS_MarkLig: return u.markLig->apply (APPLY_ARG);
- case GPOS_MarkMark: return u.markMark->apply (APPLY_ARG);
- case GPOS_Context: return u.context->apply (APPLY_ARG);
- case GPOS_ChainContext: return u.chainContext->apply (APPLY_ARG);
- case GPOS_Extension: return u.extension->apply (APPLY_ARG);
+ case Single: return u.single->apply (APPLY_ARG);
+ case Pair: return u.pair->apply (APPLY_ARG);
+ case Cursive: return u.cursive->apply (APPLY_ARG);
+ case MarkBase: return u.markBase->apply (APPLY_ARG);
+ case MarkLig: return u.markLig->apply (APPLY_ARG);
+ case MarkMark: return u.markMark->apply (APPLY_ARG);
+ case Context: return u.context->apply (APPLY_ARG);
+ case ChainContext: return u.chainContext->apply (APPLY_ARG);
+ case Extension: return u.extension->apply (APPLY_ARG);
default:return false;
}
}
private:
union {
- USHORT format;
- SinglePos single[];
- PairPos pair[];
- CursivePos cursive[];
- MarkBasePos markBase[];
- MarkLigPos markLig[];
- MarkMarkPos markMark[];
- ContextPos context[];
- ChainContextPos chainContext[];
- ExtensionPos extension[];
+ USHORT format;
+ SinglePos single[];
+ PairPos pair[];
+ CursivePos cursive[];
+ MarkBasePos markBase[];
+ MarkLigPos markLig[];
+ MarkMarkPos markMark[];
+ ContextPos context[];
+ ChainContextPos chainContext[];
+ ExtensionPos extension[];
} u;
};
ASSERT_SIZE (PosLookupSubTable, 2);
{
unsigned int type = get_type ();
- if (HB_UNLIKELY (type == GPOS_Extension))
+ if (HB_UNLIKELY (type == PosLookupSubTable::Extension))
{
unsigned int count = get_subtable_count ();
type = get_subtable(0).u.extension->get_type ();
{
unsigned int lookup_type = get_type ();
- if (HB_UNLIKELY (lookup_type == GPOS_Extension))
+ if (HB_UNLIKELY (lookup_type == PosLookupSubTable::Extension))
return false;
return ((PosLookupSubTable&)*(((char *) this) + get_offset ())).apply (APPLY_ARG, lookup_type);
* SubstLookup
*/
-enum {
- GSUB_Single = 1,
- GSUB_Multiple = 2,
- GSUB_Alternate = 3,
- GSUB_Ligature = 4,
- GSUB_Context = 5,
- GSUB_ChainContext = 6,
- GSUB_Extension = 7,
- GSUB_ReverseChainSingle = 8,
-};
-
struct SubstLookupSubTable
{
friend struct SubstLookup;
+ enum {
+ Single = 1,
+ Multiple = 2,
+ Alternate = 3,
+ Ligature = 4,
+ Context = 5,
+ ChainContext = 6,
+ Extension = 7,
+ ReverseChainSingle = 8,
+ };
+
inline bool apply (APPLY_ARG_DEF, unsigned int lookup_type) const
{
switch (lookup_type) {
- case GSUB_Single: return u.single->apply (APPLY_ARG);
- case GSUB_Multiple: return u.multiple->apply (APPLY_ARG);
- case GSUB_Alternate: return u.alternate->apply (APPLY_ARG);
- case GSUB_Ligature: return u.ligature->apply (APPLY_ARG);
- case GSUB_Context: return u.context->apply (APPLY_ARG);
- case GSUB_ChainContext: return u.chainContext->apply (APPLY_ARG);
- case GSUB_Extension: return u.extension->apply (APPLY_ARG);
- case GSUB_ReverseChainSingle: return u.reverseChainContextSingle->apply (APPLY_ARG);
+ case Single: return u.single->apply (APPLY_ARG);
+ case Multiple: return u.multiple->apply (APPLY_ARG);
+ case Alternate: return u.alternate->apply (APPLY_ARG);
+ case Ligature: return u.ligature->apply (APPLY_ARG);
+ case Context: return u.context->apply (APPLY_ARG);
+ case ChainContext: return u.chainContext->apply (APPLY_ARG);
+ case Extension: return u.extension->apply (APPLY_ARG);
+ case ReverseChainSingle: return u.reverseChainContextSingle->apply (APPLY_ARG);
default:return false;
}
}
{
unsigned int type = get_type ();
- if (HB_UNLIKELY (type == GSUB_Extension))
+ if (HB_UNLIKELY (type == SubstLookupSubTable::Extension))
{
unsigned int count = get_subtable_count ();
type = get_subtable(0).u.extension->get_type ();
inline bool is_reverse (void) const
{
- return HB_UNLIKELY (get_effective_type () == GSUB_ReverseChainSingle);
+ return HB_UNLIKELY (get_effective_type () == SubstLookupSubTable::ReverseChainSingle);
}
inline bool apply_subtables (hb_ot_layout_t *layout,
{
unsigned int lookup_type = get_type ();
- if (HB_UNLIKELY (lookup_type == GSUB_Extension))
+ if (HB_UNLIKELY (lookup_type == SubstLookupSubTable::Extension))
return false;
return ((SubstLookupSubTable&)*(((char *) this) + get_offset ())).apply (APPLY_ARG, lookup_type);