summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Mader <emader@src.gnome.org>2002-09-09 18:11:55 +0000
committerEric Mader <emader@src.gnome.org>2002-09-09 18:11:55 +0000
commit094c4cfa8463836e3522734017c55c1c4e88fdb1 (patch)
tree3da60cc4d06d7c7ac0cbb412f404e6bd633f94e0
parentfd3811bd3ffd33cc0bc3269c7c30860476aea88f (diff)
downloadpango-094c4cfa8463836e3522734017c55c1c4e88fdb1.tar.gz
Correctly handle back, new_advance.
-rw-r--r--ChangeLog5
-rw-r--r--ChangeLog.pre-1-105
-rw-r--r--ChangeLog.pre-1-25
-rw-r--r--ChangeLog.pre-1-45
-rw-r--r--ChangeLog.pre-1-65
-rw-r--r--ChangeLog.pre-1-85
-rw-r--r--pango/opentype/pango-ot-ruleset.c25
7 files changed, 40 insertions, 15 deletions
diff --git a/ChangeLog b/ChangeLog
index 994a5341..0df9e439 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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)