• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
109