summaryrefslogtreecommitdiff
path: root/modules/arabic/naqshfont.c
diff options
context:
space:
mode:
Diffstat (limited to 'modules/arabic/naqshfont.c')
-rw-r--r--modules/arabic/naqshfont.c374
1 files changed, 0 insertions, 374 deletions
diff --git a/modules/arabic/naqshfont.c b/modules/arabic/naqshfont.c
deleted file mode 100644
index a7462637..00000000
--- a/modules/arabic/naqshfont.c
+++ /dev/null
@@ -1,374 +0,0 @@
-/* pango-arabic module
- *
- * (C) 2000 K. Koehler <koehler@or.uni-bonn.de>
- * (c) 2000 Pablo Saratxaga <pablo@mandrakesoft.com>
- *
- * This file provides a mapping unicode <- naqshfont
- */
-
-
-#include <stdio.h>
-#include <glib.h>
-#include "pangox.h"
-
-/* #define DEBUG */
-#ifdef DEBUG
-#include <stdio.h>
-#endif
-#include "naqshfont.h"
-
-
-ArabicFontInfo*
-urdu_naqshinit(PangoFont *font)
-{
- static char *nq_charsets0[] = {
- "symbol-0",
-/* "urdunaqsh-0" */
- };
-
- ArabicFontInfo *fs = NULL;
- PangoXSubfont *subfonts;
- int *subfont_charsets;
- int n_subfonts;
-
- n_subfonts = pango_x_list_subfonts (font,nq_charsets0,
- 1, &subfonts, &subfont_charsets);
- if (n_subfonts > 0)
- {
- fs = g_new (ArabicFontInfo,1);
- fs->level = ar_standard | ar_naqshfont;
- fs->subfonts[0] = subfonts[0];
- }
- g_free (subfonts);
- g_free (subfont_charsets);
- return fs;
-}
-
-
-
-
-typedef struct {
- gunichar unicodechar;
- int charindex;
-} fontentry;
-
-
-static fontentry charmap [] =
-{ /* the basic arabic block comes first ... */
- { 0xFE8B,0x6C }, /* HMAZA-'pod' */
- { 0xFE8C,0xAB },
- { 0xFE8D,0x22 }, /* ALEF */
- { 0xFE8E,0xAD },
- { 0xFE8F,0x23 }, /* BEH */
- { 0xFE90,0xAE },
- { 0xFE91,0x4E },
- { 0xFE92,0x6E },
- { 0xFE93,0x48 }, /* TEH MARBUTA */
- { 0xFE94,0xD5 },
- { 0xFE95,0x25 }, /* TEH */
- { 0xFE96,0xB0 },
- { 0xFE97,0x50 },
- { 0xFE98,0x70 },
- { 0xFE99,0x27 }, /* THEH */
- { 0xFE9A,0xB2 },
- { 0xFE9B,0x52 },
- { 0xFE9C,0x72 },
- { 0xFE9D,0x28 }, /* JEEM */
- { 0xFE9E,0xB3 },
- { 0xFE9F,0x53 },
- { 0xFEA0,0x73 },
- { 0xFEA1,0x2A }, /* HAH . */
- { 0xFEA2,0xB5 },
- { 0xFEA3,0x55 },
- { 0xFEA4,0x75 },
- { 0xFEA5,0x2B }, /* KHAH */
- { 0xFEA6,0xB6 },
- { 0xFEA7,0x56 },
- { 0xFEA8,0x76 },
- { 0xFEA9,0x2C }, /* DAL */
- { 0xFEAA,0xB8 },
- { 0xFEAB,0x2E }, /* THAL */
- { 0xFEAC,0xBA },
- { 0xFEAD,0x2F }, /* REH */
- { 0xFEAE,0xBB },
- { 0xFEAF,0x31 }, /* ZAIN (ZAY) */
- { 0xFEB0,0xBD },
- { 0xFEB1,0x33 }, /* SEEN */
- { 0xFEB2,0xBF },
- { 0xFEB3,0x57 },
- { 0xFEB4,0x77 },
- { 0xFEB5,0x34 }, /* SHEEN */
- { 0xFEB2,0xC0 },
- { 0xFEB3,0x58 },
- { 0xFEB4,0x78 },
- { 0xFEB9,0x35 }, /* SAD */
- { 0xFEBA,0xC1 },
- { 0xFEBB,0x59 },
- { 0xFEBC,0x79 },
- { 0xFEBD,0x36 }, /* DAD */
- { 0xFEBE,0xC2 },
- { 0xFEBF,0x5A },
- { 0xFEC0,0x7A },
- { 0xFEC1,0x37 }, /* TAH . */
- { 0xFEC2,0xC3 },
- { 0xFEC3,0x5B },
- { 0xFEC4,0x7B },
- { 0xFEC5,0x38 }, /* ZAH . */
- { 0xFEC6,0xC4 },
- { 0xFEC7,0x5C },
- { 0xFEC8,0x7C },
- { 0xFEC9,0x39 }, /* AIN */
- { 0xFECA,0xC5 },
- { 0xFECB,0x5D },
- { 0xFECC,0x7D },
- { 0xFECD,0x3A }, /* GHAIN */
- { 0xFECE,0xC6 },
- { 0xFECF,0x5E },
- { 0xFED0,0x7E },
- { 0xFED1,0x3B }, /* FEH */
- { 0xFED2,0xC7 },
- { 0xFED3,0x5F },
- { 0xFED4,0xA1 },
- { 0xFED5,0x3D }, /* QAF */
- { 0xFED6,0xC9 },
- { 0xFED7,0x61 },
- { 0xFEB8,0xA3 },
- { 0xFED9,0x3E }, /* KAF */
- { 0xFEDA,0xCA },
- { 0xFEDB,0x62 },
- { 0xFEDC,0xA4 },
- { 0xFEDD,0x41 }, /* LAM */
- { 0xFEDE,0xCD },
- { 0xFEDF,0x66 },
- { 0xFEE0,0xA6 },
- { 0xFEE1,0x43 }, /* MEEM */
- { 0xFEE2,0xCF },
- { 0xFEE3,0x67 },
- { 0xFEE4,0xA7 },
- { 0xFEE5,0x44 }, /* NOON */
- { 0xFEE6,0xD0 },
- { 0xFEE7,0x68 },
- { 0xFEE8,0xA8 },
- { 0xFEE9,0x47 }, /* HEH (HA) */
- { 0xFEEA,0xD4 },
- { 0xFEEB,0x6B },
- { 0xFEEC,0xAA },
- { 0xFEED,0x46 }, /* WAW */
- { 0xFEEE,0xD2 },
- { 0xFEEF,0x4B }, /* ALEF MAKSURA */
- { 0xFEF0,0xD6 },
- { 0xFEF1,0x4C }, /* YEH (YA) */
- { 0xFEF2,0xD7 },
- { 0xFEF3,0x6D },
- { 0xFEF4,0xAC },
-
-
- { 0x0020,0x20 }, /* space */ /* We ought to NOT get these ! */
- { 0x0021,0xEA }, /* ! */
- { 0x0027,0xEC }, /* ' */
- { 0x0028,0xED }, /* ( */
- { 0x0029,0xEE }, /* ) */
- { 0x002E,0xE7 }, /* . */
- { 0x003A,0xEB }, /* : */
- { 0x00A0,0xA0 }, /* non breaking space */
-
-
-
- { 0x060C,0xE8 }, /* arabic comma */
- { 0x061F,0xE9 }, /* arabic question mark */
- { 0x0621,0x4A }, /* hamza */
- { 0x0640,0xE6 }, /* arabic tatweel */
- { 0x064B,0xF8 }, /* arabic fathatan, unshaped */
- { 0x064C,0xF7 }, /* arabic dammatan, unshaped */
- { 0x064D,0xF9 }, /* arabic kasratan, unshaped */
- { 0x064E,0xFE }, /* arabic fatha, unshaped */
- { 0x064F,0xFD }, /* araibc damma, unshaped */
- { 0x0650,0xFF }, /* arabic kasra, unshaped */
- { 0x0651,0xFC }, /* arabic shadda, unshaped */
- { 0x0652,0xA0 }, /* sukun -- non-existant in the font */
- { 0x0653,0xF3 }, /* arabic madda above, should occur in only one case: upon left-joined Alif */
- { 0x0654,0xF6 }, /* arabic hamza above, unshaped */
- { 0x0655,0xF5 }, /* arabic hamza below, unshaped */
-
- /* arabic digits */
- { 0x0660,0xE5 }, /* arabic digit 0 */
- { 0x0661,0xD9 }, /* arabic digit 1 */
- { 0x0662,0xDA }, /* arabic digit 2 */
- { 0x0663,0xDB }, /* arabic digit 3 */
- { 0x0664,0xDC }, /* arabic digit 4 */
- { 0x0665,0xDE }, /* arabic digit 5 */
- { 0x0666,0xE0 }, /* arabic digit 6 */
- { 0x0667,0xE1 }, /* arabic digit 7 */
- { 0x0668,0xE3 }, /* arabic digit 8 */
- { 0x0669,0xE4 }, /* arabic digit 9 */
- { 0x0670,0xF4 }, /* arabic percent sign */
- { 0x0679,0x26 }, /* some arabic letters, unshaped */
- { 0x067E,0x24 },
- { 0x0686,0x29 },
- { 0x0688,0x2D },
- { 0x0691,0x30 },
- { 0x0698,0x32 },
- { 0x06A4,0x3C },
- { 0x06A9,0x3F },
- { 0x06AF,0x40 },
- { 0x06BA,0x45 },
- { 0x06BE,0x49 },
- { 0x06C1,0x47 },
- { 0x06CC,0x4B },
- { 0x06D2,0x4D },
- { 0x06D4,0xE7 },
- /* persian digits */
- { 0x06F0,0xE5 }, /* persian digit 0 */
- { 0x06F1,0xD9 }, /* persian digit 1 */
- { 0x06F2,0xDA }, /* persian digit 2 */
- { 0x06F3,0xDB }, /* persian digit 3 */
- { 0x06F4,0xDD }, /* persian digit 4 */
- { 0x06F5,0xDF }, /* persian digit 5 */
- { 0x06F6,0xE0 }, /* persian digit 6 */
- { 0x06F7,0xE2 }, /* persian digit 7 */
- { 0x06F8,0xE3 }, /* persian digit 8 */
- { 0x06F9,0xE4 }, /* persian digit 9 */
-
- /* shaped letters & ligatures */
- { 0xFB56,0x24 }, /* PEH */
- { 0xFB57,0xAF },
- { 0xFB58,0x4F },
- { 0xFB59,0x6F },
- { 0xFB66,0x26 }, /* TTEH */
- { 0xFB67,0xB1 },
- { 0xFB68,0x51 },
- { 0xFB69,0x71 },
- { 0xFB6A,0x3C }, /* VEH */
- { 0xFB6B,0xC8 },
- { 0xFB6C,0x60 },
- { 0xFB6D,0xA2 },
- { 0xFB7A,0x29 }, /* TCHEH */
- { 0xFB7B,0xB4 },
- { 0xFB7C,0x54 },
- { 0xFB7D,0x74 },
- { 0xFB88,0x2D }, /* DDAL */
- { 0xFB89,0xB9 },
- { 0xFB8A,0x32 }, /* JEH */
- { 0xFB8B,0xBE },
- { 0xFB8C,0x30 }, /* RREH */
- { 0xFB8D,0xBC },
- { 0xFB8E,0x3F }, /* KEHEH */
- { 0xFB8F,0xCB },
- { 0xFB90,0x62 },
- { 0xFB90,0x64 },
- { 0xFB91,0xA4 },
- { 0xFB92,0x40 }, /* GAF */
- { 0xFB93,0xCC },
- { 0xFB94,0x63 },
- { 0xFB94,0x65 },
- { 0xFB95,0xA5 },
- { 0xFB9E,0x45 }, /* NOON GHUNNA */
- { 0xFB9F,0xD1 },
- { 0xFBA6,0x47 }, /* HEH GOAL */
- { 0xFBA7,0xD3 },
- { 0xFBA8,0x69 },
- { 0xFBA8,0x6A },
- { 0xFBA9,0xA9 },
- { 0xFBAA,0x49 }, /* HEH DOACHASMEE */
- { 0xFBAB,0xAA },
- { 0xFBAC,0x6B },
- { 0xFBAD,0xAA },
- { 0xFBAE,0x4D }, /* YEH BAREE */
- { 0xFBAF,0xD8 },
- { 0xFBFC,0x4B }, /* FARSI YEH */
- { 0xFBFD,0xD6 },
- { 0xFBFE,0x6D },
- { 0xFBFF,0xAC },
- { 0xFE80,0x4A }, /* HAMZA */
- { 0xFE81,0x21 }, /* ALEF WITH MADDA ABOVE */
- { 0xFE82,0xAD },
-
- /* fake entries (the font doesn't provide glyphs with the hamza
- * above; so the ones without hamza are used, as a best approach) */
- /* these *should never occur* */
- { 0xFE83,0x22 }, /* ALIF HAMZA */
- { 0xFE84,0xAD },
- { 0xFE85,0x46 }, /* WAW HAMZA */
- { 0xFE86,0xD2 },
- { 0xFE87,0x22 }, /* ALIF IHAMZA */
- { 0xFE88,0xAD },
- { 0xFE89,0x4C }, /* YA HAMZA */
- { 0xFE8A,0xD7 },
-
- { 0xFEFB,0x42 }, /* ligature LAM+ALEF ISOLATED */
- { 0xFEFC,0xCE }, /* ligature LAM+ALEF FINAL */
-
- /* I've been unable to map those font glyphs to an unicode value;
- * if you can, please tell me -- Pablo Saratxaga <pablo@mandrakesoft.com>
- { 0x????,0xB7 },
- { 0x????,0xEF },
- { 0x????,0xF0 },
- { 0x????,0xF1 },
- { 0x????,0xF2 },
- { 0x????,0xFA },
- { 0x????,0xFB },
- */
-
- { 0x0000,0x00 }
-};
-
-
-void
-urdu_naqsh_recode(PangoXSubfont* subfont,gunichar* glyph,gunichar* glyph2,
- PangoXSubfont* nqfont)
-{
- int letter=*glyph;
- int i;
-
-
- *subfont = nqfont[0];
-
- if ((letter >= 0xFE8B)&&(letter <= 0xFEF4))
- {
- *glyph = charmap[letter-0xFE8B].charindex;
- }
- else if (letter < 0xFF )
- { /* recoded in previous run */
- *glyph = letter;
- }
- else if ((letter >= 0xFEF5)&&(letter <= 0xFEFC))
- { /* Lam-Alif. Also solved interestingly ...
- * At least, the Lam-Alif itself is not split ...
- */
- if (!(letter % 2))
- {
- *glyph = 0xCE;
- }
- else
- {
- *glyph = 0x42;
- }
- switch (letter)
- {
- case 0xFEF5 :
- case 0xFEF6 : *glyph2 = 0xF3; break; /* Lam-Alif Madda */
- case 0xFEF7 :
- case 0xFEF8 : *glyph2 = 0xF6; break; /* Lam-Alif Hamza */
- case 0xFEF9 :
- case 0xFEFA : *glyph2 = 0xF5; break; /* Lam-Alif iHamza */
- }
- }
- else
- {
- for (i=0 ; charmap[i].unicodechar!=0x0000 ; i++) {
- if (charmap[i].unicodechar == letter) {
- *glyph = charmap[i].charindex;
- break;
- }
- }
- if (charmap[i].unicodechar == 0x0000) {
- /* if the glyph wasn't on the table */
- *glyph = 0xE5; /* don't know what to do */
- }
- }
-}
-
-
-
-
-