1 /* ligatures with unicode aliases */
2 static char *ligs_utf8
[][2] = {
12 static char *agl_exceptions
[][2] = {
13 {"`", "ga"}, /* grave; using quoteleft for ` */
14 {"'", "aq"}, /* quotesingle; using quoteright for ' */
15 {"~", "ti"}, /* asciitilde; using tilde for ~ */
16 {"^", "ha"}, /* asciicircum; using circumflex for ^ */
20 static char *alts
[][8] = {
177 {"Ω", "*W", "Ω"}, {"Ω", "Ω", "*W"},
189 {"μ", "*m", "µ", "/u"}, {"µ", "/u", "*m", "μ"},
231 {"∆", "*D", "Δ"}, {"Δ", "∆", "*D"},
328 /* different shapes of arabic and farsi characters */
329 static struct achar
{
337 {"hamza", 0x0621, 0xfe80},
338 {"alefwithmaddaabove", 0x0622, 0xfe81, 0, 0, 0xfe82},
339 {"alefwithhamzaabove", 0x0623, 0xfe83, 0, 0, 0xfe84},
340 {"wawwithhamzaabove", 0x0624, 0xfe85, 0, 0, 0xfe86},
341 {"alefwithhamzabelow", 0x0625, 0xfe87, 0, 0, 0xfe88},
342 {"yehwithhamzaabove", 0x0626, 0xfe89, 0xfe8b, 0xfe8c, 0xfe8a},
343 {"alef", 0x0627, 0xfe8d, 0, 0, 0xfe8e},
344 {"arabicalef", 0x0627},
345 {"beh", 0x0628, 0xfe8f, 0xfe91, 0xfe92, 0xfe90},
346 {"tehmarbuta", 0x0629, 0xfe93, 0, 0, 0xfe94},
347 {"teh", 0x062a, 0xfe95, 0xfe97, 0xfe98, 0xfe96},
348 {"theh", 0x062b, 0xfe99, 0xfe9b, 0xfe9c, 0xfe9a},
349 {"jeem", 0x062c, 0xfe9d, 0xfe9f, 0xfea0, 0xfe9e},
350 {"hah", 0x062d, 0xfea1, 0xfea3, 0xfea4, 0xfea2},
351 {"khah", 0x062e, 0xfea5, 0xfea7, 0xfea8, 0xfea6},
352 {"dal", 0x062f, 0xfea9, 0, 0, 0xfeaa},
353 {"thal", 0x0630, 0xfeab, 0, 0, 0xfeac},
354 {"reh", 0x0631, 0xfead, 0, 0, 0xfeae},
355 {"zain", 0x0632, 0xfeaf, 0, 0, 0xfeb0},
356 {"seen", 0x0633, 0xfeb1, 0xfeb3, 0xfeb4, 0xfeb2},
357 {"sheen", 0x0634, 0xfeb5, 0xfeb7, 0xfeb8, 0xfeb6},
358 {"sad", 0x0635, 0xfeb9, 0xfebb, 0xfebc, 0xfeba},
359 {"dad", 0x0636, 0xfebd, 0xfebf, 0xfec0, 0xfebe},
360 {"tah", 0x0637, 0xfec1, 0xfec3, 0xfec4, 0xfec2},
361 {"zah", 0x0638, 0xfec5, 0xfec7, 0xfec8, 0xfec6},
362 {"ain", 0x0639, 0xfec9, 0xfecb, 0xfecc, 0xfeca},
363 {"ghain", 0x063a, 0xfecd, 0xfecf, 0xfed0, 0xfece},
365 {"feh", 0x0641, 0xfed1, 0xfed3, 0xfed4, 0xfed2},
366 {"qaf", 0x0642, 0xfed5, 0xfed7, 0xfed8, 0xfed6},
367 {"kaf", 0x0643, 0xfed9, 0xfedb, 0xfedc, 0xfeda},
368 {"lam", 0x0644, 0xfedd, 0xfedf, 0xfee0, 0xfede},
369 {"meem", 0x0645, 0xfee1, 0xfee3, 0xfee4, 0xfee2},
370 {"noon", 0x0646, 0xfee5, 0xfee7, 0xfee8, 0xfee6},
371 {"heh", 0x0647, 0xfee9, 0xfeeb, 0xfeec, 0xfeea},
372 {"waw", 0x0648, 0xfeed, 0, 0, 0xfeee},
373 {"alefmaksura", 0x0649, 0xfeef, 0, 0, 0xfef0},
374 {"yeh", 0x064a, 0xfef1, 0xfef3, 0xfef4, 0xfef2},
375 {"fathatan", 0x064b, 0xfe70},
376 {"dammatan", 0x064c, 0xfe72},
377 {"kasratan", 0x064d, 0xfe74},
378 {"fatha", 0x064e, 0xfe76, 0, 0xfe77, 0},
379 {"damma", 0x064f, 0xfe78, 0, 0xfe79, 0},
380 {"kasra", 0x0650, 0xfe7a, 0, 0xfe7b, 0},
381 {"shadda", 0x0651, 0xfe7c, 0, 0xfe7c, 0},
382 {"sukun", 0x0652, 0xfe7e, 0, 0xfe7f, 0},
383 {"peh", 0x067e, 0xfb56, 0xfb58, 0xfb59, 0xfb57},
384 {"tcheh", 0x0686, 0xfb7a, 0xfb7c, 0xfb7d, 0xfb7b},
385 {"jeh", 0x0698, 0xfb8a, 0, 0, 0xfb8b},
386 {"keheh", 0x06a9, 0xfb8e, 0xfb90, 0xfb91, 0xfb8f},
387 {"gaf", 0x06af, 0xfb92, 0xfb94, 0xfb95, 0xfb93},
388 {"farsiyeh", 0x06cc, 0xfbfc, 0xfbfe, 0xfbff, 0xfbfd},
389 {"lamwithalef", 0xfefb, 0xfefb, 0, 0, 0xfefc},
390 {"arabiccomma", 0x060c},
391 {"arabicsemicolon", 0x061b},
392 {"arabicquestionmark", 0x061f},
393 {"arabicindicdigitzero", 0x0660},
394 {"arabicindicdigitone", 0x0661},
395 {"arabicindicdigittwo", 0x0662},
396 {"arabicindicdigitthree", 0x0663},
397 {"arabicindicdigitfour", 0x0664},
398 {"arabicindicdigitfive", 0x0665},
399 {"arabicindicdigitsix", 0x0666},
400 {"arabicindicdigitseven", 0x0667},
401 {"arabicindicdigiteight", 0x0668},
402 {"arabicindicdigitnine", 0x0669},
403 {"arabicpercentsign", 0x066a},
404 {"extendedarabicindicdigitzero", 0x06f0},
405 {"extendedarabicindicdigitone", 0x06f1},
406 {"extendedarabicindicdigittwo", 0x06f2},
407 {"extendedarabicindicdigitthree", 0x06f3},
408 {"extendedarabicindicdigitfour", 0x06f4},
409 {"extendedarabicindicdigitfive", 0x06f5},
410 {"extendedarabicindicdigitsix", 0x06f6},
411 {"extendedarabicindicdigitseven", 0x06f7},
412 {"extendedarabicindicdigiteight", 0x06f8},
413 {"extendedarabicindicdigitnine", 0x06f9},
414 {"zeronojoin", 0x200c},
415 {"zerojoin", 0x200d},
418 static int ctype_ascii
[128] = {
419 ['!'] = 2, ['"'] = 2, ['#'] = 2, ['$'] = 2, ['%'] = 2,
420 ['&'] = 2, ['\''] = 2, ['('] = 3, [')'] = 3, ['*'] = 2,
421 ['+'] = 0, [','] = 1, ['-'] = 0, ['.'] = 0, ['/'] = 2,
422 ['0'] = 2, ['1'] = 2, ['2'] = 2, ['3'] = 2, ['4'] = 2,
423 ['5'] = 2, ['6'] = 2, ['7'] = 2, ['8'] = 2, ['9'] = 2,
424 [':'] = 0, [';'] = 1, ['<'] = 0, ['='] = 0, ['>'] = 0,
425 ['?'] = 2, ['@'] = 3, ['A'] = 2, ['B'] = 2, ['C'] = 2,
426 ['D'] = 2, ['E'] = 2, ['F'] = 2, ['G'] = 2, ['H'] = 2,
427 ['I'] = 2, ['J'] = 3, ['K'] = 2, ['L'] = 2, ['M'] = 2,
428 ['N'] = 2, ['O'] = 2, ['P'] = 2, ['Q'] = 3, ['R'] = 2,
429 ['S'] = 2, ['T'] = 2, ['U'] = 2, ['V'] = 2, ['W'] = 2,
430 ['X'] = 2, ['Y'] = 2, ['Z'] = 2, ['['] = 3, ['\\'] = 2,
431 [']'] = 3, ['^'] = 2, ['_'] = 1, ['a'] = 0, ['b'] = 2,
432 ['c'] = 0, ['d'] = 2, ['e'] = 0, ['f'] = 2, ['g'] = 1,
433 ['h'] = 2, ['i'] = 2, ['j'] = 3, ['k'] = 2, ['l'] = 2,
434 ['m'] = 0, ['n'] = 0, ['o'] = 0, ['p'] = 1, ['q'] = 1,
435 ['r'] = 0, ['s'] = 0, ['t'] = 2, ['u'] = 0, ['v'] = 0,
436 ['w'] = 0, ['x'] = 0, ['y'] = 1, ['z'] = 0, ['{'] = 3,
437 ['|'] = 3, ['}'] = 3, ['~'] = 0,