diff options
author | Owen Taylor <otaylor@redhat.com> | 2003-09-23 23:11:59 +0000 |
---|---|---|
committer | Owen Taylor <otaylor@src.gnome.org> | 2003-09-23 23:11:59 +0000 |
commit | 0f36f55ee0e7c9bf224fabbaf31843b3868f213c (patch) | |
tree | a8446856f4dce9b792f5e2ca1c3f9d25bbc40b76 /pango/querymodules.c | |
parent | 8fa8e29cd61c802c6b100b3cca800784e3a9de20 (diff) | |
download | pango-0f36f55ee0e7c9bf224fabbaf31843b3868f213c.tar.gz |
Modules now declare a list of scripts that they cover instead of a list of
Tue Sep 23 18:03:57 2003 Owen Taylor <otaylor@redhat.com>
* pango/pango-engines.[ch] pango/pango-engines-private.h:
Modules now declare a list of scripts that they cover instead of a
list of code point ranges. Also, there is now a ->covers() virtual
function that allows a module to decide live whether the font
covers a particular codepoint; remove old get_coverage() method.
* pango/pango-fontset.[ch]: Add a foreach() function to
iterate over all the fonts in a fontset (with a true
return stopping iteration).
* pango/pango-context.c: Complete rewrite using script-run
information to improve language tags. Switch to an approach
where we handle one run at a time rather than computing
information for each character individually then later
breaking the result into runs.
* pango/pango-fontset.[ch]: Switch over to using
pango-impl-utils.h.
* modules/basic/basic-x.c pango/pangox-fontmap.c: Adapt to
the change from get_coverage => covers.
* pango/pango-modules.h pango/modules.c: Switch PangoMap
over to being based on script rather than being based
on codepoint. Remove the no longer needed pango_map_get_entry().
* pango/modules.c: Handle new script-based modules.
* pango/pango-fc-fontmap.c pango/pango-win32-fontmap.c
pango/pang-fontmap.[ch]: Add a shape_engine_type field
to PangoFontmapClass, pango_font_map_get_shape_engine_type();
this allows generic code to find a shaper for a particular
fontmap.
* pango/pango-script.[ch]: Add pango_script_get_sample_language(),
pango_language_includes_script(); functions for determining
the relationship between scripts and language.
* tools/gen-script-for-lang.c: Modify to spit out a
useful table.
* pango/pango-script-lang-table.h: Version of table
generated from current fontconfig data.
* pango/pangox.c: Remove complicated code to compute
coverages; no longer useful now that we just have
the basic shaper as a legacy thing.
* modules/*/*.c: Adapt to identifying shape engines
by language range.
* modules/thai/thai-fc.c modules/thai/thai-shaper.[ch]:
Remove now unused "has_glyph" function and XTIS support.
* modules/thai/thai-fc.c: Handle non-Thai characters
as well, since the Thai module now gets spaces,
punctuation, and so forth.
Diffstat (limited to 'pango/querymodules.c')
-rw-r--r-- | pango/querymodules.c | 30 |
1 files changed, 25 insertions, 5 deletions
diff --git a/pango/querymodules.c b/pango/querymodules.c index 0bec2a11..8ea48b7a 100644 --- a/pango/querymodules.c +++ b/pango/querymodules.c @@ -27,6 +27,7 @@ #include "pango-context.h" #include "pango-utils.h" #include "pango-engine.h" +#include "pango-enum-types.h" #include <errno.h> #include <string.h> @@ -98,6 +99,24 @@ escape_string (const char *str) g_module_symbol (module, name, (gpointer *)&location) #endif +static const char * +script_from_string (PangoScript script) +{ + static GEnumClass *class = NULL; + GEnumValue *value; + if (!class) + class = g_type_class_ref (PANGO_TYPE_SCRIPT); + + value = g_enum_get_value (class, script); + if (!value) + { + g_warning ("Engine reported invalid script value %d\n", script); + return script_from_string (PANGO_SCRIPT_INVALID_CODE); + } + + return value->value_nick; +} + void query_module (const char *dir, const char *name) { @@ -151,14 +170,13 @@ query_module (const char *dir, const char *name) engines[i].id, engines[i].engine_type, engines[i].render_type); g_free (quoted_path); - for (j=0; j < engines[i].n_ranges; j++) + for (j=0; j < engines[i].n_scripts; j++) { if (j != 0) g_printf (" "); - g_printf ("%d-%d:%s", - engines[i].ranges[j].start, - engines[i].ranges[j].end, - engines[i].ranges[j].langs); + g_printf ("%s:%s", + script_from_string (engines[i].scripts[j].script), + engines[i].scripts[j].langs); } g_printf ("\n"); } @@ -179,6 +197,8 @@ int main (int argc, char **argv) int i; char *path; + g_type_init (); + g_printf ("# Pango Modules file\n" "# Automatically generated file, do not edit\n" "#\n"); |