summaryrefslogtreecommitdiff
path: root/modules/indic
diff options
context:
space:
mode:
authorOwen Taylor <otaylor@redhat.com>2003-08-02 18:07:30 +0000
committerOwen Taylor <otaylor@src.gnome.org>2003-08-02 18:07:30 +0000
commit85cb529088899889a65a99d3a00f6035eecb4c98 (patch)
tree5524eccd3af9ececd7884b7ea22f29193c3f71d4 /modules/indic
parentbcf10a1085bdf9344e513785c1082f9b82278619 (diff)
downloadpango-85cb529088899889a65a99d3a00f6035eecb4c98.tar.gz
Remove old X font shapers.
Sat Aug 2 13:17:45 2003 Owen Taylor <otaylor@redhat.com> * configure.in modules/arabic/{Makefile.am arconv.[ch],langboxfont.[ch], mulefont.[ch],naqshfont.[ch],arabic-x.c} modules/hangul/{Makefile.am,hangul-x.c,tables-johabfont.i, tables-ksc5601.i} modules/hebrew/{Makefile.am,hebrew-x.c} modules/indic/{Makefile.am,*-x.c} modules/tamil modules/thai/{Makefile.am,thai-x.c}: Remove old X font shapers.
Diffstat (limited to 'modules/indic')
-rw-r--r--modules/indic/Makefile.am63
-rw-r--r--modules/indic/bengali-x.c309
-rw-r--r--modules/indic/devanagari-x.c361
-rw-r--r--modules/indic/gujarati-x.c337
-rw-r--r--modules/indic/gurmukhi-x.c252
-rw-r--r--modules/indic/myanmar-x.c232
6 files changed, 0 insertions, 1554 deletions
diff --git a/modules/indic/Makefile.am b/modules/indic/Makefile.am
index 2501d6f4..4da765d1 100644
--- a/modules/indic/Makefile.am
+++ b/modules/indic/Makefile.am
@@ -21,69 +21,6 @@ moduledir = $(libdir)/pango/$(PANGO_MODULE_VERSION)/modules
module_LTLIBRARIES =
noinst_LTLIBRARIES =
-if HAVE_X
-INCLUDES += $(X_CFLAGS)
-if INCLUDE_MYANMAR_X
-noinst_LTLIBRARIES += libpango-myanmar-x.la
-else
-module_LTLIBRARIES += pango-myanmar-x.la
-endif
-
-if INCLUDE_GURMUKHI_X
-noinst_LTLIBRARIES += libpango-gurmukhi-x.la
-else
-module_LTLIBRARIES += pango-gurmukhi-x.la
-endif
-
-if INCLUDE_BENGALI_X
-noinst_LTLIBRARIES += libpango-bengali-x.la
-else
-module_LTLIBRARIES += pango-bengali-x.la
-endif
-
-if INCLUDE_DEVANAGARI_X
-noinst_LTLIBRARIES += libpango-devanagari-x.la
-else
-module_LTLIBRARIES += pango-devanagari-x.la
-endif
-
-if INCLUDE_GUJARATI_X
-noinst_LTLIBRARIES += libpango-gujarati-x.la
-else
-module_LTLIBRARIES += pango-gujarati-x.la
-endif
-endif
-
-pango_devanagari_x_la_LDFLAGS = -export-dynamic -avoid-version -module
-pango_devanagari_x_la_LIBADD = $(pangoxlibs)
-pango_devanagari_x_la_SOURCES = devanagari-x.c pango-indic-script.h
-libpango_devanagari_x_la_SOURCES = devanagari-x.c pango-indic-script.h
-libpango_devanagari_x_la_CFLAGS = -DPANGO_MODULE_PREFIX=_pango_devanagari_x
-
-pango_myanmar_x_la_LDFLAGS = -export-dynamic -avoid-version -module
-pango_myanmar_x_la_LIBADD = $(pangoxlibs)
-pango_myanmar_x_la_SOURCES = myanmar-x.c pango-indic-script.h
-libpango_myanmar_x_la_SOURCES = myanmar-x.c pango-indic-script.h
-libpango_myanmar_x_la_CFLAGS = -DPANGO_MODULE_PREFIX=_pango_myanmar_x
-
-pango_gurmukhi_x_la_LDFLAGS = -export-dynamic -avoid-version -module
-pango_gurmukhi_x_la_LIBADD = $(pangoxlibs)
-pango_gurmukhi_x_la_SOURCES = gurmukhi-x.c pango-indic-script.h
-libpango_gurmukhi_x_la_SOURCES = gurmukhi-x.c pango-indic-script.h
-libpango_gurmukhi_x_la_CFLAGS = -DPANGO_MODULE_PREFIX=_pango_gurmukhi_x
-
-pango_bengali_x_la_LDFLAGS = -export-dynamic -avoid-version -module
-pango_bengali_x_la_LIBADD = $(pangoxlibs)
-pango_bengali_x_la_SOURCES = bengali-x.c pango-indic-script.h
-libpango_bengali_x_la_SOURCES = bengali-x.c pango-indic-script.h
-libpango_bengali_x_la_CFLAGS = -DPANGO_MODULE_PREFIX=_pango_bengali_x
-
-pango_gujarati_x_la_LDFLAGS = -export-dynamic -avoid-version -module
-pango_gujarati_x_la_LIBADD = $(pangoxlibs)
-pango_gujarati_x_la_SOURCES = gujarati-x.c pango-indic-script.h
-libpango_gujarati_x_la_SOURCES = gujarati-x.c pango-indic-script.h
-libpango_gujarati_x_la_CFLAGS = -DPANGO_MODULE_PREFIX=_pango_gujarati_x
-
if HAVE_XFT
INCLUDES += $(XFT_CFLAGS)
diff --git a/modules/indic/bengali-x.c b/modules/indic/bengali-x.c
deleted file mode 100644
index 7f74abe8..00000000
--- a/modules/indic/bengali-x.c
+++ /dev/null
@@ -1,309 +0,0 @@
-/* Pango - Bengali module
- * bengali.c:
- *
- * Copyright (C) 2000 Robert Brady,
- * (C) 2000 SuSE Linux Ltd.
- *
- * Author: Robert Brady <rwb197@zepler.org>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * Licence as published by the Free Software Foundation; either
- * version 2 of the licence, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public Licence for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * Licence along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * This is the renderer for Bengali script.
- *
- * This script is used to write many languages including the
- * following.
- *
- * as Assamese
- * bn Bengali
- * kha Khasi
- * mni Manipuri
- * mun Munda
- * sat Santali
- *
- */
-
-
-#include <glib.h>
-#include <stdio.h>
-#include <string.h>
-
-#include "pangox.h"
-#include "pango-indic.h"
-#include "pango-engine.h"
-
-#define SCRIPT_STRING "Bengali"
-#define SCRIPT_ENGINE_NAME SCRIPT_STRING "ScriptEngineX"
-#define ISCII_BASED
-#define RANGE_START 0x980
-#define RANGE_SIZE 0x80
-
-#include "pango-indic-script.h"
-
-static gboolean is_prefixing_vowel (gunichar i);
-static gboolean is_vowel_sign (gunichar i);
-static gboolean is_vowel_half (gunichar i);
-static gunichar vowel_sign_to_matra (gunichar i);
-static gboolean vowel_split (gunichar i, gunichar *a, gunichar *b);
-
-static PangoIndicScript script = {
- SCRIPT_STRING,
- &is_prefixing_vowel,
- &is_vowel_sign,
- &vowel_sign_to_matra,
- &is_vowel_half,
- &vowel_split,
-};
-
-static gunichar
-vowel_sign_to_matra (gunichar i)
-{
- if (!is_vowel_sign (i))
- return i;
- return i + 0x987 - 0x9c8;
-}
-
-gboolean
-vowel_split (gunichar i, gunichar *a, gunichar *b)
-{
- if (i == 0x9cb || i == 0x9cc) {
- if (a)
- *a = 0x9c7;
- if (b) {
- if (i == 0x9cc)
- *b = 0xe9d7;
- else
- *b = 0xe9be;
- }
- return TRUE;
- }
- return FALSE;
-}
-
-#define RA_SUPERSCRIPT 0xe9ff
-#define RA_SUBSCRIPT 0xe9fe
-
-static char *default_charset = "iso10646-bng";
-
-static PangoEngineRange pango_indic_range[] =
-{
- {RANGE_START, RANGE_END, "*"},
-};
-
-SCRIPT_ENGINE_DEFINITION
-
-static PangoCoverage *
-pango_indic_engine_get_coverage (PangoFont * font, PangoLanguage *lang)
-{
- gunichar i;
- PangoCoverage *result = pango_coverage_new ();
- PangoXSubfont subfont;
-
- int dev_font = pango_x_find_first_subfont (font, &default_charset, 1, &subfont);
-
- if (dev_font)
- {
- for (i = RANGE_START; i <= RANGE_END; i++)
- pango_coverage_set (result, i, PANGO_COVERAGE_EXACT);
-
- pango_coverage_set (result, 0x10000, PANGO_COVERAGE_EXACT);
- }
-
- return result;
-}
-
-static gboolean
-is_vowel_sign (gunichar i)
-{
- /* one that combines, whether or not it spaces */
- return (i >= 0x9BE && i <= 0x9Cc) || (i >= 0x9E2 && i <= 0x9E3);
-}
-
-static int
-is_consonant (int i)
-{
- return (i >= 0x995 && i <= 0x9b9) || (i >= 0x9dc && i <= 0x9df) || (i >= 0x9f0 && i <= 0x09f1);
-}
-
-static int
-is_ind_vowel (int i)
-{
- return (i >= 0x985 && i <= 0x994);
-}
-
-static gboolean
-is_vowel_half (gunichar i)
-{
- return (i == 0xe9d7) || (i == 0xe9be) || (i == 0x9d7);
-}
-
-static int
-is_prefixing_vowel (gunichar what)
-{
- return (what == 0x9bf) || (what == 0x9c7) || (what == 0x9c8);
-}
-
-static void
-pango_indic_make_ligs (gunichar * start, gunichar * end)
-{
- int num = end - start;
- int i;
-
- for (i = 0; i < num; i++)
- {
- gunichar t0 = pango_indic_get_char (start + i, end);
- gunichar t1 = pango_indic_get_char (start + 1 + i, end);
-
- if ((t0 == VIRAMA) && (t1 == 0x9af))
- {
- start[i+0] = 0;
- start[i+1] = 0xe9fd;
- }
- }
-
- if (start[0] == RA && start[1] == VIRAMA && is_consonant (start[2]))
- {
- start[0] = 0;
- start[1] = start[2];
- start[2] = RA_SUPERSCRIPT;
- }
-
- for (i = 0; i < (num - 1); i++)
- {
- if (start[i] == VIRAMA)
- {
- if (start[i+1] == RA)
- {
- start[i] = 0;
- start[i+1] = RA_SUBSCRIPT;
- break;
- }
- }
- }
-
-}
-
-static void
-pango_indic_engine_shape (PangoFont * font,
- const char *text,
- int length,
- PangoAnalysis * analysis, PangoGlyphString * glyphs)
-{
- PangoXSubfont subfont;
-
- int n_chars, n_glyph;
- int lvl;
- int i;
- gunichar *wc;
- int sb;
- int n_syls;
- gunichar **syls = g_new (gunichar *, 2);
- g_return_if_fail (font != NULL);
- g_return_if_fail (text != NULL);
- g_return_if_fail (length >= 0);
- g_return_if_fail (analysis != NULL);
-
- n_chars = n_glyph = g_utf8_strlen (text, length);
- lvl = pango_x_find_first_subfont (font, &default_charset, 1, &subfont);
- if (!lvl)
- {
- pango_x_fallback_shape (font, glyphs, text, n_chars);
- return;
- }
-
- pango_indic_split_out_characters (&script, text, n_chars, &wc,
- &n_glyph, glyphs);
- pango_indic_convert_vowels (&script, TRUE, &n_glyph, wc,
- pango_x_has_glyph (font,
- PANGO_X_MAKE_GLYPH (subfont, 0xc9bd)));
-
- n_syls = 1;
- syls[0] = wc;
- sb = glyphs->log_clusters[0];
- for (i = 0; i < n_glyph; i++)
- {
- if (i && (is_consonant (wc[i]) | is_ind_vowel (wc[i]))
- && wc[i - 1] != VIRAMA)
- {
- syls = g_renew (gunichar *, syls, n_syls + 2);
- syls[n_syls] = wc + i;
- n_syls++;
- sb = glyphs->log_clusters[i];
- }
- glyphs->log_clusters[i] = sb;
- }
- syls[n_syls] = wc + i;
-
- for (i = 0; i < n_syls; i++)
- {
- pango_indic_make_ligs (syls[i], syls[i+1]);
- pango_indic_shift_vowels (&script, syls[i], syls[i + 1]);
- }
-
- pango_indic_compact (&script, &n_glyph, wc, glyphs->log_clusters);
- pango_x_apply_ligatures (font, subfont, &wc, &n_glyph, &glyphs->log_clusters);
- pango_indic_compact (&script, &n_glyph, wc, glyphs->log_clusters);
- pango_glyph_string_set_size (glyphs, n_glyph);
-
- for (i = 0; i < n_glyph; i++)
- {
- PangoRectangle logical_rect;
- glyphs->glyphs[i].glyph = PANGO_X_MAKE_GLYPH (subfont, wc[i]);
- pango_font_get_glyph_extents (font, glyphs->glyphs[i].glyph,
- NULL, &logical_rect);
- glyphs->glyphs[i].geometry.x_offset = 0;
- glyphs->glyphs[i].geometry.y_offset = 0;
- glyphs->glyphs[i].geometry.width = logical_rect.width;
- }
- g_free (syls);
-}
-
-static PangoEngine *
-pango_indic_engine_x_new ()
-{
- PangoEngineShape *result;
- result = g_new (PangoEngineShape, 1);
- result->engine.id = SCRIPT_ENGINE_NAME;
- result->engine.type = PANGO_ENGINE_TYPE_SHAPE;
- result->engine.length = sizeof (result);
- result->script_shape = pango_indic_engine_shape;
- result->get_coverage = pango_indic_engine_get_coverage;
- return (PangoEngine *) result;
-}
-
-void
-PANGO_MODULE_ENTRY(list) (PangoEngineInfo **engines,
- int *n_engines)
-{
- *engines = script_engines;
- *n_engines = n_script_engines;
-}
-
-PangoEngine *
-PANGO_MODULE_ENTRY(load) (const char *id)
-{
- if (!strcmp (id, SCRIPT_ENGINE_NAME))
- return pango_indic_engine_x_new ();
- else
- return NULL;
-}
-
-void
-PANGO_MODULE_ENTRY(unload) (PangoEngine *engine)
-{
-}
-
diff --git a/modules/indic/devanagari-x.c b/modules/indic/devanagari-x.c
deleted file mode 100644
index 865124e3..00000000
--- a/modules/indic/devanagari-x.c
+++ /dev/null
@@ -1,361 +0,0 @@
-/* Pango - Devanagari module
- *
- * Copyright (C) 2000 SuSE Linux Ltd
- * Author: Robert Brady <robert@suse.co.uk>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * Licence as published by the Free Software Foundation; either
- * version 2.1 of the Licence, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public Licence for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * Licence along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * This is the renderer for the Devanagari script.
- *
- * This script is used to write many languages, including the
- * following.
- *
- * awa Awadhi bh Bihari bra Braj Bhasa
- * gon Gondhi hi Hindi kok Konkani
- * mr Marathi new Newari ne Nepali
- * sa Sanskrit sat Santali
- *
- * For a description of the rendering algorithm, see section 9.1 of
- * /The Unicode Standard Version 3.0/.
- */
-
-
-#include <glib.h>
-#include <string.h>
-
-#include "pangox.h"
-#include "pango-engine.h"
-
-#define RANGE_START 0x900
-#define RANGE_SIZE 0x80
-
-#define ISCII_BASED
-#define SCRIPT_STRING "Devanagari"
-#define SCRIPT_ENGINE_NAME SCRIPT_STRING "ScriptEngineX"
-
-#include "pango-indic.h"
-#include "pango-indic-script.h"
-
-static gboolean is_prefixing_vowel (gunichar i);
-static gboolean is_vowel_sign (gunichar i);
-static gunichar vowel_sign_to_matra (gunichar i);
-
-static PangoIndicScript script =
-{
- SCRIPT_STRING,
- &is_prefixing_vowel,
- &is_vowel_sign,
- &vowel_sign_to_matra,
- NULL, /* no split vowels for Devanagari */
-};
-
-#define INTERMEDIATE_HALF_FORM_OFFSET 0xf000
-#define FINAL_HALF_FORM_OFFSET 0xe000
-
-#define RA_SUPERSCRIPT 0xc97f
-#define RA_SUBSCRIPT 0xc97e
-
-static char *default_charset = "iso10646-dev";
-
-static PangoEngineRange pango_indic_range[] =
-{
- {RANGE_START, RANGE_END, "*"},
- {PANGO_ZERO_WIDTH_JOINER, PANGO_ZERO_WIDTH_JOINER, "*"},
-};
-
-SCRIPT_ENGINE_DEFINITION
-
-static PangoCoverage *
-pango_indic_engine_get_coverage (PangoFont * font, PangoLanguage *lang)
-{
- gunichar i;
- PangoCoverage *result = pango_coverage_new ();
- PangoXSubfont subfont;
-
- int dev_font = pango_x_find_first_subfont (font, &default_charset, 1, &subfont);
-
- if (dev_font)
- {
- for (i = RANGE_START; i <= RANGE_END; i++)
- pango_coverage_set (result, i, PANGO_COVERAGE_EXACT);
-
- pango_coverage_set (result, PANGO_ZERO_WIDTH_JOINER, PANGO_COVERAGE_EXACT);
- }
-
- return result;
-}
-
-static gboolean
-is_vowel_sign (gunichar i)
-{
- /* one that combines, whether or not it spaces */
- return (i >= 0x93E && i <= 0x94c) || (i >= 0x962 && i <= 0x963);
-}
-
-static int
-is_consonant (int i)
-{
- return (i >= 0x915 && i <= 0x939) || (i >= 0x958 && i <= 0x95f);
-}
-
-static int
-is_ind_vowel (int i)
-{
- return (i >= 0x905 && i <= 0x914);
-}
-
-static gunichar
-vowel_sign_to_matra (gunichar i)
-{
- if (is_vowel_sign (i))
- return i + 0x905 - 0x93e;
- return i;
-}
-
-static gboolean
-is_prefixing_vowel (gunichar i)
-{
- return i == 0x93f;
-}
-
-static void
-dev_mini_shuffle (gunichar *s, gunichar *e)
-{
- gunichar *dest = s;
- while (s < e)
- {
- if (*s)
- {
- *dest = *s;
- dest++;
- }
- s++;
- }
- while (dest < e)
- {
- *dest = 0;
- dest++;
- }
-}
-
-static int
-is_intermediate_form (int q)
-{
- return (q >= 0xf000 && q <= 0xffff);
-}
-
-static int
-is_consonantal_form (int q)
-{
- return (q == PANGO_ZERO_WIDTH_JOINER) || is_consonant (q) || (q >= 0xd000);
-}
-
-static int
-nominal_form (int q)
-{
- return q - 0xf000;
-}
-
-static int
-half_form (int q)
-{
- return (q & 0xfff) + 0xe000;
-}
-
-static void
-shuffle_one_along (gunichar *start, gunichar *end)
-{
- end--;
- if (*end != 0)
- g_printerr ("pango devanagari error, please report. bad shuffle!\n");
- while (end > start)
- {
- end[0] = end[-1];
- end--;
- }
- start[0] = 0;
-}
-
-static void
-pango_indic_make_ligs (gunichar * start, gunichar * end)
-{
- int num = end - start;
- int i;
-
- for (i = 0; i < (end - start); i++)
- {
- gunichar t0 = pango_indic_get_char (start + i, end);
- gunichar t1 = pango_indic_get_char (start + 1 + i, end);
-
- if (is_consonant (t0) && t1 == VIRAMA)
- {
- start[i+0] = t0 + INTERMEDIATE_HALF_FORM_OFFSET;
- start[i+1] = 0;
- }
- }
-
- if (num > 2 && start[0] == INTERMEDIATE_HALF_FORM_OFFSET + RA)
- {
- for (i=1;i<num;i++)
- start[i-1] = start[i];
-
- start[num-1] = RA_SUPERSCRIPT;
- }
-
- dev_mini_shuffle (start, end);
-
- for (i = 0; i < (end - start - 1); i++)
- if (is_intermediate_form (start[i]))
- {
- if (start[i+1] == RA)
- {
- start[i] = nominal_form (start[i]);
- start[i+1] = RA_SUBSCRIPT;
- }
- else if (start[i+1] == (RA + INTERMEDIATE_HALF_FORM_OFFSET))
- {
- start[i] = nominal_form (start[i]);
- start[i+1] = RA_SUBSCRIPT;
- shuffle_one_along (start+2, end);
- start[i+2] = VIRAMA;
- }
- }
-}
-
-static void
-pango_indic_engine_shape (PangoFont * font,
- const char *text,
- int length,
- PangoAnalysis * analysis,
- PangoGlyphString * glyphs)
-{
- PangoXSubfont subfont;
-
- int n_chars, n_glyph;
- int lvl;
- int i;
- gunichar *wc;
- int sb;
- int n_syls;
- gunichar **syls = g_new (gunichar *, 2);
-
- g_return_if_fail (font != NULL);
- g_return_if_fail (text != NULL);
- g_return_if_fail (length >= 0);
- g_return_if_fail (analysis != NULL);
-
- n_chars = n_glyph = g_utf8_strlen (text, length);
- lvl = pango_x_find_first_subfont (font, &default_charset, 1, &subfont);
- if (!lvl)
- {
- pango_x_fallback_shape (font, glyphs, text, n_chars);
- return;
- }
-
- pango_indic_split_out_characters (&script, text, n_chars, &wc, &n_glyph,
- glyphs);
- pango_indic_convert_vowels (&script, TRUE, &n_glyph, wc,
- pango_x_has_glyph (font,
- PANGO_X_MAKE_GLYPH(subfont, 0xc93e)));
-
- n_syls = 1;
- syls[0] = wc;
- sb = glyphs->log_clusters[0];
- for (i = 0; i < n_chars; i++)
- {
- if (i && (is_consonant (wc[i]) | is_ind_vowel (wc[i]))
- && wc[i - 1] != VIRAMA)
- {
- syls = g_renew (gunichar *, syls, n_syls + 2);
- syls[n_syls] = wc + i;
- n_syls++;
- sb = glyphs->log_clusters[i];
- }
- glyphs->log_clusters[i] = sb;
- }
- syls[n_syls] = wc + i;
-
- for (i = 0; i < n_syls; i++)
- {
- pango_indic_make_ligs (syls[i], syls[i+1]);
- pango_indic_shift_vowels (&script, syls[i], syls[i + 1]);
- }
-
- pango_indic_compact (&script, &n_glyph, wc, glyphs->log_clusters);
- pango_x_apply_ligatures (font, subfont, &wc, &n_glyph, &glyphs->log_clusters);
- pango_indic_compact (&script, &n_glyph, wc, glyphs->log_clusters);
- pango_glyph_string_set_size (glyphs, n_glyph);
-
- for (i = 0; i < n_glyph; i++)
- {
- PangoRectangle logical_rect;
-#if 0
- if (i && (wc[i] == VIRAMA) && (wc[i-1] == RA_SUBSCRIPT))
- {
- wc[i] = LOWER_VIRAMA_GLYPH;
- }
-#endif
- if ((i != (n_glyph - 1)) && is_intermediate_form (wc[i]) &&
- is_consonantal_form (wc[i+1]))
- {
- wc[i] = half_form (wc[i]);
- }
- glyphs->glyphs[i].glyph = PANGO_X_MAKE_GLYPH (subfont, wc[i]);
- pango_font_get_glyph_extents (font, glyphs->glyphs[i].glyph,
- NULL, &logical_rect);
- glyphs->glyphs[i].geometry.x_offset = 0;
- glyphs->glyphs[i].geometry.y_offset = 0;
- glyphs->glyphs[i].geometry.width = logical_rect.width;
- }
- g_free (syls);
-}
-
-static PangoEngine *
-pango_indic_engine_x_new ()
-{
- PangoEngineShape *result;
- result = g_new (PangoEngineShape, 1);
- result->engine.id = SCRIPT_ENGINE_NAME;
- result->engine.type = PANGO_ENGINE_TYPE_SHAPE;
- result->engine.length = sizeof (result);
- result->script_shape = pango_indic_engine_shape;
- result->get_coverage = pango_indic_engine_get_coverage;
- return (PangoEngine *) result;
-}
-
-void
-PANGO_MODULE_ENTRY(list) (PangoEngineInfo **engines,
- int *n_engines)
-{
- *engines = script_engines;
- *n_engines = n_script_engines;
-}
-
-PangoEngine *
-PANGO_MODULE_ENTRY(load) (const char *id)
-{
- if (!strcmp (id, SCRIPT_ENGINE_NAME))
- return pango_indic_engine_x_new ();
- else
- return NULL;
-}
-
-void
-PANGO_MODULE_ENTRY(unload) (PangoEngine *engine)
-{
-}
diff --git a/modules/indic/gujarati-x.c b/modules/indic/gujarati-x.c
deleted file mode 100644
index f414a38a..00000000
--- a/modules/indic/gujarati-x.c
+++ /dev/null
@@ -1,337 +0,0 @@
-/* Pango - Gujarati module
- *
- * Copyright (C) 2000 SuSE Linux Ltd
- * Author: Robert Brady <robert@suse.co.uk>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * Licence as published by the Free Software Foundation; either
- * version 2.1 of the Licence, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public Licence for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * Licence along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- */
-
-
-#include <glib.h>
-#include <stdio.h>
-#include <string.h>
-
-#include "pangox.h"
-
-#define RANGE_START 0xA80
-#define RANGE_SIZE 0x80
-
-#define ISCII_BASED
-#define SCRIPT_STRING "Gujarati"
-#define SCRIPT_ENGINE_NAME SCRIPT_STRING "ScriptEngineX"
-
-#include "pango-indic.h"
-#include "pango-indic-script.h"
-#include "pango-engine.h"
-
-static gboolean is_prefixing_vowel (gunichar i);
-static gboolean is_vowel_sign (gunichar i);
-
-static PangoIndicScript script = {
- SCRIPT_STRING,
- &is_prefixing_vowel,
- &is_vowel_sign,
- NULL, /* vowel sign to matra must die! */
- NULL, /* no split vowels for Devanagari */
-};
-
-#define INTERMEDIATE_HALF_FORM_OFFSET 0xf000
-#define FINAL_HALF_FORM_OFFSET 0xe000
-#define RA_SUPERSCRIPT 0xeaff
-#define RA_SUBSCRIPT 0xeafe
-
-static char *default_charset = "iso10646-guj";
-
-static PangoEngineRange pango_indic_range[] =
-{
- {RANGE_START, RANGE_END, "*"},
- {PANGO_ZERO_WIDTH_JOINER, PANGO_ZERO_WIDTH_JOINER, "*"},
-};
-
-SCRIPT_ENGINE_DEFINITION
-
-static PangoCoverage *
-pango_indic_engine_get_coverage (PangoFont * font, PangoLanguage *lang)
-{
- gunichar i;
- PangoCoverage *result = pango_coverage_new ();
- PangoXSubfont subfont;
-
- int dev_font = pango_x_find_first_subfont (font, &default_charset, 1, &subfont);
-
- if (dev_font)
- {
- for (i = RANGE_START; i <= RANGE_END; i++)
- pango_coverage_set (result, i, PANGO_COVERAGE_EXACT);
-
- pango_coverage_set (result, PANGO_ZERO_WIDTH_JOINER, PANGO_COVERAGE_EXACT);
- }
-
- return result;
-}
-
-static gboolean
-is_vowel_sign (gunichar i)
-{
- /* one that combines, whether or not it spaces */
- return (i >= 0xABE && i <= 0xACC);
-}
-
-static int
-is_consonant (int i)
-{
- return (i >= 0xA95 && i <= 0xAB9) || (i == 0xAE0);
-}
-
-static int
-is_ind_vowel (int i)
-{
- return (i >= 0xA85 && i <= 0xA94);
-}
-
-static gboolean
-is_prefixing_vowel (gunichar i)
-{
- return i == 0xABF;
-}
-
-static void
-dev_mini_shuffle (gunichar *s, gunichar *e)
-{
- gunichar *dest = s;
- while (s < e)
- {
- if (*s)
- {
- *dest = *s;
- dest++;
- }
- s++;
- }
- while (dest < e)
- {
- *dest = 0;
- dest++;
- }
-}
-
-static int
-is_intermediate_form (int q)
-{
- return (q >= 0xf000 && q <= 0xffff);
-}
-
-static int
-is_consonantal_form (int q)
-{
- return (q == PANGO_ZERO_WIDTH_JOINER) || is_consonant (q) || (q >= 0xc000);
-}
-
-static int
-nominal_form (int q)
-{
- return q - 0xf000;
-}
-
-static int
-half_form (int q)
-{
- return (q & 0xfff) + 0xe000;
-}
-
-static void
-shuffle_one_along (gunichar *start, gunichar *end)
-{
- end--;
- if (*end != 0)
- {
- return;
- }
- while (end > start)
- {
- end[0] = end[-1];
- end--;
- }
- start[0] = 0;
-}
-
-static void
-pango_indic_make_ligs (gunichar * start, gunichar * end)
-{
- int num = end - start;
- int i;
-
- for (i = 0; i < (end - start); i++)
- {
- gunichar t0 = pango_indic_get_char (start + i, end);
- gunichar t1 = pango_indic_get_char (start + 1 + i, end);
-
- if (is_consonant (t0) && t1 == VIRAMA)
- {
- start[i+0] = t0 + INTERMEDIATE_HALF_FORM_OFFSET;
- start[i+1] = 0;
- }
- }
-
- while (num && !is_consonant (start[num-1]))
- {
- num--;
- }
- if (num > 2 && start[0] == INTERMEDIATE_HALF_FORM_OFFSET + RA)
- {
- for (i=1;i<num;i++)
- {
- start[i-1] = start[i];
- }
- start[num-1] = RA_SUPERSCRIPT;
- }
-
- dev_mini_shuffle (start, end);
-
- for (i = 0; i < (end - start - 1); i++)
- if (is_intermediate_form (start[i]))
- {
- if (start[i+1] == RA)
- {
- start[i] = nominal_form (start[i]);
- start[i+1] = RA_SUBSCRIPT;
- }
- else if (start[i+1] == (RA + INTERMEDIATE_HALF_FORM_OFFSET))
- {
- start[i] = nominal_form (start[i]);
- start[i+1] = RA_SUBSCRIPT;
- shuffle_one_along (start+2, end);
- start[i+2] = VIRAMA;
- }
- }
-}
-
-static void
-pango_indic_engine_shape (PangoFont * font,
- const char *text,
- int length,
- PangoAnalysis * analysis, PangoGlyphString * glyphs)
-{
- PangoXSubfont subfont;
-
- int n_chars, n_glyph;
- int lvl;
- int i;
- gunichar *wc;
- int sb;
- int n_syls;
- gunichar **syls = g_new (gunichar *, 2);
-
- g_return_if_fail (font != NULL);
- g_return_if_fail (text != NULL);
- g_return_if_fail (length >= 0);
- g_return_if_fail (analysis != NULL);
-
- n_chars = n_glyph = g_utf8_strlen (text, length);
- lvl = pango_x_find_first_subfont (font, &default_charset, 1, &subfont);
- if (!lvl)
- {
- pango_x_fallback_shape (font, glyphs, text, n_chars);
- return;
- }
-
- pango_indic_split_out_characters (&script, text, n_chars, &wc,
- &n_glyph, glyphs);
- pango_indic_convert_vowels (&script, TRUE, &n_glyph, wc, FALSE);
-
- n_syls = 1;
- syls[0] = wc;
- sb = glyphs->log_clusters[0];
- for (i = 0; i < n_chars; i++)
- {
- if (i && (is_consonant (wc[i]) | is_ind_vowel (wc[i]))
- && wc[i - 1] != VIRAMA)
- {
- syls = g_renew (gunichar *, syls, n_syls + 2);
- syls[n_syls] = wc + i;
- n_syls++;
- sb = glyphs->log_clusters[i];
- }
- glyphs->log_clusters[i] = sb;
- }
- syls[n_syls] = wc + i;
-
- for (i = 0; i < n_syls; i++)
- {
- pango_indic_make_ligs (syls[i], syls[i+1]);
- pango_indic_shift_vowels (&script, syls[i], syls[i + 1]);
- }
-
- pango_indic_compact (&script, &n_glyph, wc, glyphs->log_clusters);
- pango_x_apply_ligatures (font, subfont, &wc, &n_glyph, &glyphs->log_clusters);
- pango_indic_compact (&script, &n_glyph, wc, glyphs->log_clusters);
- pango_glyph_string_set_size (glyphs, n_glyph);
-
- for (i = 0; i < n_glyph; i++)
- {
- PangoRectangle logical_rect;
- if ((i != (n_glyph - 1)) && is_intermediate_form (wc[i]) &&
- is_consonantal_form (wc[i+1]))
- {
- wc[i] = half_form (wc[i]);
- }
- glyphs->glyphs[i].glyph = PANGO_X_MAKE_GLYPH (subfont, wc[i]);
- pango_font_get_glyph_extents (font, glyphs->glyphs[i].glyph,
- NULL, &logical_rect);
- glyphs->glyphs[i].geometry.x_offset = 0;
- glyphs->glyphs[i].geometry.y_offset = 0;
- glyphs->glyphs[i].geometry.width = logical_rect.width;
- }
- g_free (syls);
-}
-
-static PangoEngine *
-pango_indic_engine_x_new ()
-{
- PangoEngineShape *result;
- result = g_new (PangoEngineShape, 1);
- result->engine.id = SCRIPT_ENGINE_NAME;
- result->engine.type = PANGO_ENGINE_TYPE_SHAPE;
- result->engine.length = sizeof (result);
- result->script_shape = pango_indic_engine_shape;
- result->get_coverage = pango_indic_engine_get_coverage;
- return (PangoEngine *) result;
-}
-
-void
-PANGO_MODULE_ENTRY(list) (PangoEngineInfo **engines,
- int *n_engines)
-{
- *engines = script_engines;
- *n_engines = n_script_engines;
-}
-
-PangoEngine *
-PANGO_MODULE_ENTRY(load) (const char *id)
-{
- if (!strcmp (id, SCRIPT_ENGINE_NAME))
- return pango_indic_engine_x_new ();
- else
- return NULL;
-}
-
-void
-PANGO_MODULE_ENTRY(unload) (PangoEngine * engine)
-{
-}
diff --git a/modules/indic/gurmukhi-x.c b/modules/indic/gurmukhi-x.c
deleted file mode 100644
index 6187f937..00000000
--- a/modules/indic/gurmukhi-x.c
+++ /dev/null
@@ -1,252 +0,0 @@
-/* Pango - Gurmukhi module
- * gurmukhi.c:
- *
- * Copyright (C) 2000 SuSE Linux Ltd
- * Author: Robert Brady <robert@suse.co.uk>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * This is the renderer for Gurmukhi. This script is primarily used
- * to write the Panjabi (pa) language.
- */
-
-
-#include <glib.h>
-#include <stdio.h>
-#include <string.h>
-
-#include "pangox.h"
-#include "pango-indic.h"
-#include "pango-engine.h"
-
-#define RANGE_START 0xa00
-#define RANGE_SIZE 0x80
-#define SCRIPT_STRING "Gurmukhi"
-#define SCRIPT_ENGINE_NAME SCRIPT_STRING "ScriptEngineX"
-#define ISCII_BASED
-
-#include "pango-indic-script.h"
-
-static gboolean is_prefixing_vowel (gunichar i);
-static gunichar vowel_sign_to_matra (gunichar i);
-static gboolean is_vowel_sign (gunichar i);
-static gboolean is_vowel_half (gunichar i);
-
-static PangoIndicScript script = {
- SCRIPT_STRING,
- &is_prefixing_vowel,
- &is_vowel_sign,
- &vowel_sign_to_matra,
- &is_vowel_half,
-};
-
-#define RA_SUBSCRIPT 0xea7e
-
-static char *default_charset = "iso10646-gur";
-
-static PangoEngineRange pango_indic_range[] =
-{
- {RANGE_START, RANGE_END, "*"},
-};
-
-SCRIPT_ENGINE_DEFINITION
-
-static PangoCoverage *
-pango_indic_engine_get_coverage (PangoFont * font, PangoLanguage *lang)
-{
- gunichar i;
- PangoCoverage *result = pango_coverage_new ();
- PangoXSubfont subfont;
-
- int dev_font = pango_x_find_first_subfont (font, &default_charset, 1, &subfont);
-
- if (dev_font)
- {
- for (i = RANGE_START; i <= RANGE_END; i++)
- pango_coverage_set (result, i, PANGO_COVERAGE_EXACT);
-
- }
-
- return result;
-}
-
-static gboolean
-is_vowel_sign (gunichar i)
-{
- /* one that combines, whether or not it spaces */
- return (i >= 0xa3e && i <= 0xa4c);
-}
-
-static gunichar
-vowel_sign_to_matra (gunichar i)
-{
- if (i >= 0xa3e && i <= 0xa4c)
- return i - 0xa3e + 0xa06;
- return i;
-}
-
-static int
-is_consonant (int i)
-{
- return (i >= 0xa15 && i <= 0xa39) ||
- (i >= 0xa59 && i <= 0xa5e);
-}
-
-static int
-is_ind_vowel (int i)
-{
- return (i >= 0xa05 && i <= 0xa14);
-}
-
-static gboolean
-is_vowel_half (gunichar i)
-{
- return 0;
-}
-
-static int
-is_prefixing_vowel (gunichar what)
-{
- return (what == 0xa3f);
-}
-
-static void
-pango_indic_make_ligs (gunichar * start, gunichar * end)
-{
- int i;
- for (i = 0; i < (end-start-2);i++)
- {
- if (is_consonant (start[i]))
- {
- if (start[i+2]==RA && start[i+1]==VIRAMA)
- {
- start[i+1] = 0;
- start[i+2] = RA_SUBSCRIPT;
- }
- }
- }
-}
-
-static void
-pango_indic_engine_shape (PangoFont * font,
- const char *text,
- int length,
- PangoAnalysis * analysis, PangoGlyphString * glyphs)
-{
- PangoXSubfont subfont;
-
- int n_chars, n_glyph;
- int lvl;
- int i;
- gunichar *wc;
- int sb;
- int n_syls;
- gunichar **syls = g_new (gunichar *, 2);
-
- g_return_if_fail (font != NULL);
- g_return_if_fail (text != NULL);
- g_return_if_fail (length >= 0);
- g_return_if_fail (analysis != NULL);
-
- n_chars = n_glyph = g_utf8_strlen (text, length);
- lvl = pango_x_find_first_subfont (font, &default_charset, 1, &subfont);
- if (!lvl)
- {
- pango_x_fallback_shape (font, glyphs, text, n_chars);
- return;
- }
-
- pango_indic_split_out_characters (&script, text, n_chars, &wc,
- &n_glyph, glyphs);
- pango_indic_convert_vowels (&script, TRUE, &n_glyph, wc, FALSE);
-
- n_syls = 1;
- syls[0] = wc;
- sb = glyphs->log_clusters[0];
- for (i = 0; i < n_glyph; i++)
- {
- if (i && (is_consonant (wc[i]) | is_ind_vowel (wc[i]))
- && wc[i - 1] != VIRAMA)
- {
- syls = g_renew (gunichar *, syls, n_syls + 2);
- syls[n_syls] = wc + i;
- n_syls++;
- sb = glyphs->log_clusters[i];
- }
- glyphs->log_clusters[i] = sb;
- }
- syls[n_syls] = wc + i;
-
- for (i = 0; i < n_syls; i++)
- {
- pango_indic_make_ligs (syls[i], syls[i+1]);
- pango_indic_shift_vowels (&script, syls[i], syls[i + 1]);
- }
-
- pango_indic_compact (&script, &n_glyph, wc, glyphs->log_clusters);
- pango_x_apply_ligatures (font, subfont, &wc, &n_glyph, &glyphs->log_clusters);
- pango_indic_compact (&script, &n_glyph, wc, glyphs->log_clusters);
- pango_glyph_string_set_size (glyphs, n_glyph);
-
- for (i = 0; i < n_glyph; i++)
- {
- PangoRectangle logical_rect;
- glyphs->glyphs[i].glyph = PANGO_X_MAKE_GLYPH (subfont, wc[i]);
- pango_font_get_glyph_extents (font, glyphs->glyphs[i].glyph,
- NULL, &logical_rect);
- glyphs->glyphs[i].geometry.x_offset = 0;
- glyphs->glyphs[i].geometry.y_offset = 0;
- glyphs->glyphs[i].geometry.width = logical_rect.width;
- }
- g_free (syls);
-}
-
-static PangoEngine *
-pango_indic_engine_x_new ()
-{
- PangoEngineShape *result;
- result = g_new (PangoEngineShape, 1);
- result->engine.id = SCRIPT_ENGINE_NAME;
- result->engine.type = PANGO_ENGINE_TYPE_SHAPE;
- result->engine.length = sizeof (result);
- result->script_shape = pango_indic_engine_shape;
- result->get_coverage = pango_indic_engine_get_coverage;
- return (PangoEngine *) result;
-}
-
-void
-PANGO_MODULE_ENTRY(list) (PangoEngineInfo **engines,
- int *n_engines)
-{
- *engines = script_engines;
- *n_engines = n_script_engines;
-}
-
-PangoEngine *
-PANGO_MODULE_ENTRY(load) (const char *id)
-{
- if (!strcmp (id, SCRIPT_ENGINE_NAME))
- return pango_indic_engine_x_new ();
- else
- return NULL;
-}
-
-void
-PANGO_MODULE_ENTRY(unload) (PangoEngine * engine)
-{
-}
diff --git a/modules/indic/myanmar-x.c b/modules/indic/myanmar-x.c
deleted file mode 100644
index 76dd5c18..00000000
--- a/modules/indic/myanmar-x.c
+++ /dev/null
@@ -1,232 +0,0 @@
-/* Pango - Myanmar module
- * myanmar.c:
- *
- * Copyright (C) 2000 SuSE Linux Ltd
- * Author: Robert Brady <robert@suse.co.uk>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * This is the renderer for the Burmese (Myanmar) script. This
- * script is used to write the following languages :
- *
- * my Burmese
- * shn Shan
- * mkh Mon
- * pi Pali
- *
- */
-
-
-#include <glib.h>
-#include <stdio.h>
-#include <string.h>
-
-#include "pangox.h"
-#include "pango-indic.h"
-#include "pango-engine.h"
-
-#define RANGE_START 0x1000
-#define RANGE_SIZE 0x80
-#define SCRIPT_STRING "Myanmar"
-#define SCRIPT_ENGINE_NAME SCRIPT_STRING "ScriptEngineX"
-#define VIRAMA 0x1039
-
-#include "pango-indic-script.h"
-
-static gboolean is_prefixing_vowel (gunichar i);
-static gboolean is_vowel_sign (gunichar i);
-static gunichar vowel_sign_to_matra (gunichar i);
-
-static PangoIndicScript script = {
- SCRIPT_STRING,
- &is_prefixing_vowel,
- &is_vowel_sign,
- &vowel_sign_to_matra,
-};
-
-static char *default_charset = "iso10646-brm";
-
-static PangoEngineRange pango_indic_range[] =
-{
- {RANGE_START, RANGE_END, "*"},
-};
-
-SCRIPT_ENGINE_DEFINITION
-
-static PangoCoverage *
-pango_engine_get_coverage (PangoFont * font, PangoLanguage *lang)
-{
- gunichar i;
- PangoCoverage *result = pango_coverage_new ();
- PangoXSubfont subfont;
-
- int dev_font = pango_x_find_first_subfont (font, &default_charset, 1, &subfont);
-
- if (dev_font)
- {
- for (i = RANGE_START; i <= RANGE_END; i++)
- pango_coverage_set (result, i, PANGO_COVERAGE_EXACT);
-
- }
-
- return result;
-}
-
-static gboolean
-is_vowel_sign (gunichar i)
-{
- /* one that combines, whether or not it spaces */
- return (i >= 0x102c && i <= 0x1032) || (i >= 0x1056 && i <= 0x1059);
-}
-
-static gunichar
-vowel_sign_to_matra (gunichar i)
-{
- if (i >= 0x102d && i <= 0x1032)
- return i - 0x102d + 0x1023;
- return i;
-}
-
-static int
-is_consonant (int i)
-{
- return (i >= 0x1000 && i <= 0x1020) || (i >= 0x1052 && i <= 0x1053);
-}
-
-static int
-is_ind_vowel (int i)
-{
- return (i >= 0x1021 && i <= 0x102a);
-}
-
-static int
-is_prefixing_vowel (gunichar what)
-{
- return (what == 0x1031);
-}
-
-static void
-pango_engine_shape (PangoFont * font,
- const char *text,
- int length,
- PangoAnalysis * analysis, PangoGlyphString * glyphs)
-{
- PangoXSubfont subfont;
-
- int n_chars, n_glyph;
- int lvl;
- int i;
- gunichar *wc;
- int sb;
- int n_syls;
- gunichar **syls = g_new (gunichar *, 2);
-
- g_return_if_fail (font != NULL);
- g_return_if_fail (text != NULL);
- g_return_if_fail (length >= 0);
- g_return_if_fail (analysis != NULL);
-
- n_chars = n_glyph = g_utf8_strlen (text, length);
- lvl = pango_x_find_first_subfont (font, &default_charset, 1, &subfont);
- if (!lvl)
- {
- pango_x_fallback_shape (font, glyphs, text, n_chars);
- return;
- }
-
- pango_indic_split_out_characters (&script, text, n_chars, &wc,
- &n_glyph, glyphs);
- pango_indic_convert_vowels (&script, FALSE, &n_glyph, wc, FALSE);
-
- n_syls = 1;
- syls[0] = wc;
- sb = glyphs->log_clusters[0];
- for (i = 0; i < n_glyph; i++)
- {
- if (i && (is_consonant (wc[i]) | is_ind_vowel (wc[i]))
- && wc[i - 1] != VIRAMA)
- {
- syls = g_renew (gunichar *, syls, n_syls + 2);
- syls[n_syls] = wc + i;
- n_syls++;
- sb = glyphs->log_clusters[i];
- }
- glyphs->log_clusters[i] = sb;
- }
- syls[n_syls] = wc + i;
-
- for (i = 0; i < n_syls; i++)
- {
- pango_indic_shift_vowels (&script, syls[i], syls[i + 1]);
- }
-
- pango_indic_compact (&script, &n_glyph, wc, glyphs->log_clusters);
- while ((i=pango_x_apply_ligatures (font, subfont, &wc, &n_glyph, &glyphs->log_clusters)))
- {
- pango_indic_compact (&script, &n_glyph, wc, glyphs->log_clusters);
- }
- pango_indic_compact (&script, &n_glyph, wc, glyphs->log_clusters);
- pango_glyph_string_set_size (glyphs, n_glyph);
-
- for (i = 0; i < n_glyph; i++)
- {
- PangoRectangle logical_rect;
- glyphs->glyphs[i].glyph = PANGO_X_MAKE_GLYPH (subfont, wc[i]);
- pango_font_get_glyph_extents (font, glyphs->glyphs[i].glyph,
- NULL, &logical_rect);
- glyphs->glyphs[i].geometry.x_offset = 0;
- glyphs->glyphs[i].geometry.y_offset = 0;
- glyphs->glyphs[i].geometry.width = logical_rect.width;
- }
- g_free (syls);
-}
-
-static PangoEngine *
-pango_engine_x_new ()
-{
- PangoEngineShape *result;
- result = g_new (PangoEngineShape, 1);
- result->engine.id = SCRIPT_ENGINE_NAME;
- result->engine.type = PANGO_ENGINE_TYPE_SHAPE;
- result->engine.length = sizeof (result);
- result->script_shape = pango_engine_shape;
- result->get_coverage = pango_engine_get_coverage;
- return (PangoEngine *) result;
-}
-
-void
-PANGO_MODULE_ENTRY(list) (PangoEngineInfo **engines,
- int *n_engines)
-{
- *engines = script_engines;
- *n_engines = n_script_engines;
-}
-
-PangoEngine *
-PANGO_MODULE_ENTRY(load) (const char *id)
-{
- if (!strcmp (id, SCRIPT_ENGINE_NAME))
- return pango_engine_x_new ();
- else
- return NULL;
-}
-
-void
-PANGO_MODULE_ENTRY(unload) (PangoEngine * engine)
-{
-}