/* * * (C) Copyright IBM Corp. 1998-2004 - All Rights Reserved * */ #ifndef __MORPHTABLES_H #define __MORPHTABLES_H /** * \file * \internal */ #include "LETypes.h" #include "LayoutTables.h" U_NAMESPACE_BEGIN class LEGlyphStorage; typedef le_uint32 FeatureFlags; typedef le_int16 FeatureType; typedef le_int16 FeatureSetting; struct FeatureTableEntry { FeatureType featureType; FeatureSetting featureSetting; FeatureFlags enableFlags; FeatureFlags disableFlags; }; struct ChainHeader { FeatureFlags defaultFlags; le_uint32 chainLength; le_int16 nFeatureEntries; le_int16 nSubtables; FeatureTableEntry featureTable[ANY_NUMBER]; }; struct MorphTableHeader { le_int32 version; le_uint32 nChains; ChainHeader chains[ANY_NUMBER]; void process(LEGlyphStorage &glyphStorage) const; }; typedef le_int16 SubtableCoverage; enum SubtableCoverageFlags { scfVertical = 0x8000, scfReverse = 0x4000, scfIgnoreVt = 0x2000, scfReserved = 0x1FF8, scfTypeMask = 0x0007 }; enum MorphSubtableType { mstIndicRearrangement = 0, mstContextualGlyphSubstitution = 1, mstLigatureSubstitution = 2, mstReservedUnused = 3, mstNonContextualGlyphSubstitution = 4, mstContextualGlyphInsertion = 5 }; struct MorphSubtableHeader { le_int16 length; SubtableCoverage coverage; FeatureFlags subtableFeatures; void process(LEGlyphStorage &glyphStorage) const; }; U_NAMESPACE_END #endif