use warnings; use strict; use utf8; use feature 'unicode_strings'; =head1 NAME BarnOwl::Module::Digraphs =head1 DESCRIPTION Hacky digraphs =cut package BarnOwl::Module::Digraphs; use POSIX; use BarnOwl::Editwin qw(text_before_point save_excursion replace_region set_mark point_move get_region); our $VERSION = 0.1; my %digraphs = ( 'NU'=>"\N{U+0000}", 'SH'=>"\N{U+0001}", 'SX'=>"\N{U+0002}", 'EX'=>"\N{U+0003}", 'ET'=>"\N{U+0004}", 'EQ'=>"\N{U+0005}", 'AK'=>"\N{U+0006}", 'BL'=>"\N{U+0007}", 'BS'=>"\N{U+0008}", 'HT'=>"\N{U+0009}", 'LF'=>"\N{U+000a}", 'VT'=>"\N{U+000b}", 'FF'=>"\N{U+000c}", 'CR'=>"\N{U+000d}", 'SO'=>"\N{U+000e}", 'SI'=>"\N{U+000f}", 'DL'=>"\N{U+0010}", 'D1'=>"\N{U+0011}", 'D2'=>"\N{U+0012}", 'D3'=>"\N{U+0013}", 'D4'=>"\N{U+0014}", 'NK'=>"\N{U+0015}", 'SY'=>"\N{U+0016}", 'EB'=>"\N{U+0017}", 'CN'=>"\N{U+0018}", 'EM'=>"\N{U+0019}", 'SB'=>"\N{U+001a}", 'EC'=>"\N{U+001b}", 'FS'=>"\N{U+001c}", 'GS'=>"\N{U+001d}", 'RS'=>"\N{U+001e}", 'US'=>"\N{U+001f}", 'SP'=>"\N{U+0020}", 'Nb'=>"\N{U+0023}", 'DO'=>"\N{U+0024}", 'At'=>"\N{U+0040}", '<('=>"\N{U+005b}", '//'=>"\N{U+005c}", ')>'=>"\N{U+005d}", '\'>'=>"\N{U+005e}", '\'!'=>"\N{U+0060}", '(!'=>"\N{U+007b}", '!!'=>"\N{U+007c}", '!)'=>"\N{U+007d}", '\'?'=>"\N{U+007e}", 'DT'=>"\N{U+007f}", 'PA'=>"\N{U+0080}", 'HO'=>"\N{U+0081}", 'BH'=>"\N{U+0082}", 'NH'=>"\N{U+0083}", 'IN'=>"\N{U+0084}", 'NL'=>"\N{U+0085}", 'SA'=>"\N{U+0086}", 'ES'=>"\N{U+0087}", 'HS'=>"\N{U+0088}", 'HJ'=>"\N{U+0089}", 'VS'=>"\N{U+008a}", 'PD'=>"\N{U+008b}", 'PU'=>"\N{U+008c}", 'RI'=>"\N{U+008d}", 'S2'=>"\N{U+008e}", 'S3'=>"\N{U+008f}", 'DC'=>"\N{U+0090}", 'P1'=>"\N{U+0091}", 'P2'=>"\N{U+0092}", 'TS'=>"\N{U+0093}", 'CC'=>"\N{U+0094}", 'MW'=>"\N{U+0095}", 'SG'=>"\N{U+0096}", 'EG'=>"\N{U+0097}", 'SS'=>"\N{U+0098}", 'GC'=>"\N{U+0099}", 'SC'=>"\N{U+009a}", 'CI'=>"\N{U+009b}", 'ST'=>"\N{U+009c}", 'OC'=>"\N{U+009d}", 'PM'=>"\N{U+009e}", 'AC'=>"\N{U+009f}", 'NS'=>"\N{U+00a0}", '!I'=>"\N{U+00a1}", 'Ct'=>"\N{U+00a2}", 'Pd'=>"\N{U+00a3}", 'Cu'=>"\N{U+00a4}", 'Ye'=>"\N{U+00a5}", 'BB'=>"\N{U+00a6}", 'SE'=>"\N{U+00a7}", '\':'=>"\N{U+00a8}", 'Co'=>"\N{U+00a9}", '-a'=>"\N{U+00aa}", '<<'=>"\N{U+00ab}", 'NO'=>"\N{U+00ac}", '--'=>"\N{U+00ad}", 'Rg'=>"\N{U+00ae}", '\'m'=>"\N{U+00af}", 'DG'=>"\N{U+00b0}", '+-'=>"\N{U+00b1}", '2S'=>"\N{U+00b2}", '3S'=>"\N{U+00b3}", '\'\''=>"\N{U+00b4}", 'My'=>"\N{U+00b5}", 'PI'=>"\N{U+00b6}", '.M'=>"\N{U+00b7}", '\','=>"\N{U+00b8}", '1S'=>"\N{U+00b9}", '-o'=>"\N{U+00ba}", '>>'=>"\N{U+00bb}", '14'=>"\N{U+00bc}", '12'=>"\N{U+00bd}", '34'=>"\N{U+00be}", '?I'=>"\N{U+00bf}", 'A!'=>"\N{U+00c0}", 'A\''=>"\N{U+00c1}", 'A>'=>"\N{U+00c2}", 'A?'=>"\N{U+00c3}", 'A:'=>"\N{U+00c4}", 'AA'=>"\N{U+00c5}", 'AE'=>"\N{U+00c6}", 'C,'=>"\N{U+00c7}", 'E!'=>"\N{U+00c8}", 'E\''=>"\N{U+00c9}", 'E>'=>"\N{U+00ca}", 'E:'=>"\N{U+00cb}", 'I!'=>"\N{U+00cc}", 'I\''=>"\N{U+00cd}", 'I>'=>"\N{U+00ce}", 'I:'=>"\N{U+00cf}", 'D-'=>"\N{U+00d0}", 'N?'=>"\N{U+00d1}", 'O!'=>"\N{U+00d2}", 'O\''=>"\N{U+00d3}", 'O>'=>"\N{U+00d4}", 'O?'=>"\N{U+00d5}", 'O:'=>"\N{U+00d6}", '*X'=>"\N{U+00d7}", 'O/'=>"\N{U+00d8}", 'U!'=>"\N{U+00d9}", 'U\''=>"\N{U+00da}", 'U>'=>"\N{U+00db}", 'U:'=>"\N{U+00dc}", 'Y\''=>"\N{U+00dd}", 'TH'=>"\N{U+00de}", 'ss'=>"\N{U+00df}", 'a!'=>"\N{U+00e0}", 'a\''=>"\N{U+00e1}", 'a>'=>"\N{U+00e2}", 'a?'=>"\N{U+00e3}", 'a:'=>"\N{U+00e4}", 'aa'=>"\N{U+00e5}", 'ae'=>"\N{U+00e6}", 'c,'=>"\N{U+00e7}", 'e!'=>"\N{U+00e8}", 'e\''=>"\N{U+00e9}", 'e>'=>"\N{U+00ea}", 'e:'=>"\N{U+00eb}", 'i!'=>"\N{U+00ec}", 'i\''=>"\N{U+00ed}", 'i>'=>"\N{U+00ee}", 'i:'=>"\N{U+00ef}", 'd-'=>"\N{U+00f0}", 'n?'=>"\N{U+00f1}", 'o!'=>"\N{U+00f2}", 'o\''=>"\N{U+00f3}", 'o>'=>"\N{U+00f4}", 'o?'=>"\N{U+00f5}", 'o:'=>"\N{U+00f6}", '-:'=>"\N{U+00f7}", 'o/'=>"\N{U+00f8}", 'u!'=>"\N{U+00f9}", 'u\''=>"\N{U+00fa}", 'u>'=>"\N{U+00fb}", 'u:'=>"\N{U+00fc}", 'y\''=>"\N{U+00fd}", 'th'=>"\N{U+00fe}", 'y:'=>"\N{U+00ff}", 'A-'=>"\N{U+0100}", 'a-'=>"\N{U+0101}", 'A('=>"\N{U+0102}", 'a('=>"\N{U+0103}", 'A;'=>"\N{U+0104}", 'a;'=>"\N{U+0105}", 'C\''=>"\N{U+0106}", 'c\''=>"\N{U+0107}", 'C>'=>"\N{U+0108}", 'c>'=>"\N{U+0109}", 'C.'=>"\N{U+010A}", 'c.'=>"\N{U+010B}", 'C<'=>"\N{U+010C}", 'c<'=>"\N{U+010D}", 'D<'=>"\N{U+010E}", 'd<'=>"\N{U+010F}", 'D/'=>"\N{U+0110}", 'd/'=>"\N{U+0111}", 'E-'=>"\N{U+0112}", 'e-'=>"\N{U+0113}", 'E('=>"\N{U+0114}", 'e('=>"\N{U+0115}", 'E.'=>"\N{U+0116}", 'e.'=>"\N{U+0117}", 'E;'=>"\N{U+0118}", 'e;'=>"\N{U+0119}", 'E<'=>"\N{U+011A}", 'e<'=>"\N{U+011B}", 'G>'=>"\N{U+011C}", 'g>'=>"\N{U+011D}", 'G('=>"\N{U+011E}", 'g('=>"\N{U+011F}", 'G.'=>"\N{U+0120}", 'g.'=>"\N{U+0121}", 'G,'=>"\N{U+0122}", 'g,'=>"\N{U+0123}", 'H>'=>"\N{U+0124}", 'h>'=>"\N{U+0125}", 'H/'=>"\N{U+0126}", 'h/'=>"\N{U+0127}", 'I?'=>"\N{U+0128}", 'i?'=>"\N{U+0129}", 'I-'=>"\N{U+012A}", 'i-'=>"\N{U+012B}", 'I('=>"\N{U+012C}", 'i('=>"\N{U+012D}", 'I;'=>"\N{U+012E}", 'i;'=>"\N{U+012F}", 'I.'=>"\N{U+0130}", 'i.'=>"\N{U+0131}", 'IJ'=>"\N{U+0132}", 'ij'=>"\N{U+0133}", 'J>'=>"\N{U+0134}", 'j>'=>"\N{U+0135}", 'K,'=>"\N{U+0136}", 'k,'=>"\N{U+0137}", 'kk'=>"\N{U+0138}", 'L\''=>"\N{U+0139}", 'l\''=>"\N{U+013A}", 'L,'=>"\N{U+013B}", 'l,'=>"\N{U+013C}", 'L<'=>"\N{U+013D}", 'l<'=>"\N{U+013E}", 'L.'=>"\N{U+013F}", 'l.'=>"\N{U+0140}", 'L/'=>"\N{U+0141}", 'l/'=>"\N{U+0142}", 'N\''=>"\N{U+0143}", 'n\''=>"\N{U+0144}", 'N,'=>"\N{U+0145}", 'n,'=>"\N{U+0146}", 'N<'=>"\N{U+0147}", 'n<'=>"\N{U+0148}", '\'n'=>"\N{U+0149}", 'NG'=>"\N{U+014A}", 'ng'=>"\N{U+014B}", 'O-'=>"\N{U+014C}", 'o-'=>"\N{U+014D}", 'O('=>"\N{U+014E}", 'o('=>"\N{U+014F}", 'O"'=>"\N{U+0150}", 'o"'=>"\N{U+0151}", 'OE'=>"\N{U+0152}", 'oe'=>"\N{U+0153}", 'R\''=>"\N{U+0154}", 'r\''=>"\N{U+0155}", 'R,'=>"\N{U+0156}", 'r,'=>"\N{U+0157}", 'R<'=>"\N{U+0158}", 'r<'=>"\N{U+0159}", 'S\''=>"\N{U+015A}", 's\''=>"\N{U+015B}", 'S>'=>"\N{U+015C}", 's>'=>"\N{U+015D}", 'S,'=>"\N{U+015E}", 's,'=>"\N{U+015F}", 'S<'=>"\N{U+0160}", 's<'=>"\N{U+0161}", 'T,'=>"\N{U+0162}", 't,'=>"\N{U+0163}", 'T<'=>"\N{U+0164}", 't<'=>"\N{U+0165}", 'T/'=>"\N{U+0166}", 't/'=>"\N{U+0167}", 'U?'=>"\N{U+0168}", 'u?'=>"\N{U+0169}", 'U-'=>"\N{U+016A}", 'u-'=>"\N{U+016B}", 'U('=>"\N{U+016C}", 'u('=>"\N{U+016D}", 'U0'=>"\N{U+016E}", 'u0'=>"\N{U+016F}", 'U"'=>"\N{U+0170}", 'u"'=>"\N{U+0171}", 'U;'=>"\N{U+0172}", 'u;'=>"\N{U+0173}", 'W>'=>"\N{U+0174}", 'w>'=>"\N{U+0175}", 'Y>'=>"\N{U+0176}", 'y>'=>"\N{U+0177}", 'Y:'=>"\N{U+0178}", 'Z\''=>"\N{U+0179}", 'z\''=>"\N{U+017A}", 'Z.'=>"\N{U+017B}", 'z.'=>"\N{U+017C}", 'Z<'=>"\N{U+017D}", 'z<'=>"\N{U+017E}", 'O9'=>"\N{U+01A0}", 'o9'=>"\N{U+01A1}", 'OI'=>"\N{U+01A2}", 'oi'=>"\N{U+01A3}", 'yr'=>"\N{U+01A6}", 'U9'=>"\N{U+01AF}", 'u9'=>"\N{U+01B0}", 'Z/'=>"\N{U+01B5}", 'z/'=>"\N{U+01B6}", 'ED'=>"\N{U+01B7}", 'A<'=>"\N{U+01CD}", 'a<'=>"\N{U+01CE}", 'I<'=>"\N{U+01CF}", 'i<'=>"\N{U+01D0}", 'O<'=>"\N{U+01D1}", 'o<'=>"\N{U+01D2}", 'U<'=>"\N{U+01D3}", 'u<'=>"\N{U+01D4}", 'A1'=>"\N{U+01DE}", 'a1'=>"\N{U+01DF}", 'A7'=>"\N{U+01E0}", 'a7'=>"\N{U+01E1}", 'A3'=>"\N{U+01E2}", 'a3'=>"\N{U+01E3}", 'G/'=>"\N{U+01E4}", 'g/'=>"\N{U+01E5}", 'G<'=>"\N{U+01E6}", 'g<'=>"\N{U+01E7}", 'K<'=>"\N{U+01E8}", 'k<'=>"\N{U+01E9}", 'O;'=>"\N{U+01EA}", 'o;'=>"\N{U+01EB}", 'O1'=>"\N{U+01EC}", 'o1'=>"\N{U+01ED}", 'EZ'=>"\N{U+01EE}", 'ez'=>"\N{U+01EF}", 'j<'=>"\N{U+01F0}", 'G\''=>"\N{U+01F4}", 'g\''=>"\N{U+01F5}", ';S'=>"\N{U+02BF}", '\'<'=>"\N{U+02C7}", '\'('=>"\N{U+02D8}", '\'.'=>"\N{U+02D9}", '\'0'=>"\N{U+02DA}", '\';'=>"\N{U+02DB}", '\'"'=>"\N{U+02DD}", 'A%'=>"\N{U+0386}", 'E%'=>"\N{U+0388}", 'Y%'=>"\N{U+0389}", 'I%'=>"\N{U+038A}", 'O%'=>"\N{U+038C}", 'U%'=>"\N{U+038E}", 'W%'=>"\N{U+038F}", 'i3'=>"\N{U+0390}", 'A*'=>"\N{U+0391}", 'B*'=>"\N{U+0392}", 'G*'=>"\N{U+0393}", 'D*'=>"\N{U+0394}", 'E*'=>"\N{U+0395}", 'Z*'=>"\N{U+0396}", 'Y*'=>"\N{U+0397}", 'H*'=>"\N{U+0398}", 'I*'=>"\N{U+0399}", 'K*'=>"\N{U+039A}", 'L*'=>"\N{U+039B}", 'M*'=>"\N{U+039C}", 'N*'=>"\N{U+039D}", 'C*'=>"\N{U+039E}", 'O*'=>"\N{U+039F}", 'P*'=>"\N{U+03A0}", 'R*'=>"\N{U+03A1}", 'S*'=>"\N{U+03A3}", 'T*'=>"\N{U+03A4}", 'U*'=>"\N{U+03A5}", 'F*'=>"\N{U+03A6}", 'X*'=>"\N{U+03A7}", 'Q*'=>"\N{U+03A8}", 'W*'=>"\N{U+03A9}", 'J*'=>"\N{U+03AA}", 'V*'=>"\N{U+03AB}", 'a%'=>"\N{U+03AC}", 'e%'=>"\N{U+03AD}", 'y%'=>"\N{U+03AE}", 'i%'=>"\N{U+03AF}", 'u3'=>"\N{U+03B0}", 'a*'=>"\N{U+03B1}", 'b*'=>"\N{U+03B2}", 'g*'=>"\N{U+03B3}", 'd*'=>"\N{U+03B4}", 'e*'=>"\N{U+03B5}", 'z*'=>"\N{U+03B6}", 'y*'=>"\N{U+03B7}", 'h*'=>"\N{U+03B8}", 'i*'=>"\N{U+03B9}", 'k*'=>"\N{U+03BA}", 'l*'=>"\N{U+03BB}", 'm*'=>"\N{U+03BC}", 'n*'=>"\N{U+03BD}", 'c*'=>"\N{U+03BE}", 'o*'=>"\N{U+03BF}", 'p*'=>"\N{U+03C0}", 'r*'=>"\N{U+03C1}", '*s'=>"\N{U+03C2}", 's*'=>"\N{U+03C3}", 't*'=>"\N{U+03C4}", 'u*'=>"\N{U+03C5}", 'f*'=>"\N{U+03C6}", 'x*'=>"\N{U+03C7}", 'q*'=>"\N{U+03C8}", 'w*'=>"\N{U+03C9}", 'j*'=>"\N{U+03CA}", 'v*'=>"\N{U+03CB}", 'o%'=>"\N{U+03CC}", 'u%'=>"\N{U+03CD}", 'w%'=>"\N{U+03CE}", '\'G'=>"\N{U+03D8}", ',G'=>"\N{U+03D9}", 'T3'=>"\N{U+03DA}", 't3'=>"\N{U+03DB}", 'M3'=>"\N{U+03DC}", 'm3'=>"\N{U+03DD}", 'K3'=>"\N{U+03DE}", 'k3'=>"\N{U+03DF}", 'P3'=>"\N{U+03E0}", 'p3'=>"\N{U+03E1}", '\'%'=>"\N{U+03F4}", 'j3'=>"\N{U+03F5}", 'IO'=>"\N{U+0401}", 'D%'=>"\N{U+0402}", 'G%'=>"\N{U+0403}", 'IE'=>"\N{U+0404}", 'DS'=>"\N{U+0405}", 'II'=>"\N{U+0406}", 'YI'=>"\N{U+0407}", 'J%'=>"\N{U+0408}", 'LJ'=>"\N{U+0409}", 'NJ'=>"\N{U+040A}", 'Ts'=>"\N{U+040B}", 'KJ'=>"\N{U+040C}", 'V%'=>"\N{U+040E}", 'DZ'=>"\N{U+040F}", 'A='=>"\N{U+0410}", 'B='=>"\N{U+0411}", 'V='=>"\N{U+0412}", 'G='=>"\N{U+0413}", 'D='=>"\N{U+0414}", 'E='=>"\N{U+0415}", 'Z%'=>"\N{U+0416}", 'Z='=>"\N{U+0417}", 'I='=>"\N{U+0418}", 'J='=>"\N{U+0419}", 'K='=>"\N{U+041A}", 'L='=>"\N{U+041B}", 'M='=>"\N{U+041C}", 'N='=>"\N{U+041D}", 'O='=>"\N{U+041E}", 'P='=>"\N{U+041F}", 'R='=>"\N{U+0420}", 'S='=>"\N{U+0421}", 'T='=>"\N{U+0422}", 'U='=>"\N{U+0423}", 'F='=>"\N{U+0424}", 'H='=>"\N{U+0425}", 'C='=>"\N{U+0426}", 'C%'=>"\N{U+0427}", 'S%'=>"\N{U+0428}", 'Sc'=>"\N{U+0429}", '="'=>"\N{U+042A}", 'Y='=>"\N{U+042B}", '%"'=>"\N{U+042C}", 'JE'=>"\N{U+042D}", 'JU'=>"\N{U+042E}", 'JA'=>"\N{U+042F}", 'a='=>"\N{U+0430}", 'b='=>"\N{U+0431}", 'v='=>"\N{U+0432}", 'g='=>"\N{U+0433}", 'd='=>"\N{U+0434}", 'e='=>"\N{U+0435}", 'z%'=>"\N{U+0436}", 'z='=>"\N{U+0437}", 'i='=>"\N{U+0438}", 'j='=>"\N{U+0439}", 'k='=>"\N{U+043A}", 'l='=>"\N{U+043B}", 'm='=>"\N{U+043C}", 'n='=>"\N{U+043D}", 'o='=>"\N{U+043E}", 'p='=>"\N{U+043F}", 'r='=>"\N{U+0440}", 's='=>"\N{U+0441}", 't='=>"\N{U+0442}", 'u='=>"\N{U+0443}", 'f='=>"\N{U+0444}", 'h='=>"\N{U+0445}", 'c='=>"\N{U+0446}", 'c%'=>"\N{U+0447}", 's%'=>"\N{U+0448}", 'sc'=>"\N{U+0449}", '=\''=>"\N{U+044A}", 'y='=>"\N{U+044B}", '%\''=>"\N{U+044C}", 'je'=>"\N{U+044D}", 'ju'=>"\N{U+044E}", 'ja'=>"\N{U+044F}", 'io'=>"\N{U+0451}", 'd%'=>"\N{U+0452}", 'g%'=>"\N{U+0453}", 'ie'=>"\N{U+0454}", 'ds'=>"\N{U+0455}", 'ii'=>"\N{U+0456}", 'yi'=>"\N{U+0457}", 'j%'=>"\N{U+0458}", 'lj'=>"\N{U+0459}", 'nj'=>"\N{U+045A}", 'ts'=>"\N{U+045B}", 'kj'=>"\N{U+045C}", 'v%'=>"\N{U+045E}", 'dz'=>"\N{U+045F}", 'Y3'=>"\N{U+0462}", 'y3'=>"\N{U+0463}", 'O3'=>"\N{U+046A}", 'o3'=>"\N{U+046B}", 'F3'=>"\N{U+0472}", 'f3'=>"\N{U+0473}", 'V3'=>"\N{U+0474}", 'v3'=>"\N{U+0475}", 'C3'=>"\N{U+0480}", 'c3'=>"\N{U+0481}", 'G3'=>"\N{U+0490}", 'g3'=>"\N{U+0491}", 'A+'=>"\N{U+05D0}", 'B+'=>"\N{U+05D1}", 'G+'=>"\N{U+05D2}", 'D+'=>"\N{U+05D3}", 'H+'=>"\N{U+05D4}", 'W+'=>"\N{U+05D5}", 'Z+'=>"\N{U+05D6}", 'X+'=>"\N{U+05D7}", 'Tj'=>"\N{U+05D8}", 'J+'=>"\N{U+05D9}", 'K%'=>"\N{U+05DA}", 'K+'=>"\N{U+05DB}", 'L+'=>"\N{U+05DC}", 'M%'=>"\N{U+05DD}", 'M+'=>"\N{U+05DE}", 'N%'=>"\N{U+05DF}", 'N+'=>"\N{U+05E0}", 'S+'=>"\N{U+05E1}", 'E+'=>"\N{U+05E2}", 'P%'=>"\N{U+05E3}", 'P+'=>"\N{U+05E4}", 'Zj'=>"\N{U+05E5}", 'ZJ'=>"\N{U+05E6}", 'Q+'=>"\N{U+05E7}", 'R+'=>"\N{U+05E8}", 'Sh'=>"\N{U+05E9}", 'T+'=>"\N{U+05EA}", ',+'=>"\N{U+060C}", ';+'=>"\N{U+061B}", '?+'=>"\N{U+061F}", 'H\''=>"\N{U+0621}", 'aM'=>"\N{U+0622}", 'aH'=>"\N{U+0623}", 'wH'=>"\N{U+0624}", 'ah'=>"\N{U+0625}", 'yH'=>"\N{U+0626}", 'a+'=>"\N{U+0627}", 'b+'=>"\N{U+0628}", 'tm'=>"\N{U+0629}", 't+'=>"\N{U+062A}", 'tk'=>"\N{U+062B}", 'g+'=>"\N{U+062C}", 'hk'=>"\N{U+062D}", 'x+'=>"\N{U+062E}", 'd+'=>"\N{U+062F}", 'dk'=>"\N{U+0630}", 'r+'=>"\N{U+0631}", 'z+'=>"\N{U+0632}", 's+'=>"\N{U+0633}", 'sn'=>"\N{U+0634}", 'c+'=>"\N{U+0635}", 'dd'=>"\N{U+0636}", 'tj'=>"\N{U+0637}", 'zH'=>"\N{U+0638}", 'e+'=>"\N{U+0639}", 'i+'=>"\N{U+063A}", '++'=>"\N{U+0640}", 'f+'=>"\N{U+0641}", 'q+'=>"\N{U+0642}", 'k+'=>"\N{U+0643}", 'l+'=>"\N{U+0644}", 'm+'=>"\N{U+0645}", 'n+'=>"\N{U+0646}", 'h+'=>"\N{U+0647}", 'w+'=>"\N{U+0648}", 'j+'=>"\N{U+0649}", 'y+'=>"\N{U+064A}", ':+'=>"\N{U+064B}", '"+'=>"\N{U+064C}", '=+'=>"\N{U+064D}", '/+'=>"\N{U+064E}", '\'+'=>"\N{U+064F}", '1+'=>"\N{U+0650}", '3+'=>"\N{U+0651}", '0+'=>"\N{U+0652}", 'aS'=>"\N{U+0670}", 'p+'=>"\N{U+067E}", 'v+'=>"\N{U+06A4}", 'gf'=>"\N{U+06AF}", '0a'=>"\N{U+06F0}", '1a'=>"\N{U+06F1}", '2a'=>"\N{U+06F2}", '3a'=>"\N{U+06F3}", '4a'=>"\N{U+06F4}", '5a'=>"\N{U+06F5}", '6a'=>"\N{U+06F6}", '7a'=>"\N{U+06F7}", '8a'=>"\N{U+06F8}", '9a'=>"\N{U+06F9}", 'B.'=>"\N{U+1E02}", 'b.'=>"\N{U+1E03}", 'B_'=>"\N{U+1E06}", 'b_'=>"\N{U+1E07}", 'D.'=>"\N{U+1E0A}", 'd.'=>"\N{U+1E0B}", 'D_'=>"\N{U+1E0E}", 'd_'=>"\N{U+1E0F}", 'D,'=>"\N{U+1E10}", 'd,'=>"\N{U+1E11}", 'F.'=>"\N{U+1E1E}", 'f.'=>"\N{U+1E1F}", 'G-'=>"\N{U+1E20}", 'g-'=>"\N{U+1E21}", 'H.'=>"\N{U+1E22}", 'h.'=>"\N{U+1E23}", 'H:'=>"\N{U+1E26}", 'h:'=>"\N{U+1E27}", 'H,'=>"\N{U+1E28}", 'h,'=>"\N{U+1E29}", 'K\''=>"\N{U+1E30}", 'k\''=>"\N{U+1E31}", 'K_'=>"\N{U+1E34}", 'k_'=>"\N{U+1E35}", 'L_'=>"\N{U+1E3A}", 'l_'=>"\N{U+1E3B}", 'M\''=>"\N{U+1E3E}", 'm\''=>"\N{U+1E3F}", 'M.'=>"\N{U+1E40}", 'm.'=>"\N{U+1E41}", 'N.'=>"\N{U+1E44}", 'n.'=>"\N{U+1E45}", 'N_'=>"\N{U+1E48}", 'n_'=>"\N{U+1E49}", 'P\''=>"\N{U+1E54}", 'p\''=>"\N{U+1E55}", 'P.'=>"\N{U+1E56}", 'p.'=>"\N{U+1E57}", 'R.'=>"\N{U+1E58}", 'r.'=>"\N{U+1E59}", 'R_'=>"\N{U+1E5E}", 'r_'=>"\N{U+1E5F}", 'S.'=>"\N{U+1E60}", 's.'=>"\N{U+1E61}", 'T.'=>"\N{U+1E6A}", 't.'=>"\N{U+1E6B}", 'T_'=>"\N{U+1E6E}", 't_'=>"\N{U+1E6F}", 'V?'=>"\N{U+1E7C}", 'v?'=>"\N{U+1E7D}", 'W!'=>"\N{U+1E80}", 'w!'=>"\N{U+1E81}", 'W\''=>"\N{U+1E82}", 'w\''=>"\N{U+1E83}", 'W:'=>"\N{U+1E84}", 'w:'=>"\N{U+1E85}", 'W.'=>"\N{U+1E86}", 'w.'=>"\N{U+1E87}", 'X.'=>"\N{U+1E8A}", 'x.'=>"\N{U+1E8B}", 'X:'=>"\N{U+1E8C}", 'x:'=>"\N{U+1E8D}", 'Y.'=>"\N{U+1E8E}", 'y.'=>"\N{U+1E8F}", 'Z>'=>"\N{U+1E90}", 'z>'=>"\N{U+1E91}", 'Z_'=>"\N{U+1E94}", 'z_'=>"\N{U+1E95}", 'h_'=>"\N{U+1E96}", 't:'=>"\N{U+1E97}", 'w0'=>"\N{U+1E98}", 'y0'=>"\N{U+1E99}", 'A2'=>"\N{U+1EA2}", 'a2'=>"\N{U+1EA3}", 'E2'=>"\N{U+1EBA}", 'e2'=>"\N{U+1EBB}", 'E?'=>"\N{U+1EBC}", 'e?'=>"\N{U+1EBD}", 'I2'=>"\N{U+1EC8}", 'i2'=>"\N{U+1EC9}", 'O2'=>"\N{U+1ECE}", 'o2'=>"\N{U+1ECF}", 'U2'=>"\N{U+1EE6}", 'u2'=>"\N{U+1EE7}", 'Y!'=>"\N{U+1EF2}", 'y!'=>"\N{U+1EF3}", 'Y2'=>"\N{U+1EF6}", 'y2'=>"\N{U+1EF7}", 'Y?'=>"\N{U+1EF8}", 'y?'=>"\N{U+1EF9}", ';\''=>"\N{U+1F00}", ',\''=>"\N{U+1F01}", ';!'=>"\N{U+1F02}", ',!'=>"\N{U+1F03}", '?;'=>"\N{U+1F04}", '?,'=>"\N{U+1F05}", '!:'=>"\N{U+1F06}", '?:'=>"\N{U+1F07}", '1N'=>"\N{U+2002}", '1M'=>"\N{U+2003}", '3M'=>"\N{U+2004}", '4M'=>"\N{U+2005}", '6M'=>"\N{U+2006}", '1T'=>"\N{U+2009}", '1H'=>"\N{U+200A}", '-1'=>"\N{U+2010}", '-N'=>"\N{U+2013}", '-M'=>"\N{U+2014}", '-3'=>"\N{U+2015}", '!2'=>"\N{U+2016}", '=2'=>"\N{U+2017}", '\'6'=>"\N{U+2018}", '\'9'=>"\N{U+2019}", '.9'=>"\N{U+201A}", '9\''=>"\N{U+201B}", '"6'=>"\N{U+201C}", '"9'=>"\N{U+201D}", ':9'=>"\N{U+201E}", '9"'=>"\N{U+201F}", '/-'=>"\N{U+2020}", '/='=>"\N{U+2021}", '..'=>"\N{U+2025}", '%0'=>"\N{U+2030}", '1\''=>"\N{U+2032}", '2\''=>"\N{U+2033}", '3\''=>"\N{U+2034}", '1"'=>"\N{U+2035}", '2"'=>"\N{U+2036}", '3"'=>"\N{U+2037}", 'Ca'=>"\N{U+2038}", '<1'=>"\N{U+2039}", '>1'=>"\N{U+203A}", ':X'=>"\N{U+203B}", '\'-'=>"\N{U+203E}", '/f'=>"\N{U+2044}", '0S'=>"\N{U+2070}", '4S'=>"\N{U+2074}", '5S'=>"\N{U+2075}", '6S'=>"\N{U+2076}", '7S'=>"\N{U+2077}", '8S'=>"\N{U+2078}", '9S'=>"\N{U+2079}", '+S'=>"\N{U+207A}", '-S'=>"\N{U+207B}", '=S'=>"\N{U+207C}", '(S'=>"\N{U+207D}", ')S'=>"\N{U+207E}", 'nS'=>"\N{U+207F}", '0s'=>"\N{U+2080}", '1s'=>"\N{U+2081}", '2s'=>"\N{U+2082}", '3s'=>"\N{U+2083}", '4s'=>"\N{U+2084}", '5s'=>"\N{U+2085}", '6s'=>"\N{U+2086}", '7s'=>"\N{U+2087}", '8s'=>"\N{U+2088}", '9s'=>"\N{U+2089}", '+s'=>"\N{U+208A}", '-s'=>"\N{U+208B}", '=s'=>"\N{U+208C}", '(s'=>"\N{U+208D}", ')s'=>"\N{U+208E}", 'Li'=>"\N{U+20A4}", 'Pt'=>"\N{U+20A7}", 'W='=>"\N{U+20A9}", 'Eu'=>"\N{U+20AC}", '=R'=>"\N{U+20BD}", '=P'=>"\N{U+20BD}", 'oC'=>"\N{U+2103}", 'co'=>"\N{U+2105}", 'oF'=>"\N{U+2109}", 'N0'=>"\N{U+2116}", 'PO'=>"\N{U+2117}", 'Rx'=>"\N{U+211E}", 'SM'=>"\N{U+2120}", 'TM'=>"\N{U+2122}", 'Om'=>"\N{U+2126}", 'AO'=>"\N{U+212B}", '13'=>"\N{U+2153}", '23'=>"\N{U+2154}", '15'=>"\N{U+2155}", '25'=>"\N{U+2156}", '35'=>"\N{U+2157}", '45'=>"\N{U+2158}", '16'=>"\N{U+2159}", '56'=>"\N{U+215A}", '18'=>"\N{U+215B}", '38'=>"\N{U+215C}", '58'=>"\N{U+215D}", '78'=>"\N{U+215E}", '1R'=>"\N{U+2160}", '2R'=>"\N{U+2161}", '3R'=>"\N{U+2162}", '4R'=>"\N{U+2163}", '5R'=>"\N{U+2164}", '6R'=>"\N{U+2165}", '7R'=>"\N{U+2166}", '8R'=>"\N{U+2167}", '9R'=>"\N{U+2168}", 'aR'=>"\N{U+2169}", 'bR'=>"\N{U+216A}", 'cR'=>"\N{U+216B}", '1r'=>"\N{U+2170}", '2r'=>"\N{U+2171}", '3r'=>"\N{U+2172}", '4r'=>"\N{U+2173}", '5r'=>"\N{U+2174}", '6r'=>"\N{U+2175}", '7r'=>"\N{U+2176}", '8r'=>"\N{U+2177}", '9r'=>"\N{U+2178}", 'ar'=>"\N{U+2179}", 'br'=>"\N{U+217A}", 'cr'=>"\N{U+217B}", '<-'=>"\N{U+2190}", '-!'=>"\N{U+2191}", '->'=>"\N{U+2192}", '-v'=>"\N{U+2193}", '<>'=>"\N{U+2194}", 'UD'=>"\N{U+2195}", '<='=>"\N{U+21D0}", '=>'=>"\N{U+21D2}", '=='=>"\N{U+21D4}", 'FA'=>"\N{U+2200}", 'dP'=>"\N{U+2202}", 'TE'=>"\N{U+2203}", '/0'=>"\N{U+2205}", 'DE'=>"\N{U+2206}", 'NB'=>"\N{U+2207}", '(-'=>"\N{U+2208}", '-)'=>"\N{U+220B}", '*P'=>"\N{U+220F}", '+Z'=>"\N{U+2211}", '-2'=>"\N{U+2212}", '-+'=>"\N{U+2213}", '*-'=>"\N{U+2217}", 'Ob'=>"\N{U+2218}", 'Sb'=>"\N{U+2219}", 'RT'=>"\N{U+221A}", '0('=>"\N{U+221D}", '00'=>"\N{U+221E}", '-L'=>"\N{U+221F}", '-V'=>"\N{U+2220}", 'PP'=>"\N{U+2225}", 'AN'=>"\N{U+2227}", 'OR'=>"\N{U+2228}", '(U'=>"\N{U+2229}", ')U'=>"\N{U+222A}", 'In'=>"\N{U+222B}", 'DI'=>"\N{U+222C}", 'Io'=>"\N{U+222E}", '.:'=>"\N{U+2234}", ':.'=>"\N{U+2235}", ':R'=>"\N{U+2236}", '::'=>"\N{U+2237}", '?1'=>"\N{U+223C}", 'CG'=>"\N{U+223E}", '?-'=>"\N{U+2243}", '?='=>"\N{U+2245}", '?2'=>"\N{U+2248}", '=?'=>"\N{U+224C}", 'HI'=>"\N{U+2253}", '!='=>"\N{U+2260}", '=3'=>"\N{U+2261}", '=<'=>"\N{U+2264}", '>='=>"\N{U+2265}", '<*'=>"\N{U+226A}", '*>'=>"\N{U+226B}", '!<'=>"\N{U+226E}", '!>'=>"\N{U+226F}", '(C'=>"\N{U+2282}", ')C'=>"\N{U+2283}", '(_'=>"\N{U+2286}", ')_'=>"\N{U+2287}", '0.'=>"\N{U+2299}", '02'=>"\N{U+229A}", '-T'=>"\N{U+22A5}", '.P'=>"\N{U+22C5}", ':3'=>"\N{U+22EE}", '.3'=>"\N{U+22EF}", 'Eh'=>"\N{U+2302}", '<7'=>"\N{U+2308}", '>7'=>"\N{U+2309}", '7<'=>"\N{U+230A}", '7>'=>"\N{U+230B}", 'NI'=>"\N{U+2310}", '(A'=>"\N{U+2312}", 'TR'=>"\N{U+2315}", 'Iu'=>"\N{U+2320}", 'Il'=>"\N{U+2321}", '"\N{U+2329}", '/>'=>"\N{U+232A}", 'Vs'=>"\N{U+2423}", '1h'=>"\N{U+2440}", '3h'=>"\N{U+2441}", '2h'=>"\N{U+2442}", '4h'=>"\N{U+2443}", '1j'=>"\N{U+2446}", '2j'=>"\N{U+2447}", '3j'=>"\N{U+2448}", '4j'=>"\N{U+2449}", '1.'=>"\N{U+2488}", '2.'=>"\N{U+2489}", '3.'=>"\N{U+248A}", '4.'=>"\N{U+248B}", '5.'=>"\N{U+248C}", '6.'=>"\N{U+248D}", '7.'=>"\N{U+248E}", '8.'=>"\N{U+248F}", '9.'=>"\N{U+2490}", 'hh'=>"\N{U+2500}", 'HH'=>"\N{U+2501}", 'vv'=>"\N{U+2502}", 'VV'=>"\N{U+2503}", '3-'=>"\N{U+2504}", '3_'=>"\N{U+2505}", '3!'=>"\N{U+2506}", '3/'=>"\N{U+2507}", '4-'=>"\N{U+2508}", '4_'=>"\N{U+2509}", '4!'=>"\N{U+250A}", '4/'=>"\N{U+250B}", 'dr'=>"\N{U+250C}", 'dR'=>"\N{U+250D}", 'Dr'=>"\N{U+250E}", 'DR'=>"\N{U+250F}", 'dl'=>"\N{U+2510}", 'dL'=>"\N{U+2511}", 'Dl'=>"\N{U+2512}", 'LD'=>"\N{U+2513}", 'ur'=>"\N{U+2514}", 'uR'=>"\N{U+2515}", 'Ur'=>"\N{U+2516}", 'UR'=>"\N{U+2517}", 'ul'=>"\N{U+2518}", 'uL'=>"\N{U+2519}", 'Ul'=>"\N{U+251A}", 'UL'=>"\N{U+251B}", 'vr'=>"\N{U+251C}", 'vR'=>"\N{U+251D}", 'Vr'=>"\N{U+2520}", 'VR'=>"\N{U+2523}", 'vl'=>"\N{U+2524}", 'vL'=>"\N{U+2525}", 'Vl'=>"\N{U+2528}", 'VL'=>"\N{U+252B}", 'dh'=>"\N{U+252C}", 'dH'=>"\N{U+252F}", 'Dh'=>"\N{U+2530}", 'DH'=>"\N{U+2533}", 'uh'=>"\N{U+2534}", 'uH'=>"\N{U+2537}", 'Uh'=>"\N{U+2538}", 'UH'=>"\N{U+253B}", 'vh'=>"\N{U+253C}", 'vH'=>"\N{U+253F}", 'Vh'=>"\N{U+2542}", 'VH'=>"\N{U+254B}", 'FD'=>"\N{U+2571}", 'BD'=>"\N{U+2572}", 'TB'=>"\N{U+2580}", 'LB'=>"\N{U+2584}", 'FB'=>"\N{U+2588}", 'lB'=>"\N{U+258C}", 'RB'=>"\N{U+2590}", '.S'=>"\N{U+2591}", ':S'=>"\N{U+2592}", '?S'=>"\N{U+2593}", 'fS'=>"\N{U+25A0}", 'OS'=>"\N{U+25A1}", 'RO'=>"\N{U+25A2}", 'Rr'=>"\N{U+25A3}", 'RF'=>"\N{U+25A4}", 'RY'=>"\N{U+25A5}", 'RH'=>"\N{U+25A6}", 'RZ'=>"\N{U+25A7}", 'RK'=>"\N{U+25A8}", 'RX'=>"\N{U+25A9}", 'sB'=>"\N{U+25AA}", 'SR'=>"\N{U+25AC}", 'Or'=>"\N{U+25AD}", 'UT'=>"\N{U+25B2}", 'uT'=>"\N{U+25B3}", 'PR'=>"\N{U+25B6}", 'Tr'=>"\N{U+25B7}", 'Dt'=>"\N{U+25BC}", 'dT'=>"\N{U+25BD}", 'PL'=>"\N{U+25C0}", 'Tl'=>"\N{U+25C1}", 'Db'=>"\N{U+25C6}", 'Dw'=>"\N{U+25C7}", 'LZ'=>"\N{U+25CA}", '0m'=>"\N{U+25CB}", '0o'=>"\N{U+25CE}", '0M'=>"\N{U+25CF}", '0L'=>"\N{U+25D0}", '0R'=>"\N{U+25D1}", 'Sn'=>"\N{U+25D8}", 'Ic'=>"\N{U+25D9}", 'Fd'=>"\N{U+25E2}", 'Bd'=>"\N{U+25E3}", '*2'=>"\N{U+2605}", '*1'=>"\N{U+2606}", '"\N{U+261C}", '>H'=>"\N{U+261E}", '0u'=>"\N{U+263A}", '0U'=>"\N{U+263B}", 'SU'=>"\N{U+263C}", 'Fm'=>"\N{U+2640}", 'Ml'=>"\N{U+2642}", 'cS'=>"\N{U+2660}", 'cH'=>"\N{U+2661}", 'cD'=>"\N{U+2662}", 'cC'=>"\N{U+2663}", 'Md'=>"\N{U+2669}", 'M8'=>"\N{U+266A}", 'M2'=>"\N{U+266B}", 'Mb'=>"\N{U+266D}", 'Mx'=>"\N{U+266E}", 'MX'=>"\N{U+266F}", 'OK'=>"\N{U+2713}", 'XX'=>"\N{U+2717}", '-X'=>"\N{U+2720}", 'IS'=>"\N{U+3000}", ',_'=>"\N{U+3001}", '._'=>"\N{U+3002}", '+"'=>"\N{U+3003}", '+_'=>"\N{U+3004}", '*_'=>"\N{U+3005}", ';_'=>"\N{U+3006}", '0_'=>"\N{U+3007}", '<+'=>"\N{U+300A}", '>+'=>"\N{U+300B}", '<\''=>"\N{U+300C}", '>\''=>"\N{U+300D}", '<"'=>"\N{U+300E}", '>"'=>"\N{U+300F}", '("'=>"\N{U+3010}", ')"'=>"\N{U+3011}", '=T'=>"\N{U+3012}", '=_'=>"\N{U+3013}", '(\''=>"\N{U+3014}", ')\''=>"\N{U+3015}", '(I'=>"\N{U+3016}", ')I'=>"\N{U+3017}", '-?'=>"\N{U+301C}", 'A5'=>"\N{U+3041}", 'a5'=>"\N{U+3042}", 'I5'=>"\N{U+3043}", 'i5'=>"\N{U+3044}", 'U5'=>"\N{U+3045}", 'u5'=>"\N{U+3046}", 'E5'=>"\N{U+3047}", 'e5'=>"\N{U+3048}", 'O5'=>"\N{U+3049}", 'o5'=>"\N{U+304A}", 'ka'=>"\N{U+304B}", 'ga'=>"\N{U+304C}", 'ki'=>"\N{U+304D}", 'gi'=>"\N{U+304E}", 'ku'=>"\N{U+304F}", 'gu'=>"\N{U+3050}", 'ke'=>"\N{U+3051}", 'ge'=>"\N{U+3052}", 'ko'=>"\N{U+3053}", 'go'=>"\N{U+3054}", 'sa'=>"\N{U+3055}", 'za'=>"\N{U+3056}", 'si'=>"\N{U+3057}", 'zi'=>"\N{U+3058}", 'su'=>"\N{U+3059}", 'zu'=>"\N{U+305A}", 'se'=>"\N{U+305B}", 'ze'=>"\N{U+305C}", 'so'=>"\N{U+305D}", 'zo'=>"\N{U+305E}", 'ta'=>"\N{U+305F}", 'da'=>"\N{U+3060}", 'ti'=>"\N{U+3061}", 'di'=>"\N{U+3062}", 'tU'=>"\N{U+3063}", 'tu'=>"\N{U+3064}", 'du'=>"\N{U+3065}", 'te'=>"\N{U+3066}", 'de'=>"\N{U+3067}", 'to'=>"\N{U+3068}", 'do'=>"\N{U+3069}", 'na'=>"\N{U+306A}", 'ni'=>"\N{U+306B}", 'nu'=>"\N{U+306C}", 'ne'=>"\N{U+306D}", 'no'=>"\N{U+306E}", 'ha'=>"\N{U+306F}", 'ba'=>"\N{U+3070}", 'pa'=>"\N{U+3071}", 'hi'=>"\N{U+3072}", 'bi'=>"\N{U+3073}", 'pi'=>"\N{U+3074}", 'hu'=>"\N{U+3075}", 'bu'=>"\N{U+3076}", 'pu'=>"\N{U+3077}", 'he'=>"\N{U+3078}", 'be'=>"\N{U+3079}", 'pe'=>"\N{U+307A}", 'ho'=>"\N{U+307B}", 'bo'=>"\N{U+307C}", 'po'=>"\N{U+307D}", 'ma'=>"\N{U+307E}", 'mi'=>"\N{U+307F}", 'mu'=>"\N{U+3080}", 'me'=>"\N{U+3081}", 'mo'=>"\N{U+3082}", 'yA'=>"\N{U+3083}", 'ya'=>"\N{U+3084}", 'yU'=>"\N{U+3085}", 'yu'=>"\N{U+3086}", 'yO'=>"\N{U+3087}", 'yo'=>"\N{U+3088}", 'ra'=>"\N{U+3089}", 'ri'=>"\N{U+308A}", 'ru'=>"\N{U+308B}", 're'=>"\N{U+308C}", 'ro'=>"\N{U+308D}", 'wA'=>"\N{U+308E}", 'wa'=>"\N{U+308F}", 'wi'=>"\N{U+3090}", 'we'=>"\N{U+3091}", 'wo'=>"\N{U+3092}", 'n5'=>"\N{U+3093}", 'vu'=>"\N{U+3094}", '"5'=>"\N{U+309B}", '05'=>"\N{U+309C}", '*5'=>"\N{U+309D}", '+5'=>"\N{U+309E}", 'a6'=>"\N{U+30A1}", 'A6'=>"\N{U+30A2}", 'i6'=>"\N{U+30A3}", 'I6'=>"\N{U+30A4}", 'u6'=>"\N{U+30A5}", 'U6'=>"\N{U+30A6}", 'e6'=>"\N{U+30A7}", 'E6'=>"\N{U+30A8}", 'o6'=>"\N{U+30A9}", 'O6'=>"\N{U+30AA}", 'Ka'=>"\N{U+30AB}", 'Ga'=>"\N{U+30AC}", 'Ki'=>"\N{U+30AD}", 'Gi'=>"\N{U+30AE}", 'Ku'=>"\N{U+30AF}", 'Gu'=>"\N{U+30B0}", 'Ke'=>"\N{U+30B1}", 'Ge'=>"\N{U+30B2}", 'Ko'=>"\N{U+30B3}", 'Go'=>"\N{U+30B4}", 'Sa'=>"\N{U+30B5}", 'Za'=>"\N{U+30B6}", 'Si'=>"\N{U+30B7}", 'Zi'=>"\N{U+30B8}", 'Su'=>"\N{U+30B9}", 'Zu'=>"\N{U+30BA}", 'Se'=>"\N{U+30BB}", 'Ze'=>"\N{U+30BC}", 'So'=>"\N{U+30BD}", 'Zo'=>"\N{U+30BE}", 'Ta'=>"\N{U+30BF}", 'Da'=>"\N{U+30C0}", 'Ti'=>"\N{U+30C1}", 'Di'=>"\N{U+30C2}", 'TU'=>"\N{U+30C3}", 'Tu'=>"\N{U+30C4}", 'Du'=>"\N{U+30C5}", 'Te'=>"\N{U+30C6}", 'De'=>"\N{U+30C7}", 'To'=>"\N{U+30C8}", 'Do'=>"\N{U+30C9}", 'Na'=>"\N{U+30CA}", 'Ni'=>"\N{U+30CB}", 'Nu'=>"\N{U+30CC}", 'Ne'=>"\N{U+30CD}", 'No'=>"\N{U+30CE}", 'Ha'=>"\N{U+30CF}", 'Ba'=>"\N{U+30D0}", 'Pa'=>"\N{U+30D1}", 'Hi'=>"\N{U+30D2}", 'Bi'=>"\N{U+30D3}", 'Pi'=>"\N{U+30D4}", 'Hu'=>"\N{U+30D5}", 'Bu'=>"\N{U+30D6}", 'Pu'=>"\N{U+30D7}", 'He'=>"\N{U+30D8}", 'Be'=>"\N{U+30D9}", 'Pe'=>"\N{U+30DA}", 'Ho'=>"\N{U+30DB}", 'Bo'=>"\N{U+30DC}", 'Po'=>"\N{U+30DD}", 'Ma'=>"\N{U+30DE}", 'Mi'=>"\N{U+30DF}", 'Mu'=>"\N{U+30E0}", 'Me'=>"\N{U+30E1}", 'Mo'=>"\N{U+30E2}", 'YA'=>"\N{U+30E3}", 'Ya'=>"\N{U+30E4}", 'YU'=>"\N{U+30E5}", 'Yu'=>"\N{U+30E6}", 'YO'=>"\N{U+30E7}", 'Yo'=>"\N{U+30E8}", 'Ra'=>"\N{U+30E9}", 'Ri'=>"\N{U+30EA}", 'Ru'=>"\N{U+30EB}", 'Re'=>"\N{U+30EC}", 'Ro'=>"\N{U+30ED}", 'WA'=>"\N{U+30EE}", 'Wa'=>"\N{U+30EF}", 'Wi'=>"\N{U+30F0}", 'We'=>"\N{U+30F1}", 'Wo'=>"\N{U+30F2}", 'N6'=>"\N{U+30F3}", 'Vu'=>"\N{U+30F4}", 'KA'=>"\N{U+30F5}", 'KE'=>"\N{U+30F6}", 'Va'=>"\N{U+30F7}", 'Vi'=>"\N{U+30F8}", 'Ve'=>"\N{U+30F9}", 'Vo'=>"\N{U+30FA}", '.6'=>"\N{U+30FB}", '-6'=>"\N{U+30FC}", '*6'=>"\N{U+30FD}", '+6'=>"\N{U+30FE}", 'b4'=>"\N{U+3105}", 'p4'=>"\N{U+3106}", 'm4'=>"\N{U+3107}", 'f4'=>"\N{U+3108}", 'd4'=>"\N{U+3109}", 't4'=>"\N{U+310A}", 'n4'=>"\N{U+310B}", 'l4'=>"\N{U+310C}", 'g4'=>"\N{U+310D}", 'k4'=>"\N{U+310E}", 'h4'=>"\N{U+310F}", 'j4'=>"\N{U+3110}", 'q4'=>"\N{U+3111}", 'x4'=>"\N{U+3112}", 'zh'=>"\N{U+3113}", 'ch'=>"\N{U+3114}", 'sh'=>"\N{U+3115}", 'r4'=>"\N{U+3116}", 'z4'=>"\N{U+3117}", 'c4'=>"\N{U+3118}", 's4'=>"\N{U+3119}", 'a4'=>"\N{U+311A}", 'o4'=>"\N{U+311B}", 'e4'=>"\N{U+311C}", 'ai'=>"\N{U+311E}", 'ei'=>"\N{U+311F}", 'au'=>"\N{U+3120}", 'ou'=>"\N{U+3121}", 'an'=>"\N{U+3122}", 'en'=>"\N{U+3123}", 'aN'=>"\N{U+3124}", 'eN'=>"\N{U+3125}", 'er'=>"\N{U+3126}", 'i4'=>"\N{U+3127}", 'u4'=>"\N{U+3128}", 'iu'=>"\N{U+3129}", 'v4'=>"\N{U+312A}", 'nG'=>"\N{U+312B}", 'gn'=>"\N{U+312C}", '1c'=>"\N{U+3220}", '2c'=>"\N{U+3221}", '3c'=>"\N{U+3222}", '4c'=>"\N{U+3223}", '5c'=>"\N{U+3224}", '6c'=>"\N{U+3225}", '7c'=>"\N{U+3226}", '8c'=>"\N{U+3227}", '9c'=>"\N{U+3228}", 'ff'=>"\N{U+FB00}", 'fi'=>"\N{U+FB01}", 'fl'=>"\N{U+FB02}", 'ft'=>"\N{U+FB05}", 'st'=>"\N{U+FB06}", ); # loading # a few modifications away from something in Alias.pm due to nelhage(?) my $cfg = BarnOwl::get_config_dir(); my $digfile = "$cfg/digraphs"; if(-r $digfile) { open(my $fh, "<:encoding(UTF-8)", $digfile) or die("Unable to read $digfile$!\n"); while(defined(my $line = <$fh>)) { my ($dig, $res) = split(/\s+/, $line); my $chrres = chr($res); # some inane haxx that fixes codepoints in 128~255 utf8::upgrade($chrres); $digraphs{$dig} = $chrres; } close($fh); } sub replace_digraph { # There exist things that, if you do them inside save_excursion, cause a segfault. Or something. # So... set_mark(); point_move(-2); my $s = get_region(); my $len = length $s; my $res = undef; if (length $s == 2) { $res = $digraphs{$s}; $res = $digraphs{reverse $s} if !defined($res); } # BarnOwl::popless_text("s = $s (length: $len), res = $res"); if (defined($res)) { replace_region($res); point_move(1); } else { point_move(2); } } BarnOwl::new_command('replace-digraph' => \&replace_digraph, { summary => "Replace text before the cursor with its digraph", usage => "replace-digraph", description => "Replace text before the cursor with its digraph", }); 1;