os/textandloc/fontservices/textshaperplugin/IcuSource/layout/MorphTables.h
author sl@SLION-WIN7.fritz.box
Fri, 15 Jun 2012 03:10:57 +0200
changeset 0 bde4ae8d615e
permissions -rw-r--r--
First public contribution.
     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