debug and tune

This commit is contained in:
Vincent Wei
2019-04-10 16:20:37 +08:00
parent 87d4fcf00b
commit 8f27fbb1a8
4 changed files with 14 additions and 6 deletions
+9 -5
View File
@@ -659,8 +659,9 @@ GlyphGravity ScriptGetGlyphGravityForWide (ScriptType script, BOOL vertical,
*
* Wide characters are always upright.
*/
if (!vertical || wide)
if (!vertical || wide) {
return base_gravity;
}
/* If here, we have a narrow character in a vertical gravity setting.
* Resolve depending on the hint.
@@ -668,13 +669,16 @@ GlyphGravity ScriptGetGlyphGravityForWide (ScriptType script, BOOL vertical,
switch (hint) {
default:
case GLYPH_GRAVITY_POLICY_NATURAL:
if (props.vert_dir == VERTICAL_DIRECTION_NONE)
if (props.vert_dir == VERTICAL_DIRECTION_NONE) {
return GLYPH_GRAVITY_SOUTH;
if ((base_gravity == GLYPH_GRAVITY_EAST) ^
(props.vert_dir == VERTICAL_DIRECTION_BTT))
}
if (((base_gravity == GLYPH_GRAVITY_EAST) ^
(props.vert_dir == VERTICAL_DIRECTION_BTT))
|| props.wide)
return GLYPH_GRAVITY_SOUTH;
else
else {
return GLYPH_GRAVITY_NORTH;
}
case GLYPH_GRAVITY_POLICY_STRONG:
return base_gravity;
+3
View File
@@ -139,6 +139,8 @@ static GlyphOrient resolve_glyph_orient(const LAYOUT* layout,
trun->flags & TEXTRUN_FLAG_UPRIGHT,
layout->grv_base, layout->grv_plc);
assert(gravity != GLYPH_GRAVITY_NORTH);
return (GlyphOrient)gravity;
}
@@ -162,6 +164,7 @@ static void resolve_layout_run_dir(const LAYOUT* layout,
break;
case GLYPH_GRAVITY_NORTH:
lrun->el++;
assert(0);
break;
case GLYPH_GRAVITY_EAST:
lrun->el += 1;
+1 -1
View File
@@ -598,7 +598,7 @@ static GlyphString* shape_run(LAYOUTLINE *line, LayoutState *state,
shape_space(layout, lrun, glyphs);
}
else {
if (state->shape_set)
if (MG_UNLIKELY(state->shape_set))
shape_shape(layout->truns->ucs + lrun->si, lrun->len,
&state->shape_ink_rect,
&state->shape_logical_rect, glyphs);
+1
View File
@@ -210,6 +210,7 @@ static BOOL shape_layout_run(SEInstance* inst,
}
hb_buffer_set_direction(hb_buf, run->dir + HB_DIRECTION_LTR);
hb_buffer_set_script(hb_buf, ScriptTypeToISO15924(run->st));
hb_buffer_set_language(hb_buf,
hb_language_from_string(LanguageCodeToISO639s1(run->lc), -1));