00001 /* 00002 * @(#)GlyphDefinitionTables.h 1.5 00/03/15 00003 * 00004 * (C) Copyright IBM Corp. 1998, 1999, 2000 - All Rights Reserved 00005 * 00006 */ 00007 00008 #ifndef __GLYPHDEFINITIONTABLES_H 00009 #define __GLYPHDEFINITIONTABLES_H 00010 00011 #include "LETypes.h" 00012 #include "OpenTypeTables.h" 00013 #include "ClassDefinitionTables.h" 00014 00015 typedef ClassDefinitionTable GlyphClassDefinitionTable; 00016 00017 enum GlyphClassDefinitions 00018 { 00019 gcdNoGlyphClass = 0, 00020 gcdSimpleGlyph = 1, 00021 gcdLigatureGlyph = 2, 00022 gcdMarkGlyph = 3, 00023 gcdComponentGlyph = 4 00024 }; 00025 00026 struct AttachmentListTable 00027 { 00028 Offset coverageTableOffset; 00029 le_uint16 glyphCount; 00030 Offset attachPointTableOffsetArray[ANY_NUMBER]; 00031 }; 00032 00033 struct AttachPointTable 00034 { 00035 le_uint16 pointCount; 00036 le_uint16 pointIndexArray[ANY_NUMBER]; 00037 }; 00038 00039 struct LigatureCaretListTable 00040 { 00041 Offset coverageTableOffset; 00042 le_uint16 ligGlyphCount; 00043 Offset ligGlyphTableOffsetArray[ANY_NUMBER]; 00044 }; 00045 00046 struct LigatureGlyphTable 00047 { 00048 le_uint16 caretCount; 00049 Offset caretValueTableOffsetArray[ANY_NUMBER]; 00050 }; 00051 00052 struct CaretValueTable 00053 { 00054 le_uint16 caretValueFormat; 00055 }; 00056 00057 struct CaretValueFormat1Table : CaretValueTable 00058 { 00059 le_int16 coordinate; 00060 }; 00061 00062 struct CaretValueFormat2Table : CaretValueTable 00063 { 00064 le_uint16 caretValuePoint; 00065 }; 00066 00067 struct CaretValueFormat3Table : CaretValueTable 00068 { 00069 le_int16 coordinate; 00070 Offset deviceTableOffset; 00071 }; 00072 00073 typedef ClassDefinitionTable MarkAttachClassDefinitionTable; 00074 00075 struct GlyphDefinitionTableHeader 00076 { 00077 fixed32 version; 00078 Offset glyphClassDefOffset; 00079 Offset attachListOffset; 00080 Offset ligCaretListOffset; 00081 Offset MarkAttachClassDefOffset; 00082 00083 GlyphClassDefinitionTable *getGlyphClassDefinitionTable(); 00084 AttachmentListTable *getAttachmentListTable(); 00085 LigatureCaretListTable *getLigatureCaretListTable(); 00086 MarkAttachClassDefinitionTable *getMarkAttachClassDefinitionTable(); 00087 }; 00088 00089 #endif