1 /* 2 * 3 * (C) Copyright IBM Corp. and Others 1998-2013 - All Rights Reserved 4 * 5 */ 6 7 #ifndef __LIGATURESUBSTITUTION_H 8 #define __LIGATURESUBSTITUTION_H 9 10 /** 11 * \file 12 * \internal 13 */ 14 15 #include "LETypes.h" 16 #include "LayoutTables.h" 17 #include "StateTables.h" 18 #include "MorphTables.h" 19 #include "MorphStateTables.h" 20 21 U_NAMESPACE_BEGIN 22 23 struct LigatureSubstitutionHeader : MorphStateTableHeader 24 { 25 ByteOffset ligatureActionTableOffset; 26 ByteOffset componentTableOffset; 27 ByteOffset ligatureTableOffset; 28 }; 29 30 struct LigatureSubstitutionHeader2 : MorphStateTableHeader2 31 { 32 le_uint32 ligActionOffset; 33 le_uint32 componentOffset; 34 le_uint32 ligatureOffset; 35 }; 36 37 enum LigatureSubstitutionFlags 38 { 39 lsfSetComponent = 0x8000, 40 lsfDontAdvance = 0x4000, 41 lsfActionOffsetMask = 0x3FFF, // N/A in morx 42 lsfPerformAction = 0x2000 43 }; 44 45 struct LigatureSubstitutionStateEntry : StateEntry 46 { 47 }; 48 49 struct LigatureSubstitutionStateEntry2 50 { 51 le_uint16 nextStateIndex; 52 le_uint16 entryFlags; 53 le_uint16 ligActionIndex; 54 }; 55 56 typedef le_uint32 LigatureActionEntry; 57 58 enum LigatureActionFlags 59 { 60 lafLast = 0x80000000, 61 lafStore = 0x40000000, 62 lafComponentOffsetMask = 0x3FFFFFFF 63 }; 64 65 U_NAMESPACE_END 66 #endif 67