fontservices/textshaperplugin/IcuSource/layout/MorphTables.h
changeset 0 1fb32624e06b
equal deleted inserted replaced
-1:000000000000 0:1fb32624e06b
       
     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