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/modules.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/modules.c')
-rw-r--r-- | pango/modules.c | 29 |
1 files changed, 10 insertions, 19 deletions
diff --git a/pango/modules.c b/pango/modules.c index 3b2daba1..4f235452 100644 --- a/pango/modules.c +++ b/pango/modules.c @@ -53,7 +53,7 @@ struct _PangoMap struct _PangoMapInfo { - const gchar *lang; + PangoLanguage *language; guint engine_type_id; guint render_type_id; PangoMap *map; @@ -78,8 +78,7 @@ static void init_modules (void); /** * pango_find_map: - * @lang: the language tag for which to find the map (in the form - * en or en_US) + * @language: the language tag for which to find the map * @engine_type_id: the render type for the map to find * @render_type_id: the engine type for the map to find * @@ -90,9 +89,9 @@ static void init_modules (void); * Return value: **/ PangoMap * -pango_find_map (const char *lang, - guint engine_type_id, - guint render_type_id) +pango_find_map (PangoLanguage *language, + guint engine_type_id, + guint render_type_id) { GList *tmp_list = maps; PangoMapInfo *map_info = NULL; @@ -104,7 +103,7 @@ pango_find_map (const char *lang, if (map_info->engine_type_id == engine_type_id && map_info->render_type_id == render_type_id) { - if (strcmp (map_info->lang, lang) == 0) + if (map_info->language == language) break; else found_earlier = TRUE; @@ -116,7 +115,7 @@ pango_find_map (const char *lang, if (!tmp_list) { map_info = g_new (PangoMapInfo, 1); - map_info->lang = g_strdup (lang); + map_info->language = language; map_info->engine_type_id = engine_type_id; map_info->render_type_id = render_type_id; @@ -394,20 +393,12 @@ map_add_engine (PangoMapInfo *info, for (i=0; i<pair->info.n_ranges; i++) { - gchar **langs; gboolean is_exact = FALSE; - + if (pair->info.ranges[i].langs) { - langs = g_strsplit (pair->info.ranges[i].langs, ";", -1); - for (j=0; langs[j]; j++) - if (strcmp (langs[j], "*") == 0 || - strcmp (langs[j], info->lang) == 0) - { - is_exact = TRUE; - break; - } - g_strfreev (langs); + if (pango_language_matches (info->language, pair->info.ranges[i].langs)) + is_exact = TRUE; } for (submap = pair->info.ranges[i].start / 256; |