pax_global_header00006660000000000000000000000064132222030500014477gustar00rootroot0000000000000052 comment=f682737eb22e53ff056760f7c62a2813e0f7381d tran-3/000077500000000000000000000000001322220305000121475ustar00rootroot00000000000000tran-3/.gitignore000066400000000000000000000000271322220305000141360ustar00rootroot00000000000000*~ DEADJOE data/hangul tran-3/LICENSE000066400000000000000000000020001322220305000131440ustar00rootroot00000000000000Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. tran-3/Makefile000066400000000000000000000004231322220305000136060ustar00rootroot00000000000000all: scripts tran.1 SRC = $(filter-out $(wildcard gen/*~) $(wildcard gen/.*),$(wildcard gen/*)) GEN = $(SRC:gen/%=data/%) scripts: ${GEN} data/%: gen/% $< >$@ tran.1: tran.pod pod2man -c tran -s 1 -n tran $< >$@ clean: rm -rf ${GEN} tran.1 .PHONY: all scripts clean tran-3/README000066400000000000000000000027641322220305000130400ustar00rootroot00000000000000This tool can transliterate/transcribe text both ways between the Latin script and: greek: γρεεκ cyrillic: цыриллиц devanagari: दएवअनअगअरइ futhark: ᚠᚢᚦᚨᚱᚲ hiragana: ひらがな katakana: カタカナ hangul: 항울 old italic: 𐌏𐌋𐌃 𐌉𐌕𐌀𐌋𐌉𐌂 gothic: 𐌲𐍉𐌸𐌹𐌺 ascii (dropping accents, expanding digraphs) fullwidth ꜱᴍᴀʟʟᴄᴀᴘꜱ Unicode Plane 1 mathematical characters: 𝐛𝐨𝐥𝐝, 𝑖𝑡𝑎𝑙𝑖𝑐, 𝒃𝒐𝒍𝒅 𝒊𝒕𝒂𝒍𝒊𝒄, 𝓈𝒸𝓇𝒾𝓅𝓉, 𝓫𝓸𝓵𝓭 𝓼𝓬𝓻𝓲𝓹𝓽, 𝔣𝔯𝔞𝔨𝔱𝔲𝔯, 𝕕𝕠𝕦𝕓𝕝𝕖-𝕤𝕥𝕣𝕦𝕔𝕜, 𝖇𝖔𝖑𝖉 𝖋𝖗𝖆𝖐𝖙𝖚𝖗, 𝗌𝖺𝗇𝗌-𝗌𝖾𝗋𝗂𝖿, 𝘀𝗮𝗻𝘀-𝘀𝗲𝗿𝗶𝗳 𝗯𝗼𝗹𝗱, 𝘴𝘢𝘯𝘴-𝘴𝘦𝘳𝘪𝘧 𝘪𝘵𝘢𝘭𝘪𝘤, 𝙨𝙖𝙣𝙨-𝙨𝙚𝙧𝙞𝙛 𝙗𝙤𝙡𝙙 𝙞𝙩𝙖𝙡𝙞𝙘, 𝚖𝚘𝚗𝚘𝚜𝚙𝚊𝚌𝚎 (beware, many of your recipients may lack fonts necessary to display these) Enclosed alphanumerics: circled: ⓒⓘⓡⓒⓛⓔⓓ parenthesized: ⒫⒜⒭⒠⒩⒯⒣⒠⒮⒤⒵⒠⒟ squared: 🅂🅀🅄🄰🅁🄴🄳 negative circled: 🅝🅔🅖🅐🅣🅘🅥🅔 🅒🅘🅡🅒🅛🅔🅓 negative squared: 🅽🅴🅶🅰🆃🅸🆅🅴 🆂🆀🆄🅰🆁🅴🅳 regional indicators: 🇷🇪🇬🇮🇴🇳🇦🇱 🇮🇳🇩🇮🇨🇦🇹🇴🇷🇸 tran-3/data/000077500000000000000000000000001322220305000130605ustar00rootroot00000000000000tran-3/data/ascii000066400000000000000000000050041322220305000140720ustar00rootroot00000000000000SCRIPT ascii # Fallbacks from latin to 7-bit ascii. | < ¦ par < § " < ¨ (C) < © << < « (R) < ® +/- < ± ^2 < ² ^3 < ³ ' < ´ PI < ¶ , < ¸ ^1 < ¹ >> < » 1/4 < ¼ 1/2 < ½ 3/4 < ¾ x < × ss < ß a < à a < á a < â a < ã ae < ä a < å ae < æ c < ç e < è e < é e < ê e < ë i < ì i < í i < î i < ï d < ð n < ñ o < ò o < ó o < ô o < õ oe < ö / < ÷ o < ø u < ù u < ú u < û ue < ü y < ý y < ÿ a < ā a < ă a < ą c < ć c < ĉ c < ċ c < č d < ď d < đ e < ē e < ĕ e < ė e < ę e < ě g < ĝ g < ğ g < ġ g < ģ h < ĥ h < ħ i < ĩ i < ī i < ĭ i < į i < ı ij < ij j < ĵ k < ķ ! < ¡ c < ¢ $ < ¤ Yen < ¥ a < ª ! < ¬ - < ­ - < ¯ deg < ° u < µ . < · ? < ¿ th < þ k < ĸ l < ĺ l < ļ l < ľ l < ŀ l < ł n < ń n < ņ n < ň n < ʼn ng < ŋ o < ō o < ŏ o < ő oe < œ r < ŕ r < ŗ r < ř s < ś s < ŝ s < ş s < š t < ţ t < ť t < ŧ u < ũ u < ū u < ŭ u < ů u < ű u < ų w < ŵ y < ŷ z < ź z < ż z < ž s < ſ b < ƀ b < ƃ 6 < ƅ C < ƈ d < ƌ d < ƍ f < ƒ hv < ƕ k < ƙ l < ƚ l < ƛ n < ƞ o < ơ oi < ƣ p < ƥ s < ƨ e < ƪ t < ƫ t < ƭ u < ư y < ƴ z < ƶ ez < ƹ ez < ƺ 2 < ƻ 5 < ƽ s < ƾ L < £ o < º p < ƿ I < ǀ II < ǁ != < ǂ ! < ǃ dz < dž lj < lj nj < nj a < ǎ i < ǐ o < ǒ u < ǔ u < ǖ u < ǘ u < ǚ u < ǜ e < ǝ a < ǟ a < ǡ ae < ǣ g < ǥ g < ǧ k < ǩ o < ǫ o < ǭ ez < ǯ j < ǰ dz < dz g < ǵ n < ǹ a < ǻ ae < ǽ o < ǿ ^ < ˆ ' < ˊ ` < ˋ , < ˏ ~ < ˜ " < ˝ ` < ˞ ' < ˟ " < ˮ a < ȁ a < ȃ e < ȅ e < ȇ i < ȉ i < ȋ o < ȍ o < ȏ r < ȑ r < ȓ u < ȕ u < ȗ s < ș t < ț 3 < ȝ h < ȟ d < ȡ ou < ȣ z < ȥ a < ȧ e < ȩ o < ȫ o < ȭ o < ȯ o < ȱ y < ȳ l < ȴ n < ȵ t < ȶ a < ɐ a < ɑ a < ɒ b < ɓ o < ɔ c < ɕ d < ɖ d < ɗ e < ɘ e < ə e < ɚ e < ɛ e < ɜ e < ɝ e < ɞ j < ɟ g < ɠ g < ɡ G < ɢ g < ɣ h < ɥ h < ɦ h < ɧ i < ɨ i < ɩ I < ɪ l < ɫ l < ɬ l < ɭ lz < ɮ m < ɯ m < ɰ m < ɱ n < ɲ n < ɳ N < ɴ o < ɵ OE < ɶ O < ɷ ph < ɸ r < ɹ r < ɺ r < ɻ r < ɼ r < ɽ r < ɾ r < ɿ R < ʀ R < ʁ s < ʂ sh < ʃ s < ʄ s < ʅ s < ʆ t < ʇ t < ʈ u < ʉ u < ʊ v < ʋ v < ʌ w < ʍ y < ʎ Y < ʏ z < ʐ z < ʑ zh < ʒ zh < ʓ ? < ʔ C < ʗ B < ʙ e < ʚ g < ʛ H < ʜ j < ʝ k < ʞ L < ʟ q < ʠ ? < ʡ dz < ʣ dzh < ʤ dz < ʥ ts < ʦ th < ʧ tc < ʨ tn < ʩ ls < ʪ lz < ʫ ww < ʬ mm < ʭ h < ʮ h < ʯ h < ʰ h < ʱ j < ʲ r < ʳ r < ʴ r < ʵ R < ʶ w < ʷ y < ʸ ' < ʹ " < ʺ ` < ʻ ' < ʼ ` < ʽ ' < ʾ ` < ʿ <- < ˂ -> < ˃ ^ < ˄ v < ˅ v < ˇ + < ˖ - < ˗ ~ < ≈ = < ≡ << < ≪ >> < ≫ < < ≺ > < ≻ tran-3/data/cyrillic000066400000000000000000000023751322220305000146240ustar00rootroot00000000000000SCRIPT cyrillic # Based on BGN/PCGN romanization for Russian. # Ё uses yo instead of ë. What did the BGN think? а a б b в v г g д d #[\vйьъ^]е ye #### FIXME - should depend on context #[^\vйьъ^]е e е > e е < ye е < ie ев eu #BGN [\vйьъ^]ё yë #BGN [^\vйьъ^]ё ë ё yo ж zh з z и i #й[ауыэ] y∙ #й[^ауыэ] y й > y ##### FIXME, should work both ways й < j к k кс x к < q л l л < w м m н n о o п p р r р < rr с s т t у u ф f х kh х < h ц < c ц ts ч ch кр chr ш sh щ shch ъ > ” #ы[ауыэ] y∙ #ы[^ауыэ] y ы y Ь > ’ э e ю yu ю < iu я ya я < ia тс t∙s шч sh∙ch # Ukrainian є > e єв > eu і > i ї > ji ґ > g # Rare non-Slavic. ӑ > a ä > a ә > a ӛ > a ӕ > ae ғ > gh ӷ > g ҕ > g ӗ > ye ҽ > ts ҿ > ch ӂ > g җ > zhj ӝ > dz ҙ > dh ӟ > z ӡ > dz ӥ > y ӣ > i ӏ > NULL ҋ > j қ > qa ҟ > k ҡ > q ӄ > q ҝ > g ӆ > l ӎ > m ҥ > ng ң > ng ӊ > n ӈ > ng ӧ > a ө > oe ӫ > oe ҩ > o Ҧ > p ҏ > r ҫ > th ҭ > t' ӳ > y ӱ > y ӯ > ø ү > ue ұ > u ҳ > kh һ > shh ҵ > ts' ӵ > ch ҷ > j ӌ > dz ҹ > g ӹ > i ҍ > ' ӭ > e #Archaic. ҁ > ch ѹ > u ѡ > o ѿ > ot ѻ > o ѣ > ya ѥ > ie #ѫ hrm, how to transcribe it? #ѭ ѯ > x ѱ > ps ѳ > th ѵ > i Ѷ > i tran-3/data/devanagari000066400000000000000000000011451322220305000151050ustar00rootroot00000000000000SCRIPT devanagari #Vowels अ a आ ā इ i ई ī उ u ऊ ū ए e ऐ ai ओ o औ au ऋ ṛ ॠ ṝ ऌ ḷ ॡ ḹ अं ṃ अः ḥ #Consonants क k ख kh ग g घ gh ङ ṅ च c छ ch ज j झ jh ञ ñ ट ṭ ठ ṭh ड ḍ ढ ḍh ण ṇ त t थ th द d ध dh न n प p फ ph ब b भ bh म m य y र r ल l व v व < w श sh ष ṣ स s ह h #Consonant Clusters क्ष ksh त्र tr ज्ञ gy श्र shr #Other Consonants क़ q ख़ > kh ग़ > gh ड़ > r ढ़ > rh ज़ z फ़ f झ़ zh #ड़ .D/R #ढ़ .Dh/Rh कस < x tran-3/data/enclosed000066400000000000000000000040551322220305000146030ustar00rootroot00000000000000NOLOWER SCRIPT circled ⊕ + ⊖ - ⊗ × ⊘ / ⊙ ⋅ ⊚ ∘ ⊛ * ⊜ = ⊝ – ⓪ 0 ① 1 ② 2 ③ 3 ④ 4 ⑤ 5 ⑥ 6 ⑦ 7 ⑧ 8 ⑨ 9 Ⓐ A Ⓑ B Ⓒ C Ⓓ D Ⓔ E Ⓕ F Ⓖ G Ⓗ H Ⓘ I Ⓙ J Ⓚ K Ⓛ L Ⓜ M Ⓝ N Ⓞ O Ⓟ P Ⓠ Q Ⓡ R Ⓢ S Ⓣ T Ⓤ U Ⓥ V Ⓦ W Ⓧ X Ⓨ Y Ⓩ Z ⓐ a ⓑ b ⓒ c ⓓ d ⓔ e ⓕ f ⓖ g ⓗ h ⓘ i ⓙ j ⓚ k ⓛ l ⓜ m ⓝ n ⓞ o ⓟ p ⓠ q ⓡ r ⓢ s ⓣ t ⓤ u ⓥ v ⓦ w ⓧ x ⓨ y ⓩ z ⛒ ⛌ ✪ ☆ ⦶ | ⦷ ∥ ⦸ \ ⦹ ⟂ ⦼ % ⦾ ◦ ⦿ • ⧀ < ⧁ > ⨸ ÷ SCRIPT parenthesized # 0 is missing! ⑴ 1 ⑵ 2 ⑶ 3 ⑷ 4 ⑸ 5 ⑹ 6 ⑺ 7 ⑻ 8 ⑼ 9 🄐 A 🄑 B 🄒 C 🄓 D 🄔 E 🄕 F 🄖 G 🄗 H 🄘 I 🄙 J 🄚 K 🄛 L 🄜 M 🄝 N 🄞 O 🄟 P 🄠 Q 🄡 R 🄢 S 🄣 T 🄤 U 🄥 V 🄦 W 🄧 X 🄨 Y 🄩 Z ⒜ a ⒝ b ⒞ c ⒟ d ⒠ e ⒡ f ⒢ g ⒣ h ⒤ i ⒥ j ⒦ k ⒧ l ⒨ m ⒩ n ⒪ o ⒫ p ⒬ q ⒭ r ⒮ s ⒯ t ⒰ u ⒱ v ⒲ w ⒳ x ⒴ y ⒵ z ALLUPPER SCRIPT squared ⊞ + ⊟ - ⊠ × ⊡ ⋅ ⛝ ☓ ⟎ ∨ ⟏ ∧ ⧄ / ⧅ \ ⧆ * ⧇ ◦ 🄰 A 🄱 B 🄲 C 🄳 D 🄴 E 🄵 F 🄶 G 🄷 H 🄸 I 🄹 J 🄺 K 🄻 L 🄼 M 🄽 N 🄾 O 🄿 P 🅀 Q 🅁 R 🅂 S 🅃 T 🅄 U 🅅 V 🅆 W 🅇 X 🅈 Y 🅉 Z SCRIPT negative circled #⓿ 0 #disabled, lone 0 looks iffy 🅐 A 🅑 B 🅒 C 🅓 D 🅔 E 🅕 F 🅖 G 🅗 H 🅘 I 🅙 J 🅚 K 🅛 L 🅜 M 🅝 N 🅞 O 🅟 P 🅠 Q 🅡 R 🅢 S 🅣 T 🅤 U 🅥 V 🅦 W 🅧 X 🅨 Y 🅩 Z SCRIPT negative squared ❎ ❌ 🅰 A 🅱 B 🅲 C 🅳 D 🅴 E 🅵 F 🅶 G 🅷 H 🅸 I 🅹 J 🅺 K 🅻 L 🅼 M 🅽 N 🅾 O 🅿 P 🆀 Q 🆁 R 🆂 S 🆃 T 🆄 U 🆅 V 🆆 W 🆇 X 🆈 Y 🆉 Z SCRIPT regional indicators # Note: these are supposed to be converted to flags via ligatures whenever # a pair matches a country code (like CN, PL or US). I haven't seen this # in action, though. 🇦 A 🇧 B 🇨 C 🇩 D 🇪 E 🇫 F 🇬 G 🇭 H 🇮 I 🇯 J 🇰 K 🇱 L 🇲 M 🇳 N 🇴 O 🇵 P 🇶 Q 🇷 R 🇸 S 🇹 T 🇺 U 🇻 V 🇼 W 🇽 X 🇾 Y 🇿 Z tran-3/data/fullwidth000066400000000000000000000013741322220305000150120ustar00rootroot00000000000000SCRIPT fullwidth ALIAS wide #CJK "fullwidth" (ie, doublewidth) ASCII characters U+3000 U+20 # space ! ! " " # U+23 # hash $ $ % % & & ' ' ( ( ) ) * * + + , , - - . . / / 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 : : ; ; < < = = > > ? ? @ @ #A A #B B #C C #D D #E E #F F #G G #H H #I I #J J #K K #L L #M M #N N #O O #P P #Q Q #R R #S S #T T #U U #V V #W W #X X #Y Y #Z Z [ [ \ \ ] ] ^ ^ _ _ ` ` a a b b c c d d e e f f g g h h i i j j k k l l m m n n o o p p q q r r s s t t u u v v w w x x y y z z { { | | } } ~ ~ #non-ASCII ¢ ¢ £ £ ¬ ¬  ̄ ¯ ¦ ¦ ¥ ¥ ₩ ₩ tran-3/data/futhark000066400000000000000000000015561322220305000144560ustar00rootroot00000000000000SCRIPT futhark ALIAS runes ᛇ ae ᛇ < æ ᚨ a ᛒ b ᚲ < c ᚲ < ck ᛞ d ᛖ e ᚠ f ᚷ g ᚺ h ᛁ i ᛃ j ᚲ k ᛚ l ᛗ m ᛜ ng ᛜ < ŋ ᚾ n ᛟ o ᚠ < ph ᛈ p ᛩ q ᚱ r ᛊ s ᚦ th ᚦ < þ ᛏ t ᚢ u ᚡ v ᚹ w ᚲᛊ x ᚣ y #Anglo-Saxon ᛉ z #Other time periods ᚤ > y ᚥ > w ᚧ ð #medieval ᚩ > o ᚪ > a ᚫ > ae ᚬ > o ᚭ > o ᚮ > o ᚯ > oe ᚰ > on ᚳ > c ᚵ > g ᚶ > ng ᚸ > g ᚻ > h ᚼ > h ᚽ > h ᚿ > n ᛀ > n ᛂ > e ᛄ > j ᛅ > a ᛆ > a ᛋ > s ᛌ > s ᛍ > c ᛎ > z ᛐ > t ᛑ > d ᛔ > p ᛕ > p ᛘ > m ᛙ > m ᛛ > l ᛝ > ng ᛠ > ea ᛡ > io ᛢ > cw ᛣ > k ᛤ > kk ᛥ > st ᛦ > r ᛧ > r ᛨ > r ᛪ > x #Punctuation ᛫ > U+0020 ᛬ > . ᛭ > + #Calendar year symbols #ᛮ > 17 #ᛯ > 18 #ᛰ > 19 #Tolkien's inventions ᛱ > k ᛲ > sh ᛳ > oo #Franks casket ᛴ > o ᛵ > i ᛶ > e ᛷ > a ᛸ > ae tran-3/data/gothic000066400000000000000000000004351322220305000142620ustar00rootroot00000000000000SCRIPT gothic 𐌰 a 𐌱 b 𐌲 g 𐌳 d 𐌴 e 𐌵 q 𐌶 z 𐌷 h 𐌸 < þ 𐌸 th 𐌹 i 𐌺 k 𐌺 < c 𐌺 < ck 𐌻 l 𐌼 m 𐌽 n 𐌾 j 𐌿 u 𐍀 p 𐍁 > q # number 90 only 𐍂 r 𐍃 s 𐍄 t 𐍅 w 𐍆 f 𐍇 x 𐍈 < ƕ 𐍈 hw 𐍉 o 𐍊 < ϡ # number 900 only tran-3/data/greek000066400000000000000000000004301322220305000140750ustar00rootroot00000000000000SCRIPT greek α a β b β < v γ g δ d ε e ζ z ζ < dz η ē θ th ι i κ < c κ k λ l μ m ν n ξ x ο o π p ρ r ρ < rh σ s τ t υ y υ < w φ ph φ < f χ ch χ < h ψ ps ω > o αι ae γγ ng ου u ȷ j ϙ q ϝ > w ϛ > st ͱ > h ϻ > s ϸ > sh ϟ > q ϡ > ss tran-3/data/hiragana000066400000000000000000000017001322220305000145530ustar00rootroot00000000000000SCRIPT hiragana あ a い i う u え e お o か ka き ki く ku け ke こ ko きゃ kya きゅ kyu きょ kyo さ sa し shi す su せ se そ so しゃ sha しゅ shu しょ sho た ta ち chi つ tsu て te と to ちゃ cha ちゅ chu ちょ cho な na に ni ぬ nu ね ne の no にゃ nya にゅ nyu にょ nyo は ha ひ hi ふ fu へ he ほ ho ひゃ hya ひゅ hyu ひょ hyo ま ma み mi む mu め me も mo みゃ mya みゅ myu みょ myo や ya ゆ yu よ yo ら ra り ri る ru れ re ろ ro りゃ rya りゅ ryu りょ ryo わ wa ゐ > wi #obsolete ゑ > we #obsolete を wo #spelt "o" ん n が ga ぎ gi ぐ gu げ ge ご go ぎゃ gya ぎゅ gyu ぎょ gyo ざ za じ ji ず zu ぜ ze ぞ zo じゃ ja じゅ ju じょ jo だ da ぢ > ji づ > zu で de ど do ぢゃ > ja ぢゅ > ju ぢょ > jo ば ba び bi ぶ bu べ be ぼ bo びゃ bya びゅ byu びょ byo ぱ pa ぴ pi ぷ pu ぺ pe ぽ po ぴゃ pya ぴゅ pyu ぴょ pyo tran-3/data/katakana000066400000000000000000000024771322220305000145700ustar00rootroot00000000000000SCRIPT katakana #Standard katakana. ア a イ i ウ u エ e オ o カ ka キ ki ク ku ケ ke コ ko キャ kya キュ kyu キョ kyo サ sa シ shi ス su セ se ソ so シャ sha シュ shu ショ sho タ ta チ chi ツ tsu テ te ト to チャ cha チュ chu チョ cho ナ na ニ ni ヌ nu ネ ne ノ no ニャ nya ニュ nyu ニョ nyo ハ ha ヒ hi フ fu ヘ he ホ ho ヒャ hya ヒュ hyu ヒョ hyo マ ma ミ mi ム mu メ me モ mo ミャ mya ミュ myu ミョ myo ヤ ya ユ yu ヨ yo ラ ra リ ri ル ru レ re ロ ro リャ rya リュ ryu リョ ryo ワ wa ヰ > wi #obsolete ヱ > we #obsolete ヲ > wo #spelt "o" ン n ガ ga ギ gi グ gu ゲ ge ゴ go ギャ gya ギュ gyu ギョ gyo ザ za ジ ji ズ zu ゼ ze ゾ zo ジャ ja ジュ ju ジョ jo ダ da ヂ > ji ヅ > zu デ de ド do ヂャ > ja ヂュ > ju ヂョ > jo バ ba ビ bi ブ bu ベ be ボ bo ビャ bya ビュ byu ビョ byo パ pa ピ pi プ pu ペ pe ポ po ピャ pya ピュ pyu ピョ pyo #Extended katakana イェ ye ウィ wi ウェ we ウォ wo ヷ > va #obsolete ヸ > vi #obsolete ヹ > ve #obsolete ヺ > vo #obsolete ヴァ va ヴィ vi ヴ vu ヴェ ve ヴォ vo シェ she ジェ je チェ che ティ ti トゥ tu テュ tyu ディ di ドゥ du デュ dyu ツァ tsa ツェ tse ツォ tso ファ fa フィ fi フェ fe フォ fo フュ fyu tran-3/data/math000066400000000000000000000173351322220305000137450ustar00rootroot00000000000000NOLOWER # glibc doesn't support tolower/toupper for these scripts SCRIPT bold 𝐀 A 𝐁 B 𝐂 C 𝐃 D 𝐄 E 𝐅 F 𝐆 G 𝐇 H 𝐈 I 𝐉 J 𝐊 K 𝐋 L 𝐌 M 𝐍 N 𝐎 O 𝐏 P 𝐐 Q 𝐑 R 𝐒 S 𝐓 T 𝐔 U 𝐕 V 𝐖 W 𝐗 X 𝐘 Y 𝐙 Z 𝐚 a 𝐛 b 𝐜 c 𝐝 d 𝐞 e 𝐟 f 𝐠 g 𝐡 h 𝐢 i 𝐣 j 𝐤 k 𝐥 l 𝐦 m 𝐧 n 𝐨 o 𝐩 p 𝐪 q 𝐫 r 𝐬 s 𝐭 t 𝐮 u 𝐯 v 𝐰 w 𝐱 x 𝐲 y 𝐳 z 𝚨 Α 𝚩 Β 𝚪 Γ 𝚫 Δ 𝚬 Ε 𝚭 Ζ 𝚮 Η 𝚯 Θ 𝚰 Ι 𝚱 Κ 𝚲 Λ 𝚳 Μ 𝚴 Ν 𝚵 Ξ 𝚶 Ο 𝚷 Π 𝚸 Ρ 𝚹 ϴ 𝚺 Σ 𝚻 Τ 𝚼 Υ 𝚽 Φ 𝚾 Χ 𝚿 Ψ 𝛀 Ω 𝛁 ∇ 𝛂 α 𝛃 β 𝛄 γ 𝛅 δ 𝛆 ε 𝛇 ζ 𝛈 η 𝛉 θ 𝛊 ι 𝛋 κ 𝛌 λ 𝛍 μ 𝛎 ν 𝛏 ξ 𝛐 ο 𝛑 π 𝛒 ρ 𝛓 ς 𝛔 σ 𝛕 τ 𝛖 υ 𝛗 φ 𝛘 χ 𝛙 ψ 𝛚 ω 𝛛 ∂ 𝛜 ϵ 𝛝 ϑ 𝛞 ϰ 𝛟 ϕ 𝛠 ϱ 𝛡 ϖ 𝟊 Ϝ 𝟋 ϝ 𝟎 0 𝟏 1 𝟐 2 𝟑 3 𝟒 4 𝟓 5 𝟔 6 𝟕 7 𝟖 8 𝟗 9 SCRIPT italic 𝐴 A 𝐵 B 𝐶 C 𝐷 D 𝐸 E 𝐹 F 𝐺 G 𝐻 H 𝐼 I 𝐽 J 𝐾 K 𝐿 L 𝑀 M 𝑁 N 𝑂 O 𝑃 P 𝑄 Q 𝑅 R 𝑆 S 𝑇 T 𝑈 U 𝑉 V 𝑊 W 𝑋 X 𝑌 Y 𝑍 Z 𝑎 a 𝑏 b 𝑐 c 𝑑 d 𝑒 e 𝑓 f 𝑔 g ℎ h 𝑖 i 𝑗 j 𝑘 k 𝑙 l 𝑚 m 𝑛 n 𝑜 o 𝑝 p 𝑞 q 𝑟 r 𝑠 s 𝑡 t 𝑢 u 𝑣 v 𝑤 w 𝑥 x 𝑦 y 𝑧 z 𝚤 ı 𝚥 ȷ 𝛢 Α 𝛣 Β 𝛤 Γ 𝛥 Δ 𝛦 Ε 𝛧 Ζ 𝛨 Η 𝛩 Θ 𝛪 Ι 𝛫 Κ 𝛬 Λ 𝛭 Μ 𝛮 Ν 𝛯 Ξ 𝛰 Ο 𝛱 Π 𝛲 Ρ 𝛳 ϴ 𝛴 Σ 𝛵 Τ 𝛶 Υ 𝛷 Φ 𝛸 Χ 𝛹 Ψ 𝛺 Ω 𝛻 ∇ 𝛼 α 𝛽 β 𝛾 γ 𝛿 δ 𝜀 ε 𝜁 ζ 𝜂 η 𝜃 θ 𝜄 ι 𝜅 κ 𝜆 λ 𝜇 μ 𝜈 ν 𝜉 ξ 𝜊 ο 𝜋 π 𝜌 ρ 𝜍 ς 𝜎 σ 𝜏 τ 𝜐 υ 𝜑 φ 𝜒 χ 𝜓 ψ 𝜔 ω 𝜕 ∂ 𝜖 ϵ 𝜗 ϑ 𝜘 ϰ 𝜙 ϕ 𝜚 ϱ 𝜛 ϖ SCRIPT bold italic 𝑨 A 𝑩 B 𝑪 C 𝑫 D 𝑬 E 𝑭 F 𝑮 G 𝑯 H 𝑰 I 𝑱 J 𝑲 K 𝑳 L 𝑴 M 𝑵 N 𝑶 O 𝑷 P 𝑸 Q 𝑹 R 𝑺 S 𝑻 T 𝑼 U 𝑽 V 𝑾 W 𝑿 X 𝒀 Y 𝒁 Z 𝒂 a 𝒃 b 𝒄 c 𝒅 d 𝒆 e 𝒇 f 𝒈 g 𝒉 h 𝒊 i 𝒋 j 𝒌 k 𝒍 l 𝒎 m 𝒏 n 𝒐 o 𝒑 p 𝒒 q 𝒓 r 𝒔 s 𝒕 t 𝒖 u 𝒗 v 𝒘 w 𝒙 x 𝒚 y 𝒛 z 𝜜 Α 𝜝 Β 𝜞 Γ 𝜟 Δ 𝜠 Ε 𝜡 Ζ 𝜢 Η 𝜣 Θ 𝜤 Ι 𝜥 Κ 𝜦 Λ 𝜧 Μ 𝜨 Ν 𝜩 Ξ 𝜪 Ο 𝜫 Π 𝜬 Ρ 𝜭 ϴ 𝜮 Σ 𝜯 Τ 𝜰 Υ 𝜱 Φ 𝜲 Χ 𝜳 Ψ 𝜴 Ω 𝜵 ∇ 𝜶 α 𝜷 β 𝜸 γ 𝜹 δ 𝜺 ε 𝜻 ζ 𝜼 η 𝜽 θ 𝜾 ι 𝜿 κ 𝝀 λ 𝝁 μ 𝝂 ν 𝝃 ξ 𝝄 ο 𝝅 π 𝝆 ρ 𝝇 ς 𝝈 σ 𝝉 τ 𝝊 υ 𝝋 φ 𝝌 χ 𝝍 ψ 𝝎 ω 𝝏 ∂ 𝝐 ϵ 𝝑 ϑ 𝝒 ϰ 𝝓 ϕ 𝝔 ϱ 𝝕 ϖ SCRIPT script 𝒜 A ℬ B 𝒞 C 𝒟 D ℰ E ℱ F 𝒢 G ℋ H ℐ I 𝒥 J 𝒦 K ℒ L ℳ M 𝒩 N 𝒪 O 𝒫 P 𝒬 Q ℛ R 𝒮 S 𝒯 T 𝒰 U 𝒱 V 𝒲 W 𝒳 X 𝒴 Y 𝒵 Z 𝒶 a 𝒷 b 𝒸 c 𝒹 d ℯ e 𝒻 f ℊ g 𝒽 h 𝒾 i 𝒿 j 𝓀 k 𝓁 l 𝓂 m 𝓃 n ℴ o 𝓅 p 𝓆 q 𝓇 r 𝓈 s 𝓉 t 𝓊 u 𝓋 v 𝓌 w 𝓍 x 𝓎 y 𝓏 z SCRIPT bold script 𝓐 A 𝓑 B 𝓒 C 𝓓 D 𝓔 E 𝓕 F 𝓖 G 𝓗 H 𝓘 I 𝓙 J 𝓚 K 𝓛 L 𝓜 M 𝓝 N 𝓞 O 𝓟 P 𝓠 Q 𝓡 R 𝓢 S 𝓣 T 𝓤 U 𝓥 V 𝓦 W 𝓧 X 𝓨 Y 𝓩 Z 𝓪 a 𝓫 b 𝓬 c 𝓭 d 𝓮 e 𝓯 f 𝓰 g 𝓱 h 𝓲 i 𝓳 j 𝓴 k 𝓵 l 𝓶 m 𝓷 n 𝓸 o 𝓹 p 𝓺 q 𝓻 r 𝓼 s 𝓽 t 𝓾 u 𝓿 v 𝔀 w 𝔁 x 𝔂 y 𝔃 z SCRIPT fraktur 𝔄 A 𝔅 B ℭ C 𝔇 D 𝔈 E 𝔉 F 𝔊 G ℌ H ℑ I 𝔍 J 𝔎 K 𝔏 L 𝔐 M 𝔑 N 𝔒 O 𝔓 P 𝔔 Q ℜ R 𝔖 S 𝔗 T 𝔘 U 𝔙 V 𝔚 W 𝔛 X 𝔜 Y ℨ Z 𝔞 a 𝔟 b 𝔠 c 𝔡 d 𝔢 e 𝔣 f 𝔤 g 𝔥 h 𝔦 i 𝔧 j 𝔨 k 𝔩 l 𝔪 m 𝔫 n 𝔬 o 𝔭 p 𝔮 q 𝔯 r 𝔰 s 𝔱 t 𝔲 u 𝔳 v 𝔴 w 𝔵 x 𝔶 y 𝔷 z SCRIPT double-struck 𝔸 A 𝔹 B ℂ C 𝔻 D 𝔼 E 𝔽 F 𝔾 G ℍ H 𝕀 I 𝕁 J 𝕂 K 𝕃 L 𝕄 M ℕ N 𝕆 O ℙ P ℚ Q ℝ R 𝕊 S 𝕋 T 𝕌 U 𝕍 V 𝕎 W 𝕏 X 𝕐 Y ℤ Z 𝕒 a 𝕓 b 𝕔 c 𝕕 d 𝕖 e 𝕗 f 𝕘 g 𝕙 h 𝕚 i 𝕛 j 𝕜 k 𝕝 l 𝕞 m 𝕟 n 𝕠 o 𝕡 p 𝕢 q 𝕣 r 𝕤 s 𝕥 t 𝕦 u 𝕧 v 𝕨 w 𝕩 x 𝕪 y 𝕫 z 𝟘 0 𝟙 1 𝟚 2 𝟛 3 𝟜 4 𝟝 5 𝟞 6 𝟟 7 𝟠 8 𝟡 9 SCRIPT bold fraktur 𝕬 A 𝕭 B 𝕮 C 𝕯 D 𝕰 E 𝕱 F 𝕲 G 𝕳 H 𝕴 I 𝕵 J 𝕶 K 𝕷 L 𝕸 M 𝕹 N 𝕺 O 𝕻 P 𝕼 Q 𝕽 R 𝕾 S 𝕿 T 𝖀 U 𝖁 V 𝖂 W 𝖃 X 𝖄 Y 𝖅 Z 𝖆 a 𝖇 b 𝖈 c 𝖉 d 𝖊 e 𝖋 f 𝖌 g 𝖍 h 𝖎 i 𝖏 j 𝖐 k 𝖑 l 𝖒 m 𝖓 n 𝖔 o 𝖕 p 𝖖 q 𝖗 r 𝖘 s 𝖙 t 𝖚 u 𝖛 v 𝖜 w 𝖝 x 𝖞 y 𝖟 z SCRIPT sans-serif 𝖠 A 𝖡 B 𝖢 C 𝖣 D 𝖤 E 𝖥 F 𝖦 G 𝖧 H 𝖨 I 𝖩 J 𝖪 K 𝖫 L 𝖬 M 𝖭 N 𝖮 O 𝖯 P 𝖰 Q 𝖱 R 𝖲 S 𝖳 T 𝖴 U 𝖵 V 𝖶 W 𝖷 X 𝖸 Y 𝖹 Z 𝖺 a 𝖻 b 𝖼 c 𝖽 d 𝖾 e 𝖿 f 𝗀 g 𝗁 h 𝗂 i 𝗃 j 𝗄 k 𝗅 l 𝗆 m 𝗇 n 𝗈 o 𝗉 p 𝗊 q 𝗋 r 𝗌 s 𝗍 t 𝗎 u 𝗏 v 𝗐 w 𝗑 x 𝗒 y 𝗓 z 𝟢 0 𝟣 1 𝟤 2 𝟥 3 𝟦 4 𝟧 5 𝟨 6 𝟩 7 𝟪 8 𝟫 9 SCRIPT sans-serif bold 𝗔 A 𝗕 B 𝗖 C 𝗗 D 𝗘 E 𝗙 F 𝗚 G 𝗛 H 𝗜 I 𝗝 J 𝗞 K 𝗟 L 𝗠 M 𝗡 N 𝗢 O 𝗣 P 𝗤 Q 𝗥 R 𝗦 S 𝗧 T 𝗨 U 𝗩 V 𝗪 W 𝗫 X 𝗬 Y 𝗭 Z 𝗮 a 𝗯 b 𝗰 c 𝗱 d 𝗲 e 𝗳 f 𝗴 g 𝗵 h 𝗶 i 𝗷 j 𝗸 k 𝗹 l 𝗺 m 𝗻 n 𝗼 o 𝗽 p 𝗾 q 𝗿 r 𝘀 s 𝘁 t 𝘂 u 𝘃 v 𝘄 w 𝘅 x 𝘆 y 𝘇 z 𝝖 Α 𝝗 Β 𝝘 Γ 𝝙 Δ 𝝚 Ε 𝝛 Ζ 𝝜 Η 𝝝 Θ 𝝞 Ι 𝝟 Κ 𝝠 Λ 𝝡 Μ 𝝢 Ν 𝝣 Ξ 𝝤 Ο 𝝥 Π 𝝦 Ρ 𝝧 ϴ 𝝨 Σ 𝝩 Τ 𝝪 Υ 𝝫 Φ 𝝬 Χ 𝝭 Ψ 𝝮 Ω 𝝯 ∇ 𝝰 α 𝝱 β 𝝲 γ 𝝳 δ 𝝴 ε 𝝵 ζ 𝝶 η 𝝷 θ 𝝸 ι 𝝹 κ 𝝺 λ 𝝻 μ 𝝼 ν 𝝽 ξ 𝝾 ο 𝝿 π 𝞀 ρ 𝞁 ς 𝞂 σ 𝞃 τ 𝞄 υ 𝞅 φ 𝞆 χ 𝞇 ψ 𝞈 ω 𝞉 ∂ 𝞊 ϵ 𝞋 ϑ 𝞌 ϰ 𝞍 ϕ 𝞎 ϱ 𝞏 ϖ 𝟬 0 𝟭 1 𝟮 2 𝟯 3 𝟰 4 𝟱 5 𝟲 6 𝟳 7 𝟴 8 𝟵 9 SCRIPT sans-serif italic 𝘈 A 𝘉 B 𝘊 C 𝘋 D 𝘌 E 𝘍 F 𝘎 G 𝘏 H 𝘐 I 𝘑 J 𝘒 K 𝘓 L 𝘔 M 𝘕 N 𝘖 O 𝘗 P 𝘘 Q 𝘙 R 𝘚 S 𝘛 T 𝘜 U 𝘝 V 𝘞 W 𝘟 X 𝘠 Y 𝘡 Z 𝘢 a 𝘣 b 𝘤 c 𝘥 d 𝘦 e 𝘧 f 𝘨 g 𝘩 h 𝘪 i 𝘫 j 𝘬 k 𝘭 l 𝘮 m 𝘯 n 𝘰 o 𝘱 p 𝘲 q 𝘳 r 𝘴 s 𝘵 t 𝘶 u 𝘷 v 𝘸 w 𝘹 x 𝘺 y 𝘻 z SCRIPT sans-serif bold italic 𝘼 A 𝘽 B 𝘾 C 𝘿 D 𝙀 E 𝙁 F 𝙂 G 𝙃 H 𝙄 I 𝙅 J 𝙆 K 𝙇 L 𝙈 M 𝙉 N 𝙊 O 𝙋 P 𝙌 Q 𝙍 R 𝙎 S 𝙏 T 𝙐 U 𝙑 V 𝙒 W 𝙓 X 𝙔 Y 𝙕 Z 𝙖 a 𝙗 b 𝙘 c 𝙙 d 𝙚 e 𝙛 f 𝙜 g 𝙝 h 𝙞 i 𝙟 j 𝙠 k 𝙡 l 𝙢 m 𝙣 n 𝙤 o 𝙥 p 𝙦 q 𝙧 r 𝙨 s 𝙩 t 𝙪 u 𝙫 v 𝙬 w 𝙭 x 𝙮 y 𝙯 z 𝞐 Α 𝞑 Β 𝞒 Γ 𝞓 Δ 𝞔 Ε 𝞕 Ζ 𝞖 Η 𝞗 Θ 𝞘 Ι 𝞙 Κ 𝞚 Λ 𝞛 Μ 𝞜 Ν 𝞝 Ξ 𝞞 Ο 𝞟 Π 𝞠 Ρ 𝞡 ϴ 𝞢 Σ 𝞣 Τ 𝞤 Υ 𝞥 Φ 𝞦 Χ 𝞧 Ψ 𝞨 Ω 𝞩 ∇ 𝞪 α 𝞫 β 𝞬 γ 𝞭 δ 𝞮 ε 𝞯 ζ 𝞰 η 𝞱 θ 𝞲 ι 𝞳 κ 𝞴 λ 𝞵 μ 𝞶 ν 𝞷 ξ 𝞸 ο 𝞹 π 𝞺 ρ 𝞻 ς 𝞼 σ 𝞽 τ 𝞾 υ 𝞿 φ 𝟀 χ 𝟁 ψ 𝟂 ω 𝟃 ∂ 𝟄 ϵ 𝟅 ϑ 𝟆 ϰ 𝟇 ϕ 𝟈 ϱ 𝟉 ϖ SCRIPT monospace 𝙰 A 𝙱 B 𝙲 C 𝙳 D 𝙴 E 𝙵 F 𝙶 G 𝙷 H 𝙸 I 𝙹 J 𝙺 K 𝙻 L 𝙼 M 𝙽 N 𝙾 O 𝙿 P 𝚀 Q 𝚁 R 𝚂 S 𝚃 T 𝚄 U 𝚅 V 𝚆 W 𝚇 X 𝚈 Y 𝚉 Z 𝚊 a 𝚋 b 𝚌 c 𝚍 d 𝚎 e 𝚏 f 𝚐 g 𝚑 h 𝚒 i 𝚓 j 𝚔 k 𝚕 l 𝚖 m 𝚗 n 𝚘 o 𝚙 p 𝚚 q 𝚛 r 𝚜 s 𝚝 t 𝚞 u 𝚟 v 𝚠 w 𝚡 x 𝚢 y 𝚣 z 𝟶 0 𝟷 1 𝟸 2 𝟹 3 𝟺 4 𝟻 5 𝟼 6 𝟽 7 𝟾 8 𝟿 9 tran-3/data/old_italic000066400000000000000000000004641322220305000151120ustar00rootroot00000000000000SCRIPT old italic 𐌀 a 𐌁 b 𐌂 c 𐌃 d 𐌄 e 𐌅 v 𐌆 z 𐌇 h 𐌈 < þ 𐌈 th 𐌉 i 𐌊 k 𐌋 l 𐌌 m 𐌍 n 𐌎 < š 𐌎 sh 𐌏 o 𐌐 p 𐌑 ś 𐌒 q 𐌓 r 𐌔 s 𐌕 t 𐌖 u 𐌗 x 𐌘 ph 𐌙 ch 𐌚 f 𐌛 ř 𐌜 ç 𐌝 í 𐌞 ú 𐌟 * 𐌠 > I 𐌡 > V 𐌢 > X 𐌣 > L tran-3/data/smallcaps000066400000000000000000000012301322220305000147560ustar00rootroot00000000000000NOLOWER SCRIPT smallcaps ALIAS small caps ᴀ a ʙ b ᴄ c ᴅ d ᴇ e ꜰ f ɢ g ʜ h ɪ i ᴊ j ᴋ k ʟ l ᴍ m ɴ n ᴏ o ᴘ p #'q' is missing, proposed for Unicode as ꞯ U+A7AF. ʀ r ꜱ s ᴛ t ᴜ u ᴠ v ᴡ w x < x # Same as regular lowercase. ʏ y ᴢ z ᴁ æ ɶ œ ᴆ ð ᴣ ʒ ⱻ ǝ ᴌ ł ᴐ ɔ ꟺ ɯ ᴦ γ ᴧ λ ᴨ π ᴪ ψ ꭥ ω ʛ ɠ ᴕ ȣ ᴚ ɹ ꝶ ꝵ A < A B < B C < C D < D E < E F < F G < G H < H I < I J < J K < K L < L M < M N < N O < O P < P Q < Q R < R S < S T < T U < U V < V W < W X < X Y < Y Z < Z Æ < Æ Œ < Œ Ð < Ð Ʒ < Ʒ Ǝ < Ǝ Ł < Ł Ɔ < Ɔ Ɯ < Ɯ Γ < Γ Λ < Λ Π < Π Ψ < Ψ Ω < Ω Ɠ < Ɠ Ȣ < Ȣ tran-3/gen/000077500000000000000000000000001322220305000127205ustar00rootroot00000000000000tran-3/gen/hangul000077500000000000000000000020421322220305000141220ustar00rootroot00000000000000#!/usr/bin/perl -w use strict; use open ':locale'; my @lead=('g','gg','n','d','dd','r','m','b','bb','s','ss','','j','jj','c', 'k','t','p','h'); my @vowel=('a','ae','ya','yae','eo','e','yeo','ye','o','wa','wae','oe','yo', 'u','weo','we','wi','yu','eu','yi','i'); my @tail=('','g','gg','gs','n','nj','nh','d','l','lg','lm','lb','ls','lt', 'lp','lh','m','b','bs','s','ss','ng','j','c','k','t','p','h'); sub u($) { return pack 'U', $_[0]; } my ($x,$y,$z); print "SCRIPT hangul\n"; print "\n#lone lead consonants\n"; for $x (0..$#lead) { $_=$lead[$x]; s/^$/*/;print u($x+0x1100),"\t>\t$_\n"; } print "\n#lone vowels\n"; for $x (0..$#vowel) { $_=$vowel[$x];s/^$/*/;print u($x+0x1161),"\t>\t$_\n"; } print "\n#lone tail consonants\n"; for $x (0..$#tail) { $_=$tail[$x]; s/^$/*/;print u($x+0x11A7),"\t>\t$_\n"; } print "\n#composed hangul\n"; for $x (0..$#lead) { for $y (0..$#vowel) { for $z (0..$#tail) { print u($x*588+$y*28+$z+0xAC00),"\t$lead[$x]$vowel[$y]$tail[$z]\n"; } } } tran-3/tran000077500000000000000000000104301322220305000130370ustar00rootroot00000000000000#!/usr/bin/perl -w -CIOE use strict; my $TARGET; my $DATA="data"; my ($H,$O)=('',''); while(@ARGV) { $_=shift; if (/^-t|--target$/) { # Deprecated and ignored. The syntax used to be: tran -t script } elsif (/^--data-dir$/) { @ARGV or die "$0: $_ requires an argument.\n"; $DATA=shift; } elsif (/^-d|--debug$/) { ($H,$O)=("\e[31m","\e[0m"); } elsif (/^-/) { die "$0: Unknown option: $_\n"; } else { $TARGET.=" $_"; } } my %tran=('latin'=>{}); my %alias; my $maxlen=0; defined $TARGET or $TARGET="latin"; $TARGET=~s/^\s*//; $TARGET="\L$TARGET"; sub tran_one { my ($l,$r,$ls,$rs)=@_; !defined ${$tran{$ls}}{$l} or die "Conflict for [$l] in $rs>$ls, it resolves to [${$tran{$ls}}{$l}] and [$r]\n"; $r =~ s/\*//; # '*' is the carrier for combining chars and empty string ${$tran{$ls}}{$l}=$r; length($l)<$maxlen or $maxlen=length($l); length($r)<$maxlen or $maxlen=length($r); } sub read_config_file($) { my ($f)=@_; undef my $SCRIPT; my $NOLOWER=0; unless (open F, ") { chomp; s/#.*//; s/^\s+//; s/\s+$//; next if /^$/; if (/^NOLOWER/) { $NOLOWER=1; next; } if (/^ALLUPPER/) { $NOLOWER=2; next; } if (m{^ALIAS(?:\s+|:\s*)([a-zA-Z0-9_/ -]+)$}) { $alias{"\L$1"}=$SCRIPT; next; } if (m{^SCRIPT(?:\s+|:\s*)([a-zA-Z0-9_/ -]+)$}) { $SCRIPT="\L$1"; !defined($tran{"$SCRIPT"}) or die "Script $SCRIPT defined twice, 2nd time in $f\n"; $tran{"$SCRIPT"}={}; next; } /(\S+)\s*(|<|>|=|\s)\s*(\S+)$/ or die "$f: cannot parse line: [$H$_$O]\n"; defined $SCRIPT or die "$f: character found before SCRIPT started\n"; my ($l, $dir, $r) = ($1, $2, $3); $l=~s/U\+([0-9a-fA-F]{2,6})/chr(hex($1))/eg; $r=~s/U\+([0-9a-fA-F]{2,6})/chr(hex($1))/eg; unless ($NOLOWER) { tran_one("\L$l", "\L$r", 'latin', $SCRIPT) unless $dir eq '<'; tran_one("\L$r", "\L$l", $SCRIPT, 'latin') unless $dir eq '>'; } elsif ($NOLOWER == 1) { tran_one("$l", "$r", 'latin', $SCRIPT) unless $dir eq '<'; tran_one("$r", "$l", $SCRIPT, 'latin') unless $dir eq '>'; } else # ALLUPPER { tran_one( "$l", "$r", 'latin', $SCRIPT) unless $dir eq '<'; tran_one("\L$r", "$l", $SCRIPT, 'latin') unless $dir eq '>'; } } close F; } sub read_config { my ($f)=@_; return read_config_file($f) if -f $f; unless(opendir(DIR, $f)) { warn "Can't read dir: $f\n"; return; } read_config("$f/$_") for sort grep /^[a-zA-Z0-9_-]+$/, readdir DIR; closedir DIR; } read_config($DATA); $TARGET=$alias{$TARGET} if $alias{$TARGET}; print(join("\n",sort keys %tran)."\n"), exit if $TARGET eq "list"; $tran{$TARGET} or die "Unknown script \"$TARGET\". Valid ones:\n".join("\n",sort keys %tran)."\n"; sub tran_shift($) { my ($t)=@_; my ($l,$r,$lc); for(my $len=$maxlen;$len;$len--) { # Slooow, but lowercasing/consuming can be very tricky because some # characters like ß expand. # Because of glibc not supporting lowercasing some scripts yet, # we need to try uppercase first manually. $l=substr($_,0,$len); if (defined ($r=${$t}{$l})) { substr($_,0,$len)=''; print $r; return 1; } $lc=lc($l); next unless ($lc ne $l); #input was not in lowercase if (defined ($r=${$t}{$lc})) { substr($_,0,$len)=''; $r=/^\p{IsLower}/? ucfirst($r) : uc($r); #UPPER vs Title case print $r; return 1; } } return 0; } while(<>) { #s/\x{0130}/I\x{0307}/g; # The only character which expands when lowercasing. while($_ ne '') { next if tran_shift($tran{$TARGET}); print $H,substr($_,0,1),$O; substr($_,0,1)=''; } } tran-3/tran.pod000066400000000000000000000034261322220305000136240ustar00rootroot00000000000000=head1 NAME tran - transcribe between character scripts =head1 SYNOPSIS B EI B Hello world B<|> B I