提交 5fecd8b0 编写于 作者: B Behdad Esfahbod

[OT] Synthesize glyph classes

上级 03b09214
......@@ -25,8 +25,6 @@ General fixes:
- Convert NBSP into space glyph.
- Synthetic GDEF.
- Add Pango backend?
- Add ICUlayout backend?
......
......@@ -350,14 +350,30 @@ hb_substitute_default (hb_ot_shape_context_t *c)
hb_map_glyphs (c->font, c->buffer);
}
static void
hb_synthesize_glyph_classes (hb_ot_shape_context_t *c)
{
unsigned int count = c->buffer->len;
for (unsigned int i = 0; i < count; i++)
c->buffer->info[i].glyph_props() = FLAG (_hb_glyph_info_get_general_category (&c->buffer->info[i])) &
(FLAG (HB_UNICODE_GENERAL_CATEGORY_SPACING_MARK) |
FLAG (HB_UNICODE_GENERAL_CATEGORY_ENCLOSING_MARK) |
FLAG (HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK)) ?
HB_OT_LAYOUT_GLYPH_CLASS_MARK :
HB_OT_LAYOUT_GLYPH_CLASS_BASE_GLYPH;
}
static void
hb_ot_substitute_complex (hb_ot_shape_context_t *c)
{
hb_ot_layout_substitute_start (c->face, c->buffer);
if (hb_ot_layout_has_substitution (c->face)) {
if (!hb_ot_layout_has_glyph_classes (c->face))
hb_synthesize_glyph_classes (c);
if (hb_ot_layout_has_substitution (c->face))
c->plan->map.substitute (c->face, c->buffer);
}
hb_ot_layout_substitute_finish (c->face, c->buffer);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册