1/*
2 *
3 * (C) Copyright IBM Corp. 1998-2004 - 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
19U_NAMESPACE_BEGIN
20
21typedef ClassDefinitionTable GlyphClassDefinitionTable;
22
23enum GlyphClassDefinitions
24{
25    gcdNoGlyphClass     = 0,
26    gcdSimpleGlyph      = 1,
27    gcdLigatureGlyph    = 2,
28    gcdMarkGlyph        = 3,
29    gcdComponentGlyph   = 4
30};
31
32struct AttachmentListTable
33{
34    Offset  coverageTableOffset;
35    le_uint16  glyphCount;
36    Offset  attachPointTableOffsetArray[ANY_NUMBER];
37};
38
39struct AttachPointTable
40{
41    le_uint16  pointCount;
42    le_uint16  pointIndexArray[ANY_NUMBER];
43};
44
45struct LigatureCaretListTable
46{
47    Offset  coverageTableOffset;
48    le_uint16  ligGlyphCount;
49    Offset  ligGlyphTableOffsetArray[ANY_NUMBER];
50};
51
52struct LigatureGlyphTable
53{
54    le_uint16  caretCount;
55    Offset  caretValueTableOffsetArray[ANY_NUMBER];
56};
57
58struct CaretValueTable
59{
60    le_uint16  caretValueFormat;
61};
62
63struct CaretValueFormat1Table : CaretValueTable
64{
65    le_int16   coordinate;
66};
67
68struct CaretValueFormat2Table : CaretValueTable
69{
70    le_uint16  caretValuePoint;
71};
72
73struct CaretValueFormat3Table : CaretValueTable
74{
75    le_int16   coordinate;
76    Offset  deviceTableOffset;
77};
78
79typedef ClassDefinitionTable MarkAttachClassDefinitionTable;
80
81struct GlyphDefinitionTableHeader
82{
83    fixed32 version;
84    Offset  glyphClassDefOffset;
85    Offset  attachListOffset;
86    Offset  ligCaretListOffset;
87    Offset  MarkAttachClassDefOffset;
88
89    const GlyphClassDefinitionTable *getGlyphClassDefinitionTable() const;
90    const AttachmentListTable *getAttachmentListTable()const ;
91    const LigatureCaretListTable *getLigatureCaretListTable() const;
92    const MarkAttachClassDefinitionTable *getMarkAttachClassDefinitionTable() const;
93};
94
95U_NAMESPACE_END
96#endif
97