56 (dual-width joiner) which are both unshaped and non_joining or |
56 (dual-width joiner) which are both unshaped and non_joining or |
57 dual-joining, respectively. |
57 dual-joining, respectively. |
58 */ |
58 */ |
59 ArabicShaping::ShapeType ArabicShaping::getShapeType(LEUnicode c) |
59 ArabicShaping::ShapeType ArabicShaping::getShapeType(LEUnicode c) |
60 { |
60 { |
61 const ClassDefinitionTable *joiningTypes = (const ClassDefinitionTable *) ArabicShaping::shapingTypeTable; |
61 LEErrorCode success = LE_NO_ERROR; |
62 le_int32 joiningType = joiningTypes->getGlyphClass(c); |
62 const LEReferenceTo<ClassDefinitionTable> joiningTypes((const ClassDefinitionTable *) ArabicShaping::shapingTypeTable, |
63 |
63 ArabicShaping::shapingTypeTableLen); |
64 if (joiningType >= 0 && joiningType < ArabicShaping::JT_COUNT) { |
64 le_int32 joiningType = joiningTypes->getGlyphClass(joiningTypes, c, success); |
65 return ArabicShaping::shapeTypes[joiningType]; |
65 |
66 } |
66 if (joiningType >= 0 && joiningType < ArabicShaping::JT_COUNT && LE_SUCCESS(success)) { |
67 |
67 return ArabicShaping::shapeTypes[joiningType]; |
68 return ArabicShaping::ST_NOSHAPE_NONE; |
68 } |
|
69 |
|
70 return ArabicShaping::ST_NOSHAPE_NONE; |
69 } |
71 } |
70 |
72 |
71 #define isolFeatureTag LE_ISOL_FEATURE_TAG |
73 #define isolFeatureTag LE_ISOL_FEATURE_TAG |
72 #define initFeatureTag LE_INIT_FEATURE_TAG |
74 #define initFeatureTag LE_INIT_FEATURE_TAG |
73 #define mediFeatureTag LE_MEDI_FEATURE_TAG |
75 #define mediFeatureTag LE_MEDI_FEATURE_TAG |