summaryrefslogtreecommitdiff
path: root/pango/pango-engine.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/pango-engine.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/pango-engine.c')
-rw-r--r--pango/pango-engine.c59
1 files changed, 31 insertions, 28 deletions
diff --git a/pango/pango-engine.c b/pango/pango-engine.c
index 844a534d..d421a1ac 100644
--- a/pango/pango-engine.c
+++ b/pango/pango-engine.c
@@ -31,18 +31,25 @@ PANGO_DEFINE_TYPE_ABSTRACT (PangoEngineLang, pango_engine_lang,
NULL, NULL,
PANGO_TYPE_ENGINE);
-static PangoCoverage *
-pango_engine_shape_real_get_coverage (PangoEngineShape *engine,
- PangoFont *font,
- PangoLanguage *language)
+static PangoCoverageLevel
+pango_engine_shape_real_covers (PangoEngineShape *engine,
+ PangoFont *font,
+ PangoLanguage *language,
+ gunichar wc)
{
- return pango_font_get_coverage (font, language);
+
+ PangoCoverage *coverage = pango_font_get_coverage (font, language);
+ PangoCoverageLevel result = pango_coverage_get (coverage, wc);
+
+ pango_coverage_unref (coverage);
+
+ return result;
}
void
pango_engine_shape_class_init (PangoEngineShapeClass *class)
{
- class->get_coverage = pango_engine_shape_real_get_coverage;
+ class->covers = pango_engine_shape_real_covers;
}
PANGO_DEFINE_TYPE_ABSTRACT (PangoEngineShape, pango_engine_shape,
@@ -70,17 +77,19 @@ _pango_engine_shape_shape (PangoEngineShape *engine,
glyphs);
}
-PangoCoverage *
-_pango_engine_shape_get_coverage (PangoEngineShape *engine,
- PangoFont *font,
- PangoLanguage *language)
+PangoCoverageLevel
+_pango_engine_shape_covers (PangoEngineShape *engine,
+ PangoFont *font,
+ PangoLanguage *language,
+ gunichar wc)
{
- g_return_val_if_fail (PANGO_IS_ENGINE_SHAPE (engine), NULL);
- g_return_val_if_fail (PANGO_IS_FONT (font), NULL);
+ g_return_val_if_fail (PANGO_IS_ENGINE_SHAPE (engine), PANGO_COVERAGE_NONE);
+ g_return_val_if_fail (PANGO_IS_FONT (font), PANGO_COVERAGE_NONE);
- return PANGO_ENGINE_SHAPE_GET_CLASS (engine)->get_coverage (engine,
- font,
- language);
+ return PANGO_ENGINE_SHAPE_GET_CLASS (engine)->covers (engine,
+ font,
+ language,
+ wc);
}
/* No extra fields needed */
@@ -124,25 +133,19 @@ fallback_engine_shape (PangoEngineShape *engine,
}
}
-static PangoCoverage*
-fallback_engine_get_coverage (PangoEngineShape *engine,
- PangoFont *font,
- PangoLanguage *lang)
+static PangoCoverageLevel
+fallback_engine_covers (PangoEngineShape *engine,
+ PangoFont *font,
+ PangoLanguage *lang,
+ gunichar wc)
{
- PangoCoverage *result = pango_coverage_new ();
-
- /* We return an empty coverage (this function won't get
- * called, but if it is, empty coverage will keep
- * it from being used).
- */
-
- return result;
+ return PANGO_COVERAGE_NONE;
}
static void
fallback_engine_class_init (PangoEngineShapeClass *class)
{
- class->get_coverage = fallback_engine_get_coverage;
+ class->covers = fallback_engine_covers;
class->script_shape = fallback_engine_shape;
}