Home | History | Annotate | Download | only in layout
      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 
     86