summaryrefslogtreecommitdiff
path: root/modules/arabic/mulefont.c
diff options
context:
space:
mode:
Diffstat (limited to 'modules/arabic/mulefont.c')
-rw-r--r--modules/arabic/mulefont.c295
1 files changed, 0 insertions, 295 deletions
diff --git a/modules/arabic/mulefont.c b/modules/arabic/mulefont.c
deleted file mode 100644
index f283ad22..00000000
--- a/modules/arabic/mulefont.c
+++ /dev/null
@@ -1,295 +0,0 @@
-/* pango-arabic module
- *
- * (C) 2000 K. Koehler <koehler@or.uni-bonn.de>
- *
- * This file provides a mapping unicode <- mulefont
- */
-
-
-#include <stdio.h>
-#include <glib.h>
-#include "pangox.h"
-
-
-/* #define DEBUG */
-#ifdef DEBUG
-#include <stdio.h>
-#endif
-#include "mulefont.h"
-
-ArabicFontInfo*
-arabic_muleinit(PangoFont *font)
-{
- static char *mule_charsets0[] = {
- "mulearabic-0",
- };
-
- static char *mule_charsets1[] = {
- "mulearabic-1",
- };
-
- static char *mule_charsets2[] = {
- "mulearabic-2",
- };
-
- ArabicFontInfo *fs = NULL;
- PangoXSubfont *subfonts;
- int *subfont_charsets;
- int n_subfonts;
- PangoXSubfont mulefonts[3];
-
- n_subfonts = pango_x_list_subfonts (font,mule_charsets0,
- 1, &subfonts, &subfont_charsets);
- if (n_subfonts > 0)
- {
- mulefonts[0] = subfonts[0];
- }
- g_free (subfonts);
- g_free (subfont_charsets);
-
- n_subfonts = pango_x_list_subfonts (font,mule_charsets1,
- 1, &subfonts, &subfont_charsets);
- if (n_subfonts > 0)
- {
- mulefonts[1] = subfonts[0];
- }
- g_free (subfonts);
- g_free (subfont_charsets);
-
- n_subfonts = pango_x_list_subfonts (font,mule_charsets2,
- 1, &subfonts, &subfont_charsets);
- if (n_subfonts > 0)
- {
- mulefonts[2] = subfonts[0];
- }
- g_free (subfonts);
- g_free (subfont_charsets);
-
- if (( mulefonts[0] != 0)&&(mulefonts[1] != 0)&&(mulefonts[2] != 0))
- {
- fs = g_new (ArabicFontInfo,1);
- fs->level = ar_novowel | ar_mulefont;
- fs->subfonts[0] = mulefonts[0];
- fs->subfonts[1] = mulefonts[1];
- fs->subfonts[2] = mulefonts[2];
- }
- return fs;
-}
-
-
-typedef struct {
- gunichar unicodechar;
- int fontindex;
- int charindex;
-} fontentry;
-
-
-static fontentry charmap [] =
-{
- { 0xFE80,1,0x2d }, /* HAMZA; handle seperately !!! */
- { 0xFE81,1,0x2e }, /* ALIF MADDA */
- { 0xFE82,1,0x2f },
- { 0xFE83,1,0x30 }, /* ALIF HAMZA */
- { 0xFE84,1,0x31 },
- { 0xFE85,1,0x32 }, /* WAW HAMZA */
- { 0xFE86,1,0x33 },
- { 0xFE87,1,0x34 }, /* ALIF IHAMZA */
- { 0xFE88,1,0x35 },
- { 0xFE89,2,0x21 }, /* YA HAMZA */
- { 0xFE8A,2,0x22 },
- { 0xFE8B,1,0x36 }, /* HMAZA-'pod' */
- { 0xFE8C,1,0x37 },
- { 0xFE8D,1,0x38 }, /* ALIF */
- { 0xFE8E,1,0x39 },
- { 0xFE8F,2,0x23 }, /* BA */
- { 0xFE90,2,0x24 },
- { 0xFE91,1,0x3A },
- { 0xFE92,1,0x3B },
- { 0xFE93,1,0x3C }, /* TA MARBUTA */
- { 0xFE94,1,0x3D },
- { 0xFE95,2,0x25 }, /* TA */
- { 0xFE96,2,0x26 },
- { 0xFE97,1,0x3E },
- { 0xFE98,1,0x3F },
- { 0xFE99,2,0x27 }, /* THA */
- { 0xFE9A,2,0x28 },
- { 0xFE9B,1,0x40 },
- { 0xFE9C,1,0x41 },
- { 0xFE9D,2,0x29 }, /* DJIM */
- { 0xFE9E,2,0x2C },
- { 0xFE9F,2,0x2A },
- { 0xFEA0,2,0x2B },
- { 0xFEA1,2,0x2D }, /* .HA */
- { 0xFEA2,2,0x30 },
- { 0xFEA3,2,0x2E },
- { 0xFEA4,2,0x2F },
- { 0xFEA5,2,0x31 }, /* CHA */
- { 0xFEA6,2,0x34 },
- { 0xFEA7,2,0x32 },
- { 0xFEA8,2,0x33 },
- { 0xFEA9,1,0x42 }, /* DAL */
- { 0xFEAA,1,0x43 },
- { 0xFEAB,1,0x44 }, /* THAL */
- { 0xFEAC,1,0x45 },
- { 0xFEAD,1,0x46 }, /* RA */
- { 0xFEAE,1,0x47 },
- { 0xFEAF,1,0x48 }, /* ZAY */
- { 0xFEB0,1,0x49 },
- { 0xFEB1,2,0x35 }, /* SIN */
- { 0xFEB2,2,0x38 },
- { 0xFEB3,2,0x36 },
- { 0xFEB4,2,0x37 },
- { 0xFEB5,2,0x39 }, /* SHIN */
- { 0xFEB2,2,0x3C },
- { 0xFEB3,2,0x3A },
- { 0xFEB4,2,0x3B },
- { 0xFEB9,2,0x3D }, /* SAAD */
- { 0xFEBA,2,0x40 },
- { 0xFEBB,2,0x3E },
- { 0xFEBC,2,0x3F },
- { 0xFEBD,2,0x41 }, /* DAAD */
- { 0xFEBE,2,0x44 },
- { 0xFEBF,2,0x42 },
- { 0xFEC0,2,0x43 },
- { 0xFEC1,2,0x45 }, /* .TA */
- { 0xFEC2,2,0x48 },
- { 0xFEC3,2,0x46 },
- { 0xFEC4,2,0x47 },
- { 0xFEC5,2,0x49 }, /* .ZA */
- { 0xFEC6,2,0x4C },
- { 0xFEC7,2,0x4A },
- { 0xFEC8,2,0x4B },
- { 0xFEC9,2,0x4D }, /* AIN */
- { 0xFECA,2,0x4E },
- { 0xFECB,1,0x4A },
- { 0xFECC,1,0x4B },
- { 0xFECD,2,0x4F }, /* RAIN */
- { 0xFECE,2,0x50 },
- { 0xFECF,1,0x4C },
- { 0xFED0,1,0x4D },
- { 0xFED1,2,0x51 }, /* FA */
- { 0xFED2,2,0x52 },
- { 0xFED3,1,0x4E },
- { 0xFED4,1,0x4F },
- { 0xFED5,2,0x53 }, /* QAF */
- { 0xFED6,2,0x54 },
- { 0xFED7,1,0x50 },
- { 0xFEB8,1,0x51 },
- { 0xFED9,2,0x55 }, /* KAF */
- { 0xFEDA,2,0x58 },
- { 0xFEDB,2,0x56 },
- { 0xFEDC,2,0x57 },
- { 0xFEDD,2,0x59 }, /* LAM */
- { 0xFEDE,2,0x5A },
- { 0xFEDF,1,0x52 },
- { 0xFEE0,1,0x53 },
- { 0xFEE1,1,0x54 }, /* MIM */
- { 0xFEE2,1,0x57 },
- { 0xFEE3,1,0x55 },
- { 0xFEE4,1,0x56 },
- { 0xFEE5,2,0x5B }, /* NUN */
- { 0xFEE6,2,0x5C },
- { 0xFEE7,1,0x58 },
- { 0xFEE8,1,0x59 },
- { 0xFEE9,1,0x5A }, /* HA */
- { 0xFEEA,1,0x5D },
- { 0xFEEB,1,0x5B },
- { 0xFEEC,1,0x5C },
- { 0xFEED,1,0x5E }, /* WAW */
- { 0xFEEE,1,0x5F },
- { 0xFEEF,2,0x5D }, /* ALIF MAQSORA */
- { 0xFEF0,2,0x5E },
- { 0xFEF1,2,0x5F }, /* YA */
- { 0xFEF2,2,0x60 },
- { 0xFEF3,1,0x60 },
- { 0xFEF4,1,0x61 },
- { 0xFEF5,1,0x62 }, /* Lam-Alif Madda */
- { 0xFEF6,2,0x61 },
- { 0xFEF7,1,0x63 }, /* Lam-Alif Hamza*/
- { 0xFEF8,2,0x62 },
- { 0xFEF9,1,0x64 }, /* Lam-Alif iHamza*/
- { 0xFEFA,2,0x63 },
- { 0xFEFB,1,0x65 }, /* Lam-Alif */
- { 0xFEFC,2,0x64 }
-};
-
-void
-arabic_mule_recode(PangoXSubfont* subfont,gunichar* glyph,PangoXSubfont* mulefonts)
-{
- int letter=*glyph;
- if ((letter >= 0x660)&&(letter <= 0x669)) /* indic numeral */
- {
- *subfont = mulefonts[0];
- *glyph = letter - 0x660 + 0x21;
- }
- else if ((letter >= 0xFE80)&&(letter <= 0xFEFC))
- { /* now we have a mess ... a big mess ... */
- /* The mule 'idea' is that "wide" forms are in the -2 font, whereas
- * narrow one are in the -1 font.
- * to conserve space, the characters are all ordered in a big lump.
- * emacs can't handle it ...
- */
-#ifdef DEBUG
- if (charmap[letter-0xFE80].unicodechar != letter)
- {
- fprintf(stderr,"[ar] mulefont charmap table defect "
- "%x comes out as %x ",
- letter,charmap[letter-0xFE80].unicodechar);
- }
-#endif
- *subfont = mulefonts[charmap[letter-0xFE80].fontindex];
- *glyph = charmap[letter-0xFE80].charindex;
- }
- else if (letter == 0x621)
- {
- *subfont = mulefonts[charmap[0].fontindex];
- *glyph = charmap[0].charindex;
- }
- else if (letter == 0x61F)
- { /* question mark */
- *subfont = mulefonts[1];
- *glyph = 0x29;
- }
- else
- {
- switch(letter){
- /* Gaf */
- case 0xFB92: *subfont = mulefonts[2]; *glyph = 0x6B; break;
- case 0xFB93: *subfont = mulefonts[2]; *glyph = 0x6E; break;
- case 0xFB94: *subfont = mulefonts[2]; *glyph = 0x6C; break;
- case 0xFB95: *subfont = mulefonts[2]; *glyph = 0x6D; break;
- /* persian Kaf -- the first to forms are wrong ... */
- case 0xFB8E: *subfont = mulefonts[2]; *glyph = 0x55; break;
- case 0xFB8F: *subfont = mulefonts[2]; *glyph = 0x58; break;
- case 0xFB90: *subfont = mulefonts[2]; *glyph = 0x56; break;
- case 0xFB91: *subfont = mulefonts[2]; *glyph = 0x57; break;
- /* Tcheh */
- case 0xFB7A: *subfont = mulefonts[2]; *glyph = 0x67; break;
- case 0xFB7B: *subfont = mulefonts[2]; *glyph = 0x6A; break;
- case 0xFB7C: *subfont = mulefonts[2]; *glyph = 0x68; break;
- case 0xFB7D: *subfont = mulefonts[2]; *glyph = 0x69; break;
- /* Pe */
- case 0xFB56: *subfont = mulefonts[2]; *glyph = 0x65; break;
- case 0xFB57: *subfont = mulefonts[2]; *glyph = 0x66; break;
- case 0xFB58: *subfont = mulefonts[1]; *glyph = 0x66; break;
- case 0xFB59: *subfont = mulefonts[1]; *glyph = 0x67; break;
- /* farsi Jeh */
- case 0xFBFC: *subfont = mulefonts[2]; *glyph = 0x5D; break;
- case 0xFBFD: *subfont = mulefonts[2]; *glyph = 0x5E; break;
- case 0xFBFE: *subfont = mulefonts[1]; *glyph = 0x60; break;
- case 0xFBFF: *subfont = mulefonts[1]; *glyph = 0x61; break;
- /* extra */
- case 0xFB8A: *subfont = mulefonts[1]; *glyph = 0x68; break;
- case 0xFB8B: *subfont = mulefonts[1]; *glyph = 0x69; break;
-
- default:
- *subfont = mulefonts[1];
- *glyph = 0x26; /* we don't have this thing -- use a dot */
- break;
- }
- }
-}
-
-
-
-