/* m17n-flt.c -- Font Layout Table sub-module.
- Copyright (C) 2003, 2004, 2007, 2008, 2009
+ Copyright (C) 2003, 2004, 2007, 2008, 2009, 2010
National Institute of Advanced Industrial Science and Technology (AIST)
Registration Number H15PRO112
{
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);
FontLayoutContext *ctx)
{
MFLTFont *font = ctx->font;
- int from_idx = ctx->out->used;
if (MDEBUG_FLAG () > 2)
MDEBUG_PRINT3 ("\n [FLT] %*s%s", depth, "", MSYMBOL_NAME (otf_spec->sym));
font->get_glyph_id (font, ctx->in, from, to);
if (mflt_try_otf)
{
- int out_len;
- int i;
-
to = mflt_try_otf (font, otf_spec, ctx->in, from, to);
if (to < 0)
return from;
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;