--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/fontservices/textshaperplugin/IcuSource/layout/MorphTables.h Tue Feb 02 02:02:46 2010 +0200
@@ -0,0 +1,85 @@
+/*
+ *
+ * (C) Copyright IBM Corp. 1998-2004 - All Rights Reserved
+ *
+ */
+
+#ifndef __MORPHTABLES_H
+#define __MORPHTABLES_H
+
+/**
+ * \file
+ * \internal
+ */
+
+#include "LETypes.h"
+#include "LayoutTables.h"
+
+U_NAMESPACE_BEGIN
+
+class LEGlyphStorage;
+
+typedef le_uint32 FeatureFlags;
+
+typedef le_int16 FeatureType;
+typedef le_int16 FeatureSetting;
+
+struct FeatureTableEntry
+{
+ FeatureType featureType;
+ FeatureSetting featureSetting;
+ FeatureFlags enableFlags;
+ FeatureFlags disableFlags;
+};
+
+struct ChainHeader
+{
+ FeatureFlags defaultFlags;
+ le_uint32 chainLength;
+ le_int16 nFeatureEntries;
+ le_int16 nSubtables;
+ FeatureTableEntry featureTable[ANY_NUMBER];
+};
+
+struct MorphTableHeader
+{
+ le_int32 version;
+ le_uint32 nChains;
+ ChainHeader chains[ANY_NUMBER];
+
+ void process(LEGlyphStorage &glyphStorage) const;
+};
+
+typedef le_int16 SubtableCoverage;
+
+enum SubtableCoverageFlags
+{
+ scfVertical = 0x8000,
+ scfReverse = 0x4000,
+ scfIgnoreVt = 0x2000,
+ scfReserved = 0x1FF8,
+ scfTypeMask = 0x0007
+};
+
+enum MorphSubtableType
+{
+ mstIndicRearrangement = 0,
+ mstContextualGlyphSubstitution = 1,
+ mstLigatureSubstitution = 2,
+ mstReservedUnused = 3,
+ mstNonContextualGlyphSubstitution = 4,
+ mstContextualGlyphInsertion = 5
+};
+
+struct MorphSubtableHeader
+{
+ le_int16 length;
+ SubtableCoverage coverage;
+ FeatureFlags subtableFeatures;
+
+ void process(LEGlyphStorage &glyphStorage) const;
+};
+
+U_NAMESPACE_END
+#endif
+