1ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/* 2ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 3ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * (C) Copyright IBM Corp. 1998-2004 - All Rights Reserved 4ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 5ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 6ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 7ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#ifndef __MORPHTABLES_H 8ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define __MORPHTABLES_H 9ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 10ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/** 11ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * \file 12ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * \internal 13ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 14ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 15ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "LETypes.h" 16ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "LayoutTables.h" 17ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 18ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QueruU_NAMESPACE_BEGIN 19ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 20ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruclass LEGlyphStorage; 21ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 22ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querutypedef le_uint32 FeatureFlags; 23ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 24ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querutypedef le_int16 FeatureType; 25ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querutypedef le_int16 FeatureSetting; 26ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 27ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustruct FeatureTableEntry 28ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{ 29ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru FeatureType featureType; 30ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru FeatureSetting featureSetting; 31ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru FeatureFlags enableFlags; 32ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru FeatureFlags disableFlags; 33ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru}; 34ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 35ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustruct ChainHeader 36ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{ 37ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru FeatureFlags defaultFlags; 38ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint32 chainLength; 39ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_int16 nFeatureEntries; 40ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_int16 nSubtables; 41ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru FeatureTableEntry featureTable[ANY_NUMBER]; 42ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru}; 43ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 44ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustruct MorphTableHeader 45ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{ 46ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_int32 version; 47ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint32 nChains; 48ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru ChainHeader chains[ANY_NUMBER]; 49ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 50ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru void process(LEGlyphStorage &glyphStorage) const; 51ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru}; 52ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 53ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querutypedef le_int16 SubtableCoverage; 54ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 55ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruenum SubtableCoverageFlags 56ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{ 57ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru scfVertical = 0x8000, 58ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru scfReverse = 0x4000, 59ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru scfIgnoreVt = 0x2000, 60ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru scfReserved = 0x1FF8, 61ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru scfTypeMask = 0x0007 62ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru}; 63ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 64ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruenum MorphSubtableType 65ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{ 66ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru mstIndicRearrangement = 0, 67ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru mstContextualGlyphSubstitution = 1, 68ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru mstLigatureSubstitution = 2, 69ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru mstReservedUnused = 3, 70ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru mstNonContextualGlyphSubstitution = 4, 71ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru mstContextualGlyphInsertion = 5 72ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru}; 73ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 74ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustruct MorphSubtableHeader 75ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{ 76ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_int16 length; 77ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru SubtableCoverage coverage; 78ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru FeatureFlags subtableFeatures; 79ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 80ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru void process(LEGlyphStorage &glyphStorage) const; 81ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru}; 82ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 83ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QueruU_NAMESPACE_END 84ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif 85ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 86