]>
git.saurik.com Git - apple/icu.git/blob - icuSources/layout/ArabicShaping.h
3 * (C) Copyright IBM Corp. 1998-2004 - All Rights Reserved
7 #ifndef __ARABICSHAPING_H
8 #define __ARABICSHAPING_H
16 #include "OpenTypeTables.h"
22 class ArabicShaping
/* not : public UObject because all methods are static */ {
27 MASK_SHAPE_RIGHT
= 1, // if this bit set, shapes to right
28 MASK_SHAPE_LEFT
= 2, // if this bit set, shapes to left
29 MASK_TRANSPARENT
= 4, // if this bit set, is transparent (ignore other bits)
30 MASK_NOSHAPE
= 8 // if this bit set, don't shape this char, i.e. tatweel
37 ST_RIGHT
= MASK_SHAPE_RIGHT
,
38 ST_LEFT
= MASK_SHAPE_LEFT
,
39 ST_DUAL
= MASK_SHAPE_RIGHT
| MASK_SHAPE_LEFT
,
40 ST_TRANSPARENT
= MASK_TRANSPARENT
,
41 ST_NOSHAPE_DUAL
= MASK_NOSHAPE
| ST_DUAL
,
42 ST_NOSHAPE_NONE
= MASK_NOSHAPE
45 typedef le_int32 ShapeType
;
47 static void shape(const LEUnicode
*chars
, le_int32 offset
, le_int32 charCount
, le_int32 charMax
,
48 le_bool rightToLeft
, LEGlyphStorage
&glyphStorage
);
50 static const LETag
*getFeatureOrder();
53 // forbid instantiation
56 static const LETag tagArray
[];
58 static ShapeType
getShapeType(LEUnicode c
);
60 static const ShapeType shapeTypes
[];
62 static void adjustTags(le_int32 outIndex
, le_int32 shapeOffset
, LEGlyphStorage
&glyphStorage
);