Commit 8c4b47c6 authored by Nikolay Sivov's avatar Nikolay Sivov Committed by Alexandre Julliard

dwrite/arabic: Mark glyphs with assigned action as unsafe to break.

parent 7d264424
......@@ -690,6 +690,8 @@ extern void opentype_layout_apply_gpos_features(struct scriptshaping_context *co
extern BOOL opentype_layout_check_feature(struct scriptshaping_context *context, unsigned int script_index,
unsigned int language_index, struct shaping_feature *feature, unsigned int glyph_count,
const UINT16 *glyphs, UINT8 *feature_applies) DECLSPEC_HIDDEN;
extern void opentype_layout_unsafe_to_break(struct scriptshaping_context *context, unsigned int start,
unsigned int end) DECLSPEC_HIDDEN;
extern BOOL opentype_has_vertical_variants(struct dwrite_fontface *fontface) DECLSPEC_HIDDEN;
extern HRESULT opentype_get_vertical_glyph_variants(struct dwrite_fontface *fontface, unsigned int glyph_count,
const UINT16 *nominal_glyphs, UINT16 *glyphs) DECLSPEC_HIDDEN;
......
......@@ -5127,7 +5127,7 @@ static BOOL opentype_layout_context_match_input(const struct match_context *mc,
}
/* Marks text segment as unsafe to break between [start, end) glyphs. */
static void opentype_layout_unsafe_to_break(struct scriptshaping_context *context, unsigned int start,
void opentype_layout_unsafe_to_break(struct scriptshaping_context *context, unsigned int start,
unsigned int end)
{
unsigned int i;
......
......@@ -174,7 +174,12 @@ static void arabic_setup_masks(struct scriptshaping_context *context,
/* Unaffected glyphs get action NONE with zero mask. */
for (i = 0; i < context->glyph_count; ++i)
context->glyph_infos[i].mask |= masks[arabic_get_shaping_action(context, i)];
{
enum arabic_shaping_action action = arabic_get_shaping_action(context, i);
if (action != NONE)
opentype_layout_unsafe_to_break(context, i, i + 1);
context->glyph_infos[i].mask |= masks[action];
}
}
const struct shaper arabic_shaper =
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment