]> git.saurik.com Git - apple/icu.git/blob - icuSources/layout/GlyphDefinitionTables.h
ICU-551.30.tar.gz
[apple/icu.git] / icuSources / layout / GlyphDefinitionTables.h
1 /*
2 *
3 * (C) Copyright IBM Corp. 1998-2013 - All Rights Reserved
4 *
5 */
6
7 #ifndef __GLYPHDEFINITIONTABLES_H
8 #define __GLYPHDEFINITIONTABLES_H
9
10 /**
11 * \file
12 * \internal
13 */
14
15 #include "LETypes.h"
16 #include "OpenTypeTables.h"
17 #include "ClassDefinitionTables.h"
18
19 U_NAMESPACE_BEGIN
20
21 typedef ClassDefinitionTable GlyphClassDefinitionTable;
22
23 enum GlyphClassDefinitions
24 {
25 gcdNoGlyphClass = 0,
26 gcdSimpleGlyph = 1,
27 gcdLigatureGlyph = 2,
28 gcdMarkGlyph = 3,
29 gcdComponentGlyph = 4
30 };
31
32 struct AttachmentListTable
33 {
34 Offset coverageTableOffset;
35 le_uint16 glyphCount;
36 Offset attachPointTableOffsetArray[ANY_NUMBER];
37 };
38 LE_VAR_ARRAY(AttachmentListTable, attachPointTableOffsetArray)
39
40 struct AttachPointTable
41 {
42 le_uint16 pointCount;
43 le_uint16 pointIndexArray[ANY_NUMBER];
44 };
45 LE_VAR_ARRAY(AttachPointTable, pointIndexArray)
46
47 struct LigatureCaretListTable
48 {
49 Offset coverageTableOffset;
50 le_uint16 ligGlyphCount;
51 Offset ligGlyphTableOffsetArray[ANY_NUMBER];
52 };
53 LE_VAR_ARRAY(LigatureCaretListTable, ligGlyphTableOffsetArray)
54
55 struct LigatureGlyphTable
56 {
57 le_uint16 caretCount;
58 Offset caretValueTableOffsetArray[ANY_NUMBER];
59 };
60 LE_VAR_ARRAY(LigatureGlyphTable, caretValueTableOffsetArray)
61
62 struct CaretValueTable
63 {
64 le_uint16 caretValueFormat;
65 };
66
67 struct CaretValueFormat1Table : CaretValueTable
68 {
69 le_int16 coordinate;
70 };
71
72 struct CaretValueFormat2Table : CaretValueTable
73 {
74 le_uint16 caretValuePoint;
75 };
76
77 struct CaretValueFormat3Table : CaretValueTable
78 {
79 le_int16 coordinate;
80 Offset deviceTableOffset;
81 };
82
83 typedef ClassDefinitionTable MarkAttachClassDefinitionTable;
84
85 struct GlyphDefinitionTableHeader
86 {
87 fixed32 version;
88 Offset glyphClassDefOffset;
89 Offset attachListOffset;
90 Offset ligCaretListOffset;
91 Offset MarkAttachClassDefOffset;
92
93 const LEReferenceTo<GlyphClassDefinitionTable>
94 getGlyphClassDefinitionTable(const LEReferenceTo<GlyphDefinitionTableHeader>& base,
95 LEErrorCode &success) const;
96 const LEReferenceTo<AttachmentListTable>
97 getAttachmentListTable(const LEReferenceTo<GlyphDefinitionTableHeader>& base,
98 LEErrorCode &success)const ;
99 const LEReferenceTo<LigatureCaretListTable>
100 getLigatureCaretListTable(const LEReferenceTo<GlyphDefinitionTableHeader>& base,
101 LEErrorCode &success) const;
102 const LEReferenceTo<MarkAttachClassDefinitionTable>
103 getMarkAttachClassDefinitionTable(const LEReferenceTo<GlyphDefinitionTableHeader>& base,
104 LEErrorCode &success) const;
105 };
106
107 U_NAMESPACE_END
108 #endif