summaryrefslogtreecommitdiff
path: root/pango/querymodules.c
diff options
context:
space:
mode:
authorOwen Taylor <otaylor@redhat.com>2003-09-23 23:11:59 +0000
committerOwen Taylor <otaylor@src.gnome.org>2003-09-23 23:11:59 +0000
commit0f36f55ee0e7c9bf224fabbaf31843b3868f213c (patch)
treea8446856f4dce9b792f5e2ca1c3f9d25bbc40b76 /pango/querymodules.c
parent8fa8e29cd61c802c6b100b3cca800784e3a9de20 (diff)
downloadpango-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.c30
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");