]> git.saurik.com Git - apple/icu.git/blob - icuSources/layout/MorphTables.h
ICU-491.11.1.tar.gz
[apple/icu.git] / icuSources / layout / MorphTables.h
1 /*
2 *
3 * (C) Copyright IBM Corp. 1998-2004 - All Rights Reserved
4 *
5 */
6
7 #ifndef __MORPHTABLES_H
8 #define __MORPHTABLES_H
9
10 /**
11 * \file
12 * \internal
13 */
14
15 #include "LETypes.h"
16 #include "LayoutTables.h"
17
18 U_NAMESPACE_BEGIN
19
20 class LEGlyphStorage;
21
22 typedef le_uint32 FeatureFlags;
23
24 typedef le_int16 FeatureType;
25 typedef le_int16 FeatureSetting;
26
27 struct FeatureTableEntry
28 {
29 FeatureType featureType;
30 FeatureSetting featureSetting;
31 FeatureFlags enableFlags;
32 FeatureFlags disableFlags;
33 };
34
35 struct ChainHeader
36 {
37 FeatureFlags defaultFlags;
38 le_uint32 chainLength;
39 le_int16 nFeatureEntries;
40 le_int16 nSubtables;
41 FeatureTableEntry featureTable[ANY_NUMBER];
42 };
43
44 struct MorphTableHeader
45 {
46 le_int32 version;
47 le_uint32 nChains;
48 ChainHeader chains[ANY_NUMBER];
49
50 void process(LEGlyphStorage &glyphStorage) const;
51 };
52
53 typedef le_int16 SubtableCoverage;
54
55 enum SubtableCoverageFlags
56 {
57 scfVertical = 0x8000,
58 scfReverse = 0x4000,
59 scfIgnoreVt = 0x2000,
60 scfReserved = 0x1FF8,
61 scfTypeMask = 0x0007
62 };
63
64 enum MorphSubtableType
65 {
66 mstIndicRearrangement = 0,
67 mstContextualGlyphSubstitution = 1,
68 mstLigatureSubstitution = 2,
69 mstReservedUnused = 3,
70 mstNonContextualGlyphSubstitution = 4,
71 mstContextualGlyphInsertion = 5
72 };
73
74 struct MorphSubtableHeader
75 {
76 le_int16 length;
77 SubtableCoverage coverage;
78 FeatureFlags subtableFeatures;
79
80 void process(LEGlyphStorage &glyphStorage) const;
81 };
82
83 U_NAMESPACE_END
84 #endif
85