1 /*
2  *
3  * (C) Copyright IBM Corp. 1998-2013 - All Rights Reserved
4  *
5  */
6 
7 #ifndef __GLYPHSUBSTITUTIONTABLES_H
8 #define __GLYPHSUBSTITUTIONTABLES_H
9 
10 /**
11  * \file
12  * \internal
13  */
14 
15 #include "LETypes.h"
16 #include "OpenTypeTables.h"
17 #include "Lookups.h"
18 #include "GlyphLookupTables.h"
19 
20 U_NAMESPACE_BEGIN
21 
22 class  LEGlyphStorage;
23 class  LEGlyphFilter;
24 struct GlyphDefinitionTableHeader;
25 
26 struct GlyphSubstitutionTableHeader : public GlyphLookupTableHeader
27 {
28   le_int32    process(const LEReferenceTo<GlyphSubstitutionTableHeader> &base,
29                       LEGlyphStorage &glyphStorage,
30                         le_bool rightToLeft,
31                         LETag scriptTag,
32                         LETag languageTag,
33                         const LEReferenceTo<GlyphDefinitionTableHeader> &glyphDefinitionTableHeader,
34                         const LEGlyphFilter *filter,
35                         const FeatureMap *featureMap,
36                         le_int32 featureMapCount,
37                         le_bool featureOrder,
38                         LEErrorCode &success) const;
39 };
40 
41 enum GlyphSubstitutionSubtableTypes
42 {
43     gsstSingle          = 1,
44     gsstMultiple        = 2,
45     gsstAlternate       = 3,
46     gsstLigature        = 4,
47     gsstContext         = 5,
48     gsstChainingContext = 6,
49     gsstExtension       = 7,
50     gsstReverseChaining = 8
51 };
52 
53 typedef LookupSubtable GlyphSubstitutionSubtable;
54 
55 U_NAMESPACE_END
56 #endif
57