ref: cc1ce074224ee38bb75d0cedc93a87fd72c6b995
dir: /trfn_ch.h/
/* ligatures */ static char *ligs[] = { "fh", "fi", "fj", "fk", "fl", "ff", "ffi", "ffj", "ffl", "fft", "ft", "Th" }; /* AGL exceptions; expanding ligatures */ static char *agl_exceptions[][2] = { {"ff", "ff"}, {"fi", "fi"}, {"fl", "fl"}, {"ffi", "ffi"}, {"ffl", "ffl"}, {"st", "st"}, }; /* troff aliases */ static char *alts[][8] = { {"\\", "bs"}, {"`", "ga"}, {"¡", "!!"}, {"¢", "c|", "ct"}, {"£", "L-", "ps"}, {"¤", "xo", "cr"}, {"¥", "Y-", "yn"}, {"¦", "||"}, {"§", "so", "sc"}, {"¨", "\"\"", ":a"}, {"©", "co"}, {"ª", "a_"}, {"«", "<<"}, {"¬", "-,"}, {"¬", "-,"}, {"-", "hy"}, {"−", "--"}, {"®", "ro", "rg"}, {"¯", "a^", "-a"}, {"°", "0^"}, {"²", "2^"}, {"³", "3^"}, {"´", "\\'", "aa"}, {"µ", "/u"}, {"¶", "P!", "pg"}, {"·", ".^"}, {"¸", ",,", ",a"}, {"¹", "1^"}, {"º", "o_"}, {"»", ">>"}, {"¼", "14"}, {"½", "12"}, {"¾", "34"}, {"¿", "??"}, {"À", "A`"}, {"Á", "A'"}, {"Â", "A^"}, {"Ã", "A~"}, {"Ä", "A:", "A\""}, {"Å", "A*"}, {"Æ", "AE"}, {"Ç", "C,"}, {"Č", "C<"}, {"È", "E`"}, {"É", "E'"}, {"Ê", "E^"}, {"Ë", "E:", "E\""}, {"Ì", "I`"}, {"Í", "I'"}, {"Î", "I^"}, {"Ï", "I:", "I\""}, {"Ð", "D-"}, {"Ď", "D<"}, {"Ñ", "N~"}, {"Ò", "O`"}, {"Ó", "O'"}, {"Ô", "O^"}, {"Õ", "O~"}, {"Ö", "O:"}, {"Ő", "O\""}, {"×", "xx", "mu"}, {"Ø", "O/"}, {"Ř", "R<"}, {"Š", "S<"}, {"Ť", "T<"}, {"Ù", "U`"}, {"Ú", "U'"}, {"Û", "U^"}, {"Ü", "U:"}, {"Ű", "U\""}, {"Ů", "U0"}, {"Ý", "Y'"}, {"Ÿ", "Y:", "Y\""}, {"Ž", "Z<"}, {"Þ", "TH"}, {"ß", "ss"}, {"à", "a`"}, {"á", "a'"}, {"â", "a^"}, {"ã", "a~"}, {"ä", "a:", "a\""}, {"å", "a*"}, {"æ", "ae"}, {"ç", "c,"}, {"č", "c<"}, {"ď", "d<"}, {"è", "e`"}, {"é", "e'"}, {"ê", "e^"}, {"ë", "e:", "e\""}, {"ě", "e<"}, {"ì", "i`"}, {"í", "i'"}, {"î", "i^"}, {"ï", "i\""}, {"ð", "d-"}, {"ñ", "n~"}, {"ň", "n<"}, {"ò", "o`"}, {"ó", "o'"}, {"ô", "o^"}, {"õ", "o~"}, {"ö", "o:"}, {"ő", "o\""}, {"÷", "-:"}, {"ø", "o/"}, {"ř", "r<"}, {"š", "s<"}, {"ť", "t<"}, {"ù", "u`"}, {"ú", "u'"}, {"û", "u^"}, {"ü", "u:"}, {"ű", "u\""}, {"ů", "u0"}, {"ý", "y'"}, {"ž", "z<"}, {"þ", "th"}, {"ÿ", "y:", "y\""}, {"˘", "Ua"}, {"˙", ".a"}, {"˚", "oa"}, {"˝", "\"a"}, {"˛", "Ca"}, {"ˇ", "va"}, {"∀", "fa"}, {"∃", "te"}, {"∋", "st"}, {"∗", "**"}, {"+", "pl"}, {"−", "mi"}, {"/", "sl"}, {"=", "eq"}, {"≅", "cg"}, {"Α", "*A"}, {"Β", "*B"}, {"Χ", "*X"}, {"∆", "*D"}, {"Ε", "*E"}, {"Φ", "*F"}, {"Γ", "*G"}, {"Η", "*Y"}, {"Ι", "*I"}, {"Κ", "*K"}, {"Λ", "*L"}, {"Μ", "*M"}, {"Ν", "*N"}, {"Ο", "*O"}, {"Π", "*P"}, {"Θ", "*H"}, {"Ρ", "*R"}, {"Σ", "*S"}, {"Τ", "*T"}, {"Υ", "*U"}, {"ς", "ts"}, {"Ω", "*W"}, {"Ξ", "*C"}, {"Ψ", "*Q"}, {"Ζ", "*Z"}, {"∴", "tf"}, {"⊥", "pp"}, {"", "rn"}, {"α", "*a"}, {"β", "*b"}, {"χ", "*x"}, {"δ", "*d"}, {"ε", "*e"}, {"φ", "*f"}, {"γ", "*g"}, {"η", "*y"}, {"ι", "*i"}, {"κ", "*k"}, {"λ", "*l"}, {"μ", "*m"}, {"ν", "*n"}, {"ο", "*o"}, {"π", "*p"}, {"θ", "*h"}, {"ρ", "*r"}, {"σ", "*s"}, {"τ", "*t"}, {"υ", "*u"}, {"ω", "*w"}, {"ξ", "*c"}, {"ψ", "*q"}, {"ζ", "*z"}, {"|", "or"}, {"∼", "ap"}, {"′", "fm"}, {"≤", "<="}, {"⁄", "fr"}, {"∞", "if"}, {"ƒ", "fn",}, {"↔", "ab"}, {"←", "<-"}, {"↑", "ua"}, {"→", "->"}, {"↓", "da"}, {"°", "de"}, {"±", "+-"}, {"≥", ">="}, {"∝", "pt"}, {"∂", "pd"}, {"•", "bu"}, {"÷", "di"}, {"≠", "!="}, {"≡", "=="}, {"≈", "~~"}, {"…", "el"}, {"", "av"}, {"", "ah"}, {"↵", "CR"}, {"ℵ", "af"}, {"ℑ", "If"}, {"ℜ", "Rf"}, {"ℛ", "ws"}, {"⊗", "Ox"}, {"⊕", "O+"}, {"∅", "es"}, {"∩", "ca"}, {"∪", "cu"}, {"⊃", "sp"}, {"⊇", "ip"}, {"⊄", "!b"}, {"⊂", "sb"}, {"⊆", "ib"}, {"∈", "mo"}, {"∉", "!m"}, {"∠", "an"}, {"∇", "gr"}, {"", "rg"}, {"", "co"}, {"", "tm"}, {"∏", "pr"}, {"√", "sr"}, {"⋅", "c."}, {"¬", "no"}, {"∧", "l&"}, {"∨", "l|"}, {"◊", "lz"}, {"〈", "b<"}, {"", "RG"}, {"", "CO"}, {"", "TM"}, {"∑", "su"}, {"", "LT"}, {"", "br", "LX"}, {"", "LB"}, {"", "lc"}, {"", "lx"}, {"", "lf"}, {"", "lt"}, {"", "lk"}, {"", "lb"}, {"", "bv", "|",}, {"〉", "b>"}, {"∫", "is"}, {"", "RT"}, {"", "RX"}, {"", "RB"}, {"", "rc"}, {"", "rx"}, {"", "rf"}, {"", "rt"}, {"", "rk"}, {"", "rb"}, {"_", "ru", "ul"}, {"”", "''"}, {"“", "``"}, {"†", "dg"}, {"‡", "dd"}, {"–", "en", "\\-"}, {"—", "em"}, {"ff", "ff"}, {"fi", "fi"}, {"fl", "fl"}, {"ffi", "ffi"}, {"ffl", "ffl"}, {"st", "st"}, }; /* different shapes of arabic and farsi characters */ static struct achar { char *name; unsigned c; unsigned s; unsigned i; unsigned m; unsigned f; } achars[] = { {"hamza", 0x0621, 0xfe80}, {"alefwithmaddaabove", 0x0622, 0xfe81, 0, 0, 0xfe82}, {"alefwithhamzaabove", 0x0623, 0xfe83, 0, 0, 0xfe84}, {"wawwithhamzaabove", 0x0624, 0xfe85, 0, 0, 0xfe86}, {"alefwithhamzabelow", 0x0625, 0xfe87, 0, 0, 0xfe88}, {"yehwithhamzaabove", 0x0626, 0xfe89, 0xfe8b, 0xfe8c, 0xfe8a}, {"alef", 0x0627, 0xfe8d, 0, 0, 0xfe8e}, {"arabicalef", 0x0627}, {"beh", 0x0628, 0xfe8f, 0xfe91, 0xfe92, 0xfe90}, {"tehmarbuta", 0x0629, 0xfe93, 0, 0, 0xfe94}, {"teh", 0x062a, 0xfe95, 0xfe97, 0xfe98, 0xfe96}, {"theh", 0x062b, 0xfe99, 0xfe9b, 0xfe9c, 0xfe9a}, {"jeem", 0x062c, 0xfe9d, 0xfe9f, 0xfea0, 0xfe9e}, {"hah", 0x062d, 0xfea1, 0xfea3, 0xfea4, 0xfea2}, {"khah", 0x062e, 0xfea5, 0xfea7, 0xfea8, 0xfea6}, {"dal", 0x062f, 0xfea9, 0, 0, 0xfeaa}, {"thal", 0x0630, 0xfeab, 0, 0, 0xfeac}, {"reh", 0x0631, 0xfead, 0, 0, 0xfeae}, {"zain", 0x0632, 0xfeaf, 0, 0, 0xfeb0}, {"seen", 0x0633, 0xfeb1, 0xfeb3, 0xfeb4, 0xfeb2}, {"sheen", 0x0634, 0xfeb5, 0xfeb7, 0xfeb8, 0xfeb6}, {"sad", 0x0635, 0xfeb9, 0xfebb, 0xfebc, 0xfeba}, {"dad", 0x0636, 0xfebd, 0xfebf, 0xfec0, 0xfebe}, {"tah", 0x0637, 0xfec1, 0xfec3, 0xfec4, 0xfec2}, {"zah", 0x0638, 0xfec5, 0xfec7, 0xfec8, 0xfec6}, {"ain", 0x0639, 0xfec9, 0xfecb, 0xfecc, 0xfeca}, {"ghain", 0x063a, 0xfecd, 0xfecf, 0xfed0, 0xfece}, {"tatweel", 0x0640}, {"feh", 0x0641, 0xfed1, 0xfed3, 0xfed4, 0xfed2}, {"qaf", 0x0642, 0xfed5, 0xfed7, 0xfed8, 0xfed6}, {"kaf", 0x0643, 0xfed9, 0xfedb, 0xfedc, 0xfeda}, {"lam", 0x0644, 0xfedd, 0xfedf, 0xfee0, 0xfede}, {"meem", 0x0645, 0xfee1, 0xfee3, 0xfee4, 0xfee2}, {"noon", 0x0646, 0xfee5, 0xfee7, 0xfee8, 0xfee6}, {"heh", 0x0647, 0xfee9, 0xfeeb, 0xfeec, 0xfeea}, {"waw", 0x0648, 0xfeed, 0, 0, 0xfeee}, {"alefmaksura", 0x0649, 0xfeef, 0, 0, 0xfef0}, {"yeh", 0x064a, 0xfef1, 0xfef3, 0xfef4, 0xfef2}, {"fathatan", 0x064b, 0xfe70}, {"dammatan", 0x064c, 0xfe72}, {"kasratan", 0x064d, 0xfe74}, {"fatha", 0x064e, 0xfe76, 0, 0xfe77, 0}, {"damma", 0x064f, 0xfe78, 0, 0xfe79, 0}, {"kasra", 0x0650, 0xfe7a, 0, 0xfe7b, 0}, {"shadda", 0x0651, 0xfe7c, 0, 0xfe7c, 0}, {"sukun", 0x0652, 0xfe7e, 0, 0xfe7f, 0}, {"peh", 0x067e, 0xfb56, 0xfb58, 0xfb59, 0xfb57}, {"tcheh", 0x0686, 0xfb7a, 0xfb7c, 0xfb7d, 0xfb7b}, {"jeh", 0x0698, 0xfb8a, 0, 0, 0xfb8b}, {"keheh", 0x06a9, 0xfb8e, 0xfb90, 0xfb91, 0xfb8f}, {"gaf", 0x06af, 0xfb92, 0xfb94, 0xfb95, 0xfb93}, {"farsiyeh", 0x06cc, 0xfbfc, 0xfbfe, 0xfbff, 0xfbfd}, {"lamwithalef", 0xfefb, 0xfefb, 0, 0, 0xfefc}, {"arabiccomma", 0x060c}, {"arabicsemicolon", 0x061b}, {"arabicquestionmark", 0x061f}, {"arabicindicdigitzero", 0x0660}, {"arabicindicdigitone", 0x0661}, {"arabicindicdigittwo", 0x0662}, {"arabicindicdigitthree", 0x0663}, {"arabicindicdigitfour", 0x0664}, {"arabicindicdigitfive", 0x0665}, {"arabicindicdigitsix", 0x0666}, {"arabicindicdigitseven", 0x0667}, {"arabicindicdigiteight", 0x0668}, {"arabicindicdigitnine", 0x0669}, {"arabicpercentsign", 0x066a}, {"extendedarabicindicdigitzero", 0x06f0}, {"extendedarabicindicdigitone", 0x06f1}, {"extendedarabicindicdigittwo", 0x06f2}, {"extendedarabicindicdigitthree", 0x06f3}, {"extendedarabicindicdigitfour", 0x06f4}, {"extendedarabicindicdigitfive", 0x06f5}, {"extendedarabicindicdigitsix", 0x06f6}, {"extendedarabicindicdigitseven", 0x06f7}, {"extendedarabicindicdigiteight", 0x06f8}, {"extendedarabicindicdigitnine", 0x06f9}, {"zeronojoin", 0x200c}, {"zerojoin", 0x200d}, }; static struct ctype { char *ch; /* character name */ int type; /* ascender/descender type */ } ctype[] = { {"Ï", 2}, {"²", 2}, {"ì", 2}, {"u", 0}, {"Ì", 2}, {"U", 2}, {"∞", 0}, {"ú", 2}, {"∫", 3}, {"Ú", 2}, {"a", 0}, {"ι", 0}, {"û", 2}, {"A", 2}, {"Ι", 2}, {"Û", 2}, {"á", 2}, {"j", 3}, {"ü", 2}, {"Á", 2}, {"J", 3}, {"Ü", 2}, {"â", 2}, {"k", 2}, {"ù", 2}, {"Â", 2}, {"K", 2}, {"Ù", 2}, {"´", 2}, {"κ", 0}, {"ű", 2}, {"ä", 2}, {"Κ", 2}, {"Ű", 2}, {"Ä", 2}, {"l", 2}, {"_", 1}, {"æ", 0}, {"L", 2}, {"υ", 0}, {"Æ", 2}, {"λ", 2}, {"Υ", 2}, {"à", 2}, {"Λ", 2}, {"ů", 2}, {"À", 2}, {"<", 0}, {"Ů", 2}, {"α", 0}, {"≤", 2}, {"v", 0}, {"Α", 2}, {"¬", 0}, {"V", 2}, {"&", 2}, {"◊", 2}, {"w", 0}, {"≈", 0}, {"m", 0}, {"W", 2}, {"å", 2}, {"M", 2}, {"x", 0}, {"Å", 2}, {"¯", 2}, {"X", 2}, {"^", 2}, {"−", 0}, {"ξ", 3}, {"~", 0}, {"µ", 1}, {"Ξ", 2}, {"*", 2}, {"Μ", 2}, {"y", 1}, {"@", 3}, {"×", 0}, {"Y", 2}, {"ã", 2}, {"n", 0}, {"ý", 3}, {"Ã", 2}, {"N", 2}, {"Ý", 2}, {"b", 2}, {"ň", 2}, {"ÿ", 3}, {"B", 2}, {"9", 2}, {"¥", 2}, {"\\", 2}, {"≠", 0}, {"z", 0}, {"|", 3}, {"ñ", 2}, {"Z", 2}, {"β", 3}, {"Ñ", 2}, {"ž", 2}, {"Β", 2}, {"ν", 0}, {"Ž", 2}, {"{", 3}, {"Ν", 2}, {"0", 2}, {"}", 3}, {"#", 2}, {"ζ", 3}, {"[", 3}, {"o", 0}, {"Ζ", 2}, {"]", 3}, {"O", 2}, {"", 3}, {"˘", 2}, {"ó", 2}, {"", 2}, {"¦", 3}, {"Ó", 2}, {"", 3}, {"•", 0}, {"ô", 2}, {"", 2}, {"c", 0}, {"Ô", 2}, {"", 2}, {"C", 2}, {"ö", 2}, {"", 2}, {"ˇ", 2}, {"Ö", 2}, {"", 2}, {"č", 2}, {"˛", 1}, {"", 2}, {"Č", 2}, {"ò", 2}, {"", 2}, {"ç", 1}, {"Ò", 2}, {"،", 0}, {"Ç", 3}, {"ő", 2}, {"؛", 2}, {"¸", 1}, {"Ő", 2}, {"؟", 2}, {"¢", 2}, {"ω", 0}, {"٠", 0}, {"χ", 1}, {"Ω", 2}, {"١", 2}, {"Χ", 2}, {"ο", 0}, {"٢", 2}, {"ˆ", 2}, {"Ο", 2}, {"٣", 2}, {":", 0}, {"1", 2}, {"٤", 2}, {",", 1}, {"½", 2}, {"٥", 2}, {"©", 2}, {"¼", 2}, {"٦", 2}, {"¤", 2}, {"¹", 2}, {"٧", 2}, {"d", 2}, {"ª", 2}, {"٨", 2}, {"D", 2}, {"º", 2}, {"٩", 2}, {"ď", 2}, {"ø", 0}, {"۰", 0}, {"Ď", 2}, {"Ø", 2}, {"۱", 2}, {"°", 2}, {"õ", 2}, {"۲", 2}, {"δ", 2}, {"Õ", 2}, {"۳", 2}, {"∆", 2}, {"p", 1}, {"۴", 2}, {"¨", 2}, {"P", 2}, {"۵", 2}, {"÷", 0}, {"¶", 3}, {"۶", 2}, {"$", 2}, {"(", 3}, {"۷", 2}, {"˙", 2}, {")", 3}, {"۸", 2}, {"e", 0}, {"∂", 2}, {"۹", 2}, {"E", 2}, {"%", 2}, {"٪", 2}, {"é", 2}, {".", 0}, {"", 0}, {"É", 2}, {"·", 0}, {"", 0}, {"ě", 2}, {"φ", 3}, {"ê", 2}, {"Φ", 2}, {"Ê", 2}, {"π", 0}, {"ë", 2}, {"Π", 2}, {"Ë", 2}, {"+", 0}, {"è", 2}, {"±", 2}, {"È", 2}, {"∏", 2}, {"8", 2}, {"ψ", 3}, {"…", 0}, {"Ψ", 2}, {"ε", 0}, {"q", 1}, {"Ε", 2}, {"Q", 3}, {"=", 0}, {"?", 2}, {"η", 1}, {"¿", 1}, {"Η", 2}, {"\"", 2}, {"ð", 2}, {"‘", 2}, {"Ð", 2}, {"’", 2}, {"!", 2}, {"r", 0}, {"¡", 1}, {"R", 2}, {"f", 2}, {"√", 2}, {"F", 2}, {"ř", 2}, {"ff", 2}, {"Ř", 2}, {"ffi", 2}, {"®", 2}, {"ffj", 3}, {"ρ", 1}, {"ffl", 2}, {"Ρ", 2}, {"fi", 2}, {"˚", 2}, {"fi", 2}, {"s", 0}, {"5", 2}, {"S", 2}, {"fj", 3}, {"š", 2}, {"fl", 2}, {"Š", 2}, {"fl", 2}, {"§", 2}, {"ƒ", 3}, {";", 1}, {"4", 2}, {"7", 2}, {"⁄", 2}, {"σ", 0}, {"g", 1}, {"Σ", 2}, {"G", 2}, {"6", 2}, {"γ", 1}, {"/", 2}, {"Γ", 2}, {"£", 2}, {"ß", 2}, {"∑", 2}, {"`", 2}, {"t", 2}, {">", 0}, {"T", 2}, {"≥", 2}, {"τ", 0}, {"«", 0}, {"Τ", 2}, {"»", 0}, {"ť", 2}, {"h", 2}, {"Ť", 2}, {"H", 2}, {"Th", 2}, {"˝", 2}, {"θ", 2}, {"-", 0}, {"Θ", 2}, {"i", 2}, {"þ", 3}, {"I", 2}, {"Þ", 2}, {"í", 2}, {"3", 2}, {"Í", 2}, {"¾", 2}, {"î", 2}, {"³", 2}, {"Î", 2}, {"˜", 2}, {"ï", 2}, {"2", 2}, };