From af343a36c239e9bb8f09af4676c18d8bd496723f Mon Sep 17 00:00:00 2001 From: Owen Taylor Date: Wed, 31 Jul 2002 15:50:50 +0000 Subject: Set is_cluster_start attributes based on the log_clusters[] set by the Tue Jul 30 23:10:14 2002 Owen Taylor * pango/shape.c (pango_shape): Set is_cluster_start attributes based on the log_clusters[] set by the shape engine. (Fix for #84307, Reported by Alex Larsson, others.) --- ChangeLog | 6 ++++++ ChangeLog.pre-1-10 | 6 ++++++ ChangeLog.pre-1-2 | 6 ++++++ ChangeLog.pre-1-4 | 6 ++++++ ChangeLog.pre-1-6 | 6 ++++++ ChangeLog.pre-1-8 | 6 ++++++ pango/shape.c | 16 ++++++++++++++++ 7 files changed, 52 insertions(+) diff --git a/ChangeLog b/ChangeLog index 83ce2b40..17f0dbfe 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +Tue Jul 30 20:19:15 2002 Owen Taylor + + * pango/shape.c (pango_shape): Set is_cluster_start + attributes based on the log_clusters[] set by the shape + engine. (Fix for #84307, reported by Alex Larsson, others.) + 2002-07-28 Michael Natterer * modules/thai/thai-xft.c (make_glyph): added missing cast diff --git a/ChangeLog.pre-1-10 b/ChangeLog.pre-1-10 index 83ce2b40..17f0dbfe 100644 --- a/ChangeLog.pre-1-10 +++ b/ChangeLog.pre-1-10 @@ -1,3 +1,9 @@ +Tue Jul 30 20:19:15 2002 Owen Taylor + + * pango/shape.c (pango_shape): Set is_cluster_start + attributes based on the log_clusters[] set by the shape + engine. (Fix for #84307, reported by Alex Larsson, others.) + 2002-07-28 Michael Natterer * modules/thai/thai-xft.c (make_glyph): added missing cast diff --git a/ChangeLog.pre-1-2 b/ChangeLog.pre-1-2 index 83ce2b40..17f0dbfe 100644 --- a/ChangeLog.pre-1-2 +++ b/ChangeLog.pre-1-2 @@ -1,3 +1,9 @@ +Tue Jul 30 20:19:15 2002 Owen Taylor + + * pango/shape.c (pango_shape): Set is_cluster_start + attributes based on the log_clusters[] set by the shape + engine. (Fix for #84307, reported by Alex Larsson, others.) + 2002-07-28 Michael Natterer * modules/thai/thai-xft.c (make_glyph): added missing cast diff --git a/ChangeLog.pre-1-4 b/ChangeLog.pre-1-4 index 83ce2b40..17f0dbfe 100644 --- a/ChangeLog.pre-1-4 +++ b/ChangeLog.pre-1-4 @@ -1,3 +1,9 @@ +Tue Jul 30 20:19:15 2002 Owen Taylor + + * pango/shape.c (pango_shape): Set is_cluster_start + attributes based on the log_clusters[] set by the shape + engine. (Fix for #84307, reported by Alex Larsson, others.) + 2002-07-28 Michael Natterer * modules/thai/thai-xft.c (make_glyph): added missing cast diff --git a/ChangeLog.pre-1-6 b/ChangeLog.pre-1-6 index 83ce2b40..17f0dbfe 100644 --- a/ChangeLog.pre-1-6 +++ b/ChangeLog.pre-1-6 @@ -1,3 +1,9 @@ +Tue Jul 30 20:19:15 2002 Owen Taylor + + * pango/shape.c (pango_shape): Set is_cluster_start + attributes based on the log_clusters[] set by the shape + engine. (Fix for #84307, reported by Alex Larsson, others.) + 2002-07-28 Michael Natterer * modules/thai/thai-xft.c (make_glyph): added missing cast diff --git a/ChangeLog.pre-1-8 b/ChangeLog.pre-1-8 index 83ce2b40..17f0dbfe 100644 --- a/ChangeLog.pre-1-8 +++ b/ChangeLog.pre-1-8 @@ -1,3 +1,9 @@ +Tue Jul 30 20:19:15 2002 Owen Taylor + + * pango/shape.c (pango_shape): Set is_cluster_start + attributes based on the log_clusters[] set by the shape + engine. (Fix for #84307, reported by Alex Larsson, others.) + 2002-07-28 Michael Natterer * modules/thai/thai-xft.c (make_glyph): added missing cast diff --git a/pango/shape.c b/pango/shape.c index 2c95f2e8..5cfdf13b 100644 --- a/pango/shape.c +++ b/pango/shape.c @@ -40,6 +40,9 @@ pango_shape (const gchar *text, PangoAnalysis *analysis, PangoGlyphString *glyphs) { + int i; + int last_cluster = -1; + if (analysis->shape_engine) analysis->shape_engine->script_shape (analysis->font, text, length, analysis, glyphs); else @@ -55,5 +58,18 @@ pango_shape (const gchar *text, glyphs->log_clusters[0] = 0; } + /* Set glyphs[i].attr.is_cluster_start based on log_clusters[] + */ + for (i = 0; i < glyphs->num_glyphs; i++) + { + if (glyphs->log_clusters[i] != last_cluster) + { + glyphs->glyphs[i].attr.is_cluster_start = TRUE; + last_cluster = glyphs->log_clusters[i]; + } + else + glyphs->glyphs[i].attr.is_cluster_start = FALSE; + } + g_assert (glyphs->num_glyphs > 0); } -- cgit v1.2.1