diff options
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | ChangeLog.pre-1-0 | 8 | ||||
-rw-r--r-- | ChangeLog.pre-1-10 | 8 | ||||
-rw-r--r-- | ChangeLog.pre-1-2 | 8 | ||||
-rw-r--r-- | ChangeLog.pre-1-4 | 8 | ||||
-rw-r--r-- | ChangeLog.pre-1-6 | 8 | ||||
-rw-r--r-- | ChangeLog.pre-1-8 | 8 | ||||
-rw-r--r-- | pango/modules.c | 3 | ||||
-rw-r--r-- | pango/pango-attributes.c | 2 | ||||
-rw-r--r-- | pango/pango-context.c | 11 | ||||
-rw-r--r-- | pango/pango-layout.c | 40 |
11 files changed, 98 insertions, 14 deletions
@@ -1,3 +1,11 @@ +2000-08-03 Elliot Lee <sopwith@redhat.com> + + * pango/modules.c: Fix segfault when tmp_list has no 'prev' pointer. + * pango/pango-attributes.c (pango_attr_list_insert_internal): Infinite loops do not fast programs make. + * pango/pango-context.c: Set a default font size so that things don't go boom if someone forgets to set it themselves. + * pango/pango-layout.c (pango_layout_index_to_pos): Exclude newlines from consideration. + (pango_layout_line_index_to_x): Take shape attributes into consideration when determining position. + Wed Aug 2 12:00:53 2000 Owen Taylor <otaylor@redhat.com> * pango/pango-layout.c (pango_layout_get_extents): diff --git a/ChangeLog.pre-1-0 b/ChangeLog.pre-1-0 index 884bc8b4..edcb701e 100644 --- a/ChangeLog.pre-1-0 +++ b/ChangeLog.pre-1-0 @@ -1,3 +1,11 @@ +2000-08-03 Elliot Lee <sopwith@redhat.com> + + * pango/modules.c: Fix segfault when tmp_list has no 'prev' pointer. + * pango/pango-attributes.c (pango_attr_list_insert_internal): Infinite loops do not fast programs make. + * pango/pango-context.c: Set a default font size so that things don't go boom if someone forgets to set it themselves. + * pango/pango-layout.c (pango_layout_index_to_pos): Exclude newlines from consideration. + (pango_layout_line_index_to_x): Take shape attributes into consideration when determining position. + Wed Aug 2 12:00:53 2000 Owen Taylor <otaylor@redhat.com> * pango/pango-layout.c (pango_layout_get_extents): diff --git a/ChangeLog.pre-1-10 b/ChangeLog.pre-1-10 index 884bc8b4..edcb701e 100644 --- a/ChangeLog.pre-1-10 +++ b/ChangeLog.pre-1-10 @@ -1,3 +1,11 @@ +2000-08-03 Elliot Lee <sopwith@redhat.com> + + * pango/modules.c: Fix segfault when tmp_list has no 'prev' pointer. + * pango/pango-attributes.c (pango_attr_list_insert_internal): Infinite loops do not fast programs make. + * pango/pango-context.c: Set a default font size so that things don't go boom if someone forgets to set it themselves. + * pango/pango-layout.c (pango_layout_index_to_pos): Exclude newlines from consideration. + (pango_layout_line_index_to_x): Take shape attributes into consideration when determining position. + Wed Aug 2 12:00:53 2000 Owen Taylor <otaylor@redhat.com> * pango/pango-layout.c (pango_layout_get_extents): diff --git a/ChangeLog.pre-1-2 b/ChangeLog.pre-1-2 index 884bc8b4..edcb701e 100644 --- a/ChangeLog.pre-1-2 +++ b/ChangeLog.pre-1-2 @@ -1,3 +1,11 @@ +2000-08-03 Elliot Lee <sopwith@redhat.com> + + * pango/modules.c: Fix segfault when tmp_list has no 'prev' pointer. + * pango/pango-attributes.c (pango_attr_list_insert_internal): Infinite loops do not fast programs make. + * pango/pango-context.c: Set a default font size so that things don't go boom if someone forgets to set it themselves. + * pango/pango-layout.c (pango_layout_index_to_pos): Exclude newlines from consideration. + (pango_layout_line_index_to_x): Take shape attributes into consideration when determining position. + Wed Aug 2 12:00:53 2000 Owen Taylor <otaylor@redhat.com> * pango/pango-layout.c (pango_layout_get_extents): diff --git a/ChangeLog.pre-1-4 b/ChangeLog.pre-1-4 index 884bc8b4..edcb701e 100644 --- a/ChangeLog.pre-1-4 +++ b/ChangeLog.pre-1-4 @@ -1,3 +1,11 @@ +2000-08-03 Elliot Lee <sopwith@redhat.com> + + * pango/modules.c: Fix segfault when tmp_list has no 'prev' pointer. + * pango/pango-attributes.c (pango_attr_list_insert_internal): Infinite loops do not fast programs make. + * pango/pango-context.c: Set a default font size so that things don't go boom if someone forgets to set it themselves. + * pango/pango-layout.c (pango_layout_index_to_pos): Exclude newlines from consideration. + (pango_layout_line_index_to_x): Take shape attributes into consideration when determining position. + Wed Aug 2 12:00:53 2000 Owen Taylor <otaylor@redhat.com> * pango/pango-layout.c (pango_layout_get_extents): diff --git a/ChangeLog.pre-1-6 b/ChangeLog.pre-1-6 index 884bc8b4..edcb701e 100644 --- a/ChangeLog.pre-1-6 +++ b/ChangeLog.pre-1-6 @@ -1,3 +1,11 @@ +2000-08-03 Elliot Lee <sopwith@redhat.com> + + * pango/modules.c: Fix segfault when tmp_list has no 'prev' pointer. + * pango/pango-attributes.c (pango_attr_list_insert_internal): Infinite loops do not fast programs make. + * pango/pango-context.c: Set a default font size so that things don't go boom if someone forgets to set it themselves. + * pango/pango-layout.c (pango_layout_index_to_pos): Exclude newlines from consideration. + (pango_layout_line_index_to_x): Take shape attributes into consideration when determining position. + Wed Aug 2 12:00:53 2000 Owen Taylor <otaylor@redhat.com> * pango/pango-layout.c (pango_layout_get_extents): diff --git a/ChangeLog.pre-1-8 b/ChangeLog.pre-1-8 index 884bc8b4..edcb701e 100644 --- a/ChangeLog.pre-1-8 +++ b/ChangeLog.pre-1-8 @@ -1,3 +1,11 @@ +2000-08-03 Elliot Lee <sopwith@redhat.com> + + * pango/modules.c: Fix segfault when tmp_list has no 'prev' pointer. + * pango/pango-attributes.c (pango_attr_list_insert_internal): Infinite loops do not fast programs make. + * pango/pango-context.c: Set a default font size so that things don't go boom if someone forgets to set it themselves. + * pango/pango-layout.c (pango_layout_index_to_pos): Exclude newlines from consideration. + (pango_layout_line_index_to_x): Take shape attributes into consideration when determining position. + Wed Aug 2 12:00:53 2000 Owen Taylor <otaylor@redhat.com> * pango/pango-layout.c (pango_layout_get_extents): diff --git a/pango/modules.c b/pango/modules.c index d7d3b838..78e89d40 100644 --- a/pango/modules.c +++ b/pango/modules.c @@ -117,7 +117,8 @@ pango_find_map (const char *lang, */ if (tmp_list->next) tmp_list->next->prev = tmp_list->prev; - tmp_list->prev->next = tmp_list->next; + if(tmp_list->prev) + tmp_list->prev->next = tmp_list->next; tmp_list->next = maps; tmp_list->prev = NULL; maps = tmp_list; diff --git a/pango/pango-attributes.c b/pango/pango-attributes.c index beebcec3..a081235d 100644 --- a/pango/pango-attributes.c +++ b/pango/pango-attributes.c @@ -740,7 +740,7 @@ pango_attr_list_insert_internal (PangoAttrList *list, { prev = NULL; tmp_list = list->attributes; - while (1) + while (tmp_list) { PangoAttribute *tmp_attr = tmp_list->data; diff --git a/pango/pango-context.c b/pango/pango-context.c index b1e612fa..aa03b8cc 100644 --- a/pango/pango-context.c +++ b/pango/pango-context.c @@ -101,6 +101,7 @@ pango_context_init (PangoContext *context) desc.variant = PANGO_VARIANT_NORMAL; desc.weight = PANGO_WEIGHT_NORMAL; desc.stretch = PANGO_STRETCH_NORMAL; + desc.size = 12 * PANGO_SCALE; context->font_desc = pango_font_description_copy (&desc); } @@ -732,7 +733,7 @@ add_engines (PangoContext *context, } lang_map = pango_find_map (next_lang, - engine_type_id, render_type_id); + engine_type_id, render_type_id); } pango_attr_iterator_get_font (iterator, context->font_desc, &next_desc, &extra_attrs); @@ -768,6 +769,14 @@ add_engines (PangoContext *context, if (current_fonts[j]) current_coverages[j] = pango_font_get_coverage (current_fonts[j], lang); + else + { + char *ctmp; + + ctmp = pango_font_description_to_string(&next_desc); + g_warning("Couldn't load font \"%s\"", ctmp); + g_free(ctmp); + } } g_strfreev (families); diff --git a/pango/pango-layout.c b/pango/pango-layout.c index 2c10c41b..84acc12e 100644 --- a/pango/pango-layout.c +++ b/pango/pango-layout.c @@ -19,8 +19,8 @@ * Boston, MA 02111-1307, USA. */ -#include <pango/pango-layout.h> #include <pango/pango.h> /* For pango_shape() */ +#include <pango/pango-layout.h> #include <string.h> #define LINE_IS_VALID(line) ((line)->layout != NULL) @@ -642,27 +642,43 @@ pango_layout_line_index_to_x (PangoLayoutLine *line, { PangoRectangle logical_rect; PangoLayoutRun *run = run_list->data; + gboolean shape_set; + pango_layout_get_item_properties (run->item, NULL, NULL, &logical_rect, &shape_set); + if (run->item->offset <= index && run->item->offset + run->item->length > index) { - pango_glyph_string_index_to_x (run->glyphs, - line->layout->text + run->item->offset, - run->item->length, - &run->item->analysis, - index - run->item->offset, trailing, x_pos); - - if (x_pos) - *x_pos += width; + if (shape_set) + { + if (x_pos) + *x_pos = width + (trailing ? logical_rect.width : 0); + } + else + { + pango_glyph_string_index_to_x (run->glyphs, + line->layout->text + run->item->offset, + run->item->length, + &run->item->analysis, + index - run->item->offset, trailing, x_pos); + + if (x_pos) + *x_pos += width; + } return; } - pango_glyph_string_extents (run->glyphs, run->item->analysis.font, - NULL, &logical_rect); + if (!shape_set) + pango_glyph_string_extents (run->glyphs, run->item->analysis.font, + NULL, &logical_rect); + width += logical_rect.width; run_list = run_list->next; } + + if(x_pos) + *x_pos = width; } /** @@ -1017,6 +1033,8 @@ pango_layout_index_to_pos (PangoLayout *layout, tmp_list = tmp_list->next; bytes_seen += layout_line->length; + if (tmp_list && layout->text[bytes_seen] == '\n') + bytes_seen++; pos->y += logical_rect.height; } |