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
20U_NAMESPACE_BEGIN
21
22class  LEGlyphStorage;
23class  LEGlyphFilter;
24struct GlyphDefinitionTableHeader;
25
26struct 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
41enum 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
53typedef LookupSubtable GlyphSubstitutionSubtable;
54
55U_NAMESPACE_END
56#endif
57