nixeneko.hatenablog.com
これ、色々応用できるのでは、ということで、Unicodeのモンゴル文字をラテン文字に1:1で変換して表示するというものを作ってみた。
ブラウザのブックマークレットとして動くJavascriptプログラムです。文字の対応に変なところがあったら教えてください。
Firefox だとTwitterとか一部のサイト(Content Security Policyが設定されたサイト)でブックマークレットを実行するには設定を変える必要があるそうです。
コード
alert 版
(function(){ m={0x9:"[TAB]",0x20:" ",0x1802:",",0x1803:".",0x1804:":",0x180A:"-", 0x180B:"[FVS1]",0x180C:"[FVS2]",0x180D:"[FVS3]",0x180E:"[MVS]", 0x200C:"[ZWNJ]",0x200D:"[ZWJ]",0x202F:"[NNBSP]", 0x1810:"0",0x1811:"1",0x1812:"2",0x1813:"3",0x1814:"4", 0x1815:"5",0x1816:"6",0x1817:"7",0x1818:"8",0x1819:"9", 0x1820:"a",0x1821:"e",0x1827:"ē",0x1822:"i",0x1823:"o", 0x1824:"u",0x1825:"ö",0x1826:"ü", 0x1828:"n",0x1829:"ŋ",0x182A:"b",0x182B:"p",0x182C:"q", 0x182D:"γ",0x182E:"m",0x182F:"l",0x1830:"s",0x1831:"š", 0x1832:"t",0x1833:"d",0x1834:"č",0x1835:"ǰ",0x1836:"y", 0x1837:"r",0x1838:"v",0x1839:"f",0x183A:"k",0x183B:"ķ", 0x183C:"c",0x183D:"z",0x183E:"h",0x183F:"ř",0x1840:"lh", 0x1841:"zh",0x1842:"ch"}; s=""; [...document.getSelection().toString()].forEach(function(v,i,a){ c = v.codePointAt(0); if(c in m){ s += m[c]; }else{ t = v.codePointAt(0).toString(16).toUpperCase(); s += "U+" + Array( Math.max(0,4-t.length)+1 ).join("0") + t + ";"; } }); alert(s); })();
console.log 版
(function(){ m={0x9:"[TAB]",0x20:" ",0x1802:",",0x1803:".",0x1804:":",0x180A:"-", 0x180B:"[FVS1]",0x180C:"[FVS2]",0x180D:"[FVS3]",0x180E:"[MVS]", 0x200C:"[ZWNJ]",0x200D:"[ZWJ]",0x202F:"[NNBSP]", 0x1810:"0",0x1811:"1",0x1812:"2",0x1813:"3",0x1814:"4", 0x1815:"5",0x1816:"6",0x1817:"7",0x1818:"8",0x1819:"9", 0x1820:"a",0x1821:"e",0x1827:"ē",0x1822:"i",0x1823:"o", 0x1824:"u",0x1825:"ö",0x1826:"ü", 0x1828:"n",0x1829:"ŋ",0x182A:"b",0x182B:"p",0x182C:"q", 0x182D:"γ",0x182E:"m",0x182F:"l",0x1830:"s",0x1831:"š", 0x1832:"t",0x1833:"d",0x1834:"č",0x1835:"ǰ",0x1836:"y", 0x1837:"r",0x1838:"v",0x1839:"f",0x183A:"k",0x183B:"ķ", 0x183C:"c",0x183D:"z",0x183E:"h",0x183F:"ř",0x1840:"lh", 0x1841:"zh",0x1842:"ch"}; s=""; [...document.getSelection().toString()].forEach(function(v,i,a){ c = v.codePointAt(0); if(c in m){ s += m[c]; }else{ t = v.codePointAt(0).toString(16).toUpperCase(); s += "U+" + Array( Math.max(0,4-t.length)+1 ).join("0") + t + ";"; } }); console.log(s); })();