{
CategoryCodeMask = 0x7F,
CombiningCodeMask = 0xFFFFFF,
- CombinedMask = 1 << 27,
- LeftPaddingMask = 1 << 28,
- RightPaddingMask = 1 << 29
+ CombinedMask = 1 << 28,
+ LeftPaddingMask = 1 << 29,
+ RightPaddingMask = 1 << 30
};
#define SET_GLYPH_INFO(g, mask, ctx, info) \
unsigned int tag = g->internal & 0xFFFFFFF;
char enc;
+ if (GET_COMBINED (g))
+ continue;
if (! category)
{
SET_CATEGORY_CODE (g, 0);
if (GET_COMBINED (g)
|| (prev_category && prev_category != ctx->stage->category))
- enc = (GET_ENCODED (g)
- ? (g->c > 0 ? (int) mchartable_lookup (table, g->c) : 1)
- : g->code
- ? (int) mchartable_lookup (table, g->code)
- : ' ');
+ {
+ enc = (GET_ENCODED (g)
+ ? (g->c > 0 ? (int) mchartable_lookup (table, g->c) : 1)
+ : g->code
+ ? (int) mchartable_lookup (table, g->code)
+ : ' ');
+ if (! GET_COMBINED (g))
+ SET_CATEGORY_CODE (g, enc);
+ }
else
enc = GET_CATEGORY_CODE (g);
ctx->encoded[i - from] = enc;