summaryrefslogtreecommitdiff
path: root/pango/modules.c
diff options
context:
space:
mode:
authorOwen Taylor <otaylor@redhat.com>2001-06-14 20:38:25 +0000
committerOwen Taylor <otaylor@src.gnome.org>2001-06-14 20:38:25 +0000
commit5ee19fca3c7c3da53ef4f000efdb3bbf4dcb1a04 (patch)
tree17a70e18597aae753e36a983150500bd9362dcfd /pango/modules.c
parent3a42444e7f2449598106338be7e6ec9468bb7946 (diff)
downloadpango-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.c29
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;