diff options
author | Peter Breitenlohner <peb@mppmu.mpg.de> | 2011-08-10 12:03:08 +0000 |
---|---|---|
committer | Peter Breitenlohner <peb@mppmu.mpg.de> | 2011-08-10 12:03:08 +0000 |
commit | 79b8b3a76d8eda7372bb4dedae0ec7aebdaebc12 (patch) | |
tree | 9e4992c8719febb576deb6120740611380d71f7a /Build/source/libs/icu/icu-4.8.1/layout/ArabicShaping.h | |
parent | 8cd13eb8f4bb7b92c6d9bb50aff9a62c37df026c (diff) |
icu 4.8.1
git-svn-id: svn://tug.org/texlive/trunk@23480 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/libs/icu/icu-4.8.1/layout/ArabicShaping.h')
-rw-r--r-- | Build/source/libs/icu/icu-4.8.1/layout/ArabicShaping.h | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/Build/source/libs/icu/icu-4.8.1/layout/ArabicShaping.h b/Build/source/libs/icu/icu-4.8.1/layout/ArabicShaping.h new file mode 100644 index 00000000000..e90cee000a5 --- /dev/null +++ b/Build/source/libs/icu/icu-4.8.1/layout/ArabicShaping.h @@ -0,0 +1,83 @@ +/* + * + * (C) Copyright IBM Corp. 1998-2005 - All Rights Reserved + * + */ + +#ifndef __ARABICSHAPING_H +#define __ARABICSHAPING_H + +/** + * \file + * \internal + */ + +#include "LETypes.h" +#include "OpenTypeTables.h" + +U_NAMESPACE_BEGIN + +class LEGlyphStorage; + +class ArabicShaping /* not : public UObject because all methods are static */ { +public: + // Joining types + enum JoiningTypes + { + JT_NON_JOINING = 0, + JT_JOIN_CAUSING = 1, + JT_DUAL_JOINING = 2, + JT_LEFT_JOINING = 3, + JT_RIGHT_JOINING = 4, + JT_TRANSPARENT = 5, + JT_COUNT = 6 + }; + + // shaping bit masks + enum ShapingBitMasks + { + MASK_SHAPE_RIGHT = 1, // if this bit set, shapes to right + MASK_SHAPE_LEFT = 2, // if this bit set, shapes to left + MASK_TRANSPARENT = 4, // if this bit set, is transparent (ignore other bits) + MASK_NOSHAPE = 8, // if this bit set, don't shape this char, i.e. tatweel + + MASK_ALAPH = 16, // if this bit set, char is Syriac ALAPH + MASK_DALATH_RISH = 32 // if this bit set, char is Syriac DALATH/RISH + }; + + // shaping values + enum ShapeTypeValues + { + ST_NONE = 0, + ST_RIGHT = MASK_SHAPE_RIGHT, + ST_LEFT = MASK_SHAPE_LEFT, + ST_DUAL = MASK_SHAPE_RIGHT | MASK_SHAPE_LEFT, + ST_TRANSPARENT = MASK_TRANSPARENT, + ST_NOSHAPE_DUAL = MASK_NOSHAPE | ST_DUAL, + ST_NOSHAPE_NONE = MASK_NOSHAPE, + ST_ALAPH = MASK_ALAPH | MASK_SHAPE_RIGHT, + ST_DALATH_RISH = MASK_DALATH_RISH | MASK_SHAPE_RIGHT + }; + + typedef le_int32 ShapeType; + + static void shape(const LEUnicode *chars, le_int32 offset, le_int32 charCount, le_int32 charMax, + le_bool rightToLeft, LEGlyphStorage &glyphStorage); + + static const FeatureMap *getFeatureMap(le_int32 &count); + +private: + // forbid instantiation + ArabicShaping(); + + static ShapeType getShapeType(LEUnicode c); + + static const le_uint8 shapingTypeTable[]; + static const ShapeType shapeTypes[]; + static const ShapeType mongolianTypes[]; + + static void adjustTags(le_int32 outIndex, le_int32 shapeOffset, LEGlyphStorage &glyphStorage); +}; + +U_NAMESPACE_END +#endif |