diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | ChangeLog.pre-1-10 | 5 | ||||
-rw-r--r-- | ChangeLog.pre-1-2 | 5 | ||||
-rw-r--r-- | ChangeLog.pre-1-4 | 5 | ||||
-rw-r--r-- | ChangeLog.pre-1-6 | 5 | ||||
-rw-r--r-- | ChangeLog.pre-1-8 | 5 | ||||
-rw-r--r-- | pango/opentype/pango-ot-ruleset.c | 25 |
7 files changed, 40 insertions, 15 deletions
@@ -1,4 +1,7 @@ -Fri Nov 6 15:41:28 Eric Mader <mader@jtcsv.com> +Mon Sep 9 11:09:18 Eric Mader <mader@jtcsv.com> + * pango/pango/opentype/pango-to-ruleset.c: correctly handle back, new_advance. + +Fri Sep 6 15:41:28 Eric Mader <mader@jtcsv.com> * pango/pango/opentype/ftxopen.c: * pango/pango/opentype/ftxopen.h: don't fail on an empty script diff --git a/ChangeLog.pre-1-10 b/ChangeLog.pre-1-10 index 994a5341..0df9e439 100644 --- a/ChangeLog.pre-1-10 +++ b/ChangeLog.pre-1-10 @@ -1,4 +1,7 @@ -Fri Nov 6 15:41:28 Eric Mader <mader@jtcsv.com> +Mon Sep 9 11:09:18 Eric Mader <mader@jtcsv.com> + * pango/pango/opentype/pango-to-ruleset.c: correctly handle back, new_advance. + +Fri Sep 6 15:41:28 Eric Mader <mader@jtcsv.com> * pango/pango/opentype/ftxopen.c: * pango/pango/opentype/ftxopen.h: don't fail on an empty script diff --git a/ChangeLog.pre-1-2 b/ChangeLog.pre-1-2 index 994a5341..0df9e439 100644 --- a/ChangeLog.pre-1-2 +++ b/ChangeLog.pre-1-2 @@ -1,4 +1,7 @@ -Fri Nov 6 15:41:28 Eric Mader <mader@jtcsv.com> +Mon Sep 9 11:09:18 Eric Mader <mader@jtcsv.com> + * pango/pango/opentype/pango-to-ruleset.c: correctly handle back, new_advance. + +Fri Sep 6 15:41:28 Eric Mader <mader@jtcsv.com> * pango/pango/opentype/ftxopen.c: * pango/pango/opentype/ftxopen.h: don't fail on an empty script diff --git a/ChangeLog.pre-1-4 b/ChangeLog.pre-1-4 index 994a5341..0df9e439 100644 --- a/ChangeLog.pre-1-4 +++ b/ChangeLog.pre-1-4 @@ -1,4 +1,7 @@ -Fri Nov 6 15:41:28 Eric Mader <mader@jtcsv.com> +Mon Sep 9 11:09:18 Eric Mader <mader@jtcsv.com> + * pango/pango/opentype/pango-to-ruleset.c: correctly handle back, new_advance. + +Fri Sep 6 15:41:28 Eric Mader <mader@jtcsv.com> * pango/pango/opentype/ftxopen.c: * pango/pango/opentype/ftxopen.h: don't fail on an empty script diff --git a/ChangeLog.pre-1-6 b/ChangeLog.pre-1-6 index 994a5341..0df9e439 100644 --- a/ChangeLog.pre-1-6 +++ b/ChangeLog.pre-1-6 @@ -1,4 +1,7 @@ -Fri Nov 6 15:41:28 Eric Mader <mader@jtcsv.com> +Mon Sep 9 11:09:18 Eric Mader <mader@jtcsv.com> + * pango/pango/opentype/pango-to-ruleset.c: correctly handle back, new_advance. + +Fri Sep 6 15:41:28 Eric Mader <mader@jtcsv.com> * pango/pango/opentype/ftxopen.c: * pango/pango/opentype/ftxopen.h: don't fail on an empty script diff --git a/ChangeLog.pre-1-8 b/ChangeLog.pre-1-8 index 994a5341..0df9e439 100644 --- a/ChangeLog.pre-1-8 +++ b/ChangeLog.pre-1-8 @@ -1,4 +1,7 @@ -Fri Nov 6 15:41:28 Eric Mader <mader@jtcsv.com> +Mon Sep 9 11:09:18 Eric Mader <mader@jtcsv.com> + * pango/pango/opentype/pango-to-ruleset.c: correctly handle back, new_advance. + +Fri Sep 6 15:41:28 Eric Mader <mader@jtcsv.com> * pango/pango/opentype/ftxopen.c: * pango/pango/opentype/ftxopen.h: don't fail on an empty script diff --git a/pango/opentype/pango-ot-ruleset.c b/pango/opentype/pango-ot-ruleset.c index d392cc84..02839298 100644 --- a/pango/opentype/pango-ot-ruleset.c +++ b/pango/opentype/pango-ot-ruleset.c @@ -247,18 +247,26 @@ pango_ot_ruleset_shape (PangoOTRuleset *ruleset, { for (i = 0; i < result_string->length; i++) { + FT_Pos x_pos = outgpos[i].x_pos; + FT_Pos y_pos = outgpos[i].y_pos; + int back = i; int j; - glyphs->glyphs[i].geometry.x_offset += PANGO_UNITS_26_6 (outgpos[i].x_pos); - glyphs->glyphs[i].geometry.y_offset += PANGO_UNITS_26_6 (outgpos[i].y_pos); + while (outgpos[back].back != 0) + { + back -= outgpos[back].back; + x_pos += outgpos[back].x_pos; + y_pos += outgpos[back].y_pos; + } + + for (j = back; j < i; j++) + glyphs->glyphs[i].geometry.x_offset -= glyphs->glyphs[j].geometry.width; + + glyphs->glyphs[i].geometry.x_offset += PANGO_UNITS_26_6(x_pos); + glyphs->glyphs[i].geometry.y_offset += PANGO_UNITS_26_6(y_pos); - for (j = i - outgpos[i].back; j < i; j++) - glyphs->glyphs[i].geometry.x_offset -= glyphs->glyphs[j].geometry.width; - if (outgpos[i].new_advance) - /* Can't set new x offset for marks, so just make sure not to increase it. - Can do better than this by playing with ->x_offset. */ - glyphs->glyphs[i].geometry.width = 0; + glyphs->glyphs[i].geometry.width = PANGO_UNITS_26_6(outgpos[i].x_advance); else glyphs->glyphs[i].geometry.width += PANGO_UNITS_26_6(outgpos[i].x_advance); } @@ -273,7 +281,6 @@ pango_ot_ruleset_shape (PangoOTRuleset *ruleset, for (i = 0; i < result_string->length; i++) { glyphs->glyphs[i].glyph = result_string->string[i]; - glyphs->glyphs[i].glyph = result_string->string[i]; glyphs->log_clusters[i] = result_string->logClusters[i]; if (glyphs->log_clusters[i] != last_cluster) |