1 /* 2 * 3 * (C) Copyright IBM Corp. 1998-2005 - All Rights Reserved 4 * 5 */ 6 7 #ifndef __LOOKUPS_H 8 #define __LOOKUPS_H 9 10 /** 11 * \file 12 * \internal 13 */ 14 15 #include "LETypes.h" 16 #include "OpenTypeTables.h" 17 18 U_NAMESPACE_BEGIN 19 20 enum LookupFlags 21 { 22 lfBaselineIsLogicalEnd = 0x0001, // The MS spec. calls this flag "RightToLeft" but this name is more accurate 23 lfIgnoreBaseGlyphs = 0x0002, 24 lfIgnoreLigatures = 0x0004, 25 lfIgnoreMarks = 0x0008, 26 lfReservedMask = 0x00F0, 27 lfMarkAttachTypeMask = 0xFF00, 28 lfMarkAttachTypeShift = 8 29 }; 30 31 struct LookupSubtable 32 { 33 le_uint16 subtableFormat; 34 Offset coverageTableOffset; 35 36 inline le_int32 getGlyphCoverage(LEGlyphID glyphID) const; 37 38 le_int32 getGlyphCoverage(Offset tableOffset, LEGlyphID glyphID) const; 39 }; 40 41 struct LookupTable 42 { 43 le_uint16 lookupType; 44 le_uint16 lookupFlags; 45 le_uint16 subTableCount; 46 Offset subTableOffsetArray[ANY_NUMBER]; 47 48 const LookupSubtable *getLookupSubtable(le_uint16 subtableIndex) const; 49 }; 50 51 struct LookupListTable 52 { 53 le_uint16 lookupCount; 54 Offset lookupTableOffsetArray[ANY_NUMBER]; 55 56 const LookupTable *getLookupTable(le_uint16 lookupTableIndex) const; 57 }; 58 59 inline le_int32 LookupSubtable::getGlyphCoverage(LEGlyphID glyphID) const 60 { 61 return getGlyphCoverage(coverageTableOffset, glyphID); 62 } 63 64 U_NAMESPACE_END 65 #endif 66