diff options
author | Owen Taylor <otaylor@redhat.com> | 2001-06-14 20:38:25 +0000 |
---|---|---|
committer | Owen Taylor <otaylor@src.gnome.org> | 2001-06-14 20:38:25 +0000 |
commit | 5ee19fca3c7c3da53ef4f000efdb3bbf4dcb1a04 (patch) | |
tree | 17a70e18597aae753e36a983150500bd9362dcfd /pango/pango-layout.c | |
parent | 3a42444e7f2449598106338be7e6ec9468bb7946 (diff) | |
download | pango-5ee19fca3c7c3da53ef4f000efdb3bbf4dcb1a04.tar.gz |
Add a new PangoLanguage type to represent language tags; these can
Sat Jun 9 17:36:09 2001 Owen Taylor <otaylor@redhat.com>
* pango/pango-types.h pango/pango-utils.c: Add a new PangoLanguage
type to represent language tags; these can efficiently be compared
and don't need to be copied. Also add pango_language_matches()
to match a language tag against a pattern.
* pango/pango-item.[ch] pango/pango-layout.c: Move extra_attrs
from PangoItem to PangoAnalysis. Add a language tag field to
PangoAnalysis. (#55894)
* pango/pango-attributes.[ch] (pango_attr_iterator_get_font): Return
the language tag as well.
* pango/pango-attributes.[ch]: Rename PangoAttrLang to PangoAttrLanguage,
and make it hold a PangoLanguage.
* pango/pango-context.[ch]: Rename pango_context_{get,set}_lang() to
pango_context_{get,set}_language().
* **.[ch]: Adapt to PangoLanguage and s/lang/language/ changes.
* modules/basic/basic-x.c modules/basic/tables-big.i: Add support
for ordering character sets differently for different language
tags.
* pango/itemize.c: Remove old, unused file.
* pango/pango-context.c (pango_itemize): Reduce number of mallocs
by allocating one array of PangoAnalysis instead of many arrays.
Diffstat (limited to 'pango/pango-layout.c')
-rw-r--r-- | pango/pango-layout.c | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/pango/pango-layout.c b/pango/pango-layout.c index f0424b26..a1990190 100644 --- a/pango/pango-layout.c +++ b/pango/pango-layout.c @@ -2274,20 +2274,29 @@ ensure_tab_width (PangoLayout *layout) PangoAttrList *tmp_attrs; PangoAttrIterator *iter; PangoFontDescription font_desc; + PangoLanguage *language; int i; layout_attrs = pango_layout_get_effective_attributes (layout); iter = pango_attr_list_get_iterator (layout_attrs); pango_attr_iterator_get_font (iter, pango_context_get_font_description (layout->context), - &font_desc, NULL); + &font_desc, &language, NULL); tmp_attrs = pango_attr_list_new (); + attr = pango_attr_font_desc_new (&font_desc); attr->start_index = 0; attr->end_index = 1; - pango_attr_list_insert_before (tmp_attrs, attr); + if (language) + { + attr = pango_attr_language_new (language); + attr->start_index = 0; + attr->end_index = 1; + pango_attr_list_insert_before (tmp_attrs, attr); + } + items = pango_itemize (layout->context, " ", 0, 1, tmp_attrs, NULL); pango_attr_iterator_destroy (iter); @@ -3345,6 +3354,7 @@ pango_layout_line_get_empty_extents (PangoLayoutLine *line, pango_attr_iterator_get_font (iter, base_font_desc, &font_desc, + NULL, NULL); break; } @@ -3365,9 +3375,9 @@ pango_layout_line_get_empty_extents (PangoLayoutLine *line, font = pango_context_load_font (layout->context, &font_desc); if (font) { - char *lang = pango_context_get_lang (layout->context); - pango_font_get_metrics (font, lang, &metrics); - g_free (lang); + pango_font_get_metrics (font, + pango_context_get_language (layout->context), + &metrics); logical_rect->y = - metrics.ascent; logical_rect->height = metrics.ascent + metrics.descent; @@ -3701,7 +3711,7 @@ pango_layout_get_item_properties (PangoItem *item, PangoRectangle *logical_rect, gboolean *shape_set) { - GSList *tmp_list = item->extra_attrs; + GSList *tmp_list = item->analysis.extra_attrs; if (shape_set) *shape_set = FALSE; |