sl@0: /* sl@0: * sl@0: * (C) Copyright IBM Corp. 1998-2005 - All Rights Reserved sl@0: * sl@0: */ sl@0: sl@0: #ifndef __LOOKUPS_H sl@0: #define __LOOKUPS_H sl@0: sl@0: /** sl@0: * \file sl@0: * \internal sl@0: */ sl@0: sl@0: #include "LETypes.h" sl@0: #include "OpenTypeTables.h" sl@0: sl@0: U_NAMESPACE_BEGIN sl@0: sl@0: enum LookupFlags sl@0: { sl@0: lfBaselineIsLogicalEnd = 0x0001, // The MS spec. calls this flag "RightToLeft" but this name is more accurate sl@0: lfIgnoreBaseGlyphs = 0x0002, sl@0: lfIgnoreLigatures = 0x0004, sl@0: lfIgnoreMarks = 0x0008, sl@0: lfReservedMask = 0x00F0, sl@0: lfMarkAttachTypeMask = 0xFF00, sl@0: lfMarkAttachTypeShift = 8 sl@0: }; sl@0: sl@0: struct LookupSubtable sl@0: { sl@0: le_uint16 subtableFormat; sl@0: Offset coverageTableOffset; sl@0: sl@0: inline le_int32 getGlyphCoverage(LEGlyphID glyphID) const; sl@0: sl@0: le_int32 getGlyphCoverage(Offset tableOffset, LEGlyphID glyphID) const; sl@0: }; sl@0: sl@0: struct LookupTable sl@0: { sl@0: le_uint16 lookupType; sl@0: le_uint16 lookupFlags; sl@0: le_uint16 subTableCount; sl@0: Offset subTableOffsetArray[ANY_NUMBER]; sl@0: sl@0: const LookupSubtable *getLookupSubtable(le_uint16 subtableIndex) const; sl@0: }; sl@0: sl@0: struct LookupListTable sl@0: { sl@0: le_uint16 lookupCount; sl@0: Offset lookupTableOffsetArray[ANY_NUMBER]; sl@0: sl@0: const LookupTable *getLookupTable(le_uint16 lookupTableIndex) const; sl@0: }; sl@0: sl@0: inline le_int32 LookupSubtable::getGlyphCoverage(LEGlyphID glyphID) const sl@0: { sl@0: return getGlyphCoverage(coverageTableOffset, glyphID); sl@0: } sl@0: sl@0: U_NAMESPACE_END sl@0: #endif