追記2015-12-25
現在使ってゐる新しい手段。
新字を舊字に (ほぼ) 自動で変換する - c4se記:さっちゃんですよ☆
Unicode舊字をAndroidで表示する為に、Notoフォントの部分フォントを作りWebフォントにする - c4se記:さっちゃんですよ☆
現代字を旧字に変換できる。
複数の可能性があるときは、複数を強調表示する。目的とする字をクリックすると、その字が残り、残りは消える。選択を間違えた時は、再度クリックすると、また残りが表示される。
選択が終わり、決定を押すと、下のテキストエリアに決定文が転記される。
動作は最新のOpera、Firefox、Safari、Google Chromeにて確認済み。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja"> <!-- * 正俗字変換機 ver 0.1 - 20090517 * project name: 正字使い * project leader: Haruna Tachibana * tachibana.haruna@gmail.com * http://c4se.sakura.ne.jp/ta_index.html * author: Nemu Inoue * utakata.c4se@gmail.com * http://c4se.sakura.ne.jp/ne_index.html * license: c4seFCL 0.1 History 0.1 - 20090517 JIS常用漢字の「俗→正」完成。複数字の場合は選択・再選択可能。 --> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="Content-Style-Type" content="text/css"/> <meta http-equiv="Content-Script-Type" content="application/javascript"/> <style> body{ background:#c3c; } #result{ background:#cfc; font-size:larger; font-family:monospace; } .please_s{ border:1px dashed #1f1; } .please{ font-weight:bold; color:#f11; font-size:larger; } </style> <title>convApp c4se</title> </head> <body> <div style="text-align:center;">convApp c4se</div> <form> <div><textarea id="str_b" style="width:50em;height:30em;">其の弁を医の見る炉に入れよ</textarea></div> <div> <select id="type"> <option value="0">俗⇒正(JISのみ)</option> <!--<option value="1">俗⇒正(全て)</option>--> <!--<option value="2">俗⇒正(非JISは実体参照)</option>--> </select> <input type="button" id="do" value="↑変換↓"/> </div> <div id="result"></div><div id="result_d" style="display:none;"></div> <div> <input type="button" id="judge" value="↑決定↓"/><br/> <textarea id="str_a" style="width:50em;height:30em;"></textarea> </div> </form> <script src="../bi_laboratory/lib/uupaa.js"></script> <script> // [正, 俗, 正の実体参照] // 正の実体参照は、単一の場合は文字列、複数の場合は文字列の配列 // 正は、複数の場合も文字列 var jis = [['亞', '亜', '4e9e'], ['櫻', '桜', '6afb'], ['惡', '悪', '60e1'], ['壓', '圧', '58d3'], ['醫医', '医', ['91ab', '533b']], ['壹', '壱', '58f9'], ['飮', '飲', '98ee'], ['隱', '隠', '96b1'], ['榮', '栄', '69ae'], ['營', '営', '71df'], ['搖', '揺', '6416'], ['遙', '遥', '9059'], ['謠', '謡', '8b20'], ['驛', '駅', '9a5b'], ['鹽', '塩', '9e7d'], ['歐', '欧', '6d50'], ['毆', '殴', '6bc6'], ['應', '応', '61c9'], ['價', '価', '50f9'], ['假', '仮', '5047'], ['屆', '届', '5c46'], ['效', '効', '6548'], ['號', '号', '865f'], ['殼', '殻', '6bbc'], ['覺', '覚', '89ba'], ['學', '学', '5b78'], ['嶽', '岳', '5dbd'], ['陷', '陥', '9677'], ['顏', '顔', '98f4'], ['氣', '気', '6c23'], ['歸', '帰', '6b78'], ['戲', '戯', ''], ['僞', '偽', ''], ['犧', '犠', ''], ['舊', '旧', ''], ['卻', '却', ''], ['據', '拠', ''], ['擧', '挙', ''], ['區', '区', ''], ['驅', '駆', ''], ['畫', '画', ''], ['會', '会', ''], ['繪', '絵', ''], ['囘', '回', '56d8'], ['壞', '壊', ''], ['懷', '懐', ''], ['廣', '広', ''], ['鑛', '鉱', ''], ['擴', '拡', ''], ['卷', '巻', ''], ['關', '関', ''], ['勸', '勧', ''], ['歡', '歓', ''], ['觀', '観', ''], ['勳', '勲', ''], ['繼', '継', ''], ['攜', '携', ''], ['徑', '径', ''], ['莖', '茎', ''], ['經', '経', ''], ['輕', '軽', ''], ['溪', '渓', ''], ['鷄', '鶏', ''], ['惠', '恵', ''], ['螢', '蛍', ''], ['藝', '芸', ''], ['県', '県', ''], ['曉', '暁', ''], ['缺欠', '欠', ['', '']], ['挾', '挟', ''], ['狹', '狭', ''], ['峽', '峡', ''], ['劵', '券', ''], ['獻', '献', ''], ['儉', '倹', ''], ['驗', '験', ''], ['檢', '検', ''], ['險', '険', ''], ['劍', '剣', ''], ['縣', '県', ''], ['圈', '圏', ''], ['顯', '顕', ''], ['權', '権', ''], ['嚴', '厳', ''], ['恆', '恒', ''], ['國', '国', ''], ['齊', '斉', ''], ['濟', '済', ''], ['齋', '斎', ''], ['碎', '砕', ''], ['劑', '剤', ''], ['爭', '争', ''], ['壯', '壮', ''], ['莊', '荘', ''], ['裝', '装', ''], ['騷', '騒', ''], ['雙', '双', ''], ['藏', '蔵', ''], ['臟', '臓', ''], ['册', '冊', ''], ['雜', '雑', ''], ['插', '挿', ''], ['贊', '賛', ''], ['參', '参', ''], ['慘', '惨', ''], ['棧', '桟', ''], ['殘', '残', ''], ['蠶蚕', '蚕', ['8836', '8695']], ['絲糸', '糸', ['7d72', '7cf8']], ['齒', '歯', ''], ['兒', '児', ''], ['辭', '辞', ''], ['收', '収', ''], ['獸', '獣', ''], ['濕', '湿', ''], ['實', '実', ''], ['澁', '渋', ''], ['舍', '舎', ''], ['寫', '写', ''], ['將', '将', ''], ['奬', '奨', ''], ['壤', '壌', ''], ['淨', '浄', ''], ['讓', '譲', ''], ['釋', '釈', ''], ['壽', '寿', ''], ['從', '従', ''], ['縱', '縦', ''], ['肅', '粛', ''], ['處', '処', ''], ['敍', '叙', ''], ['稱', '称', ''], ['證証', '証', ['8b49', '8a3c']], ['乘', '乗', ''], ['剩', '剰', ''], ['繩', '縄', ''], ['觸', '触', ''], ['囑', '嘱', ''], ['寢', '寝', ''], ['眞', '真', ''], ['愼', '慎', ''], ['盡', '尽', ''], ['粹', '粋', ''], ['醉', '酔', ''], ['穗', '穂', ''], ['隨', '随', ''], ['髓', '髄', ''], ['數', '数', ''], ['樞', '枢', ''], ['聲', '声', ''], ['靜', '静', ''], ['燒', '焼', ''], ['攝', '摂', ''], ['竊', '窃', ''], ['專', '専', ''], ['戰', '戦', ''], ['淺', '浅', ''], ['踐', '践', ''], ['錢', '銭', ''], ['潛', '潜', ''], ['纖', '繊', ''], ['禪', '禅', ''], ['總', '総', ''], ['搜', '捜', ''], ['屬', '属', ''], ['續', '続', ''], ['墮', '堕', ''], ['體', '体', ''], ['對', '対', ''], ['帶', '帯', ''], ['滯', '滞', ''], ['臺台', '台', ['81fa', '53f0']], ['當', '当', ''], ['黨', '党', ''], ['稻', '稲', ''], ['盜', '盗', ''], ['擇', '択', ''], ['澤', '沢', ''], ['單', '単', ''], ['擔', '担', ''], ['膽', '胆', ''], ['團', '団', ''], ['彈', '弾', ''], ['斷', '断', ''], ['癡', '痴', ''], ['遲', '遅', ''], ['晝', '昼', ''], ['鑄', '鋳', ''], ['聽', '聴', ''], ['廳', '庁', ''], ['孃', '嬢', ''], ['釀', '醸', ''], ['蟲', '虫', ''], ['敕', '勅', ''], ['鎭', '鎮', ''], ['圖', '図', ''], ['遞', '逓', ''], ['條', '条', ''], ['鐵', '鉄', ''], ['疊', '畳', ''], ['點', '点', ''], ['轉', '転', ''], ['傳', '伝', ''], ['燈', '灯', ''], ['鬪', '闘', ''], ['讀', '読', ''], ['獨', '独', ''], ['惱', '悩', ''], ['腦', '脳', ''], ['貳', '弐', ''], ['霸', '覇', ''], ['拜', '拝', ''], ['廢', '廃', ''], ['賣', '売', ''], ['麥', '麦', ''], ['發', '発', ''], ['髮', '髪', ''], ['拔', '抜', ''], ['蠻', '蛮', ''], ['祕', '秘', ''], ['濱', '浜', ''], ['拂', '払', ''], ['佛', '仏', ''], ['竝', '並', ''], ['變', '変', ''], ['邊', '辺', ''], ['弁辨瓣辮辯', '弁', ['5f01', '8fa8', '74e3', '8fae', '8faf']], ['舖', '舗', ''], ['寶', '宝', ''], ['襃', '褒', ''], ['豐', '豊', ''], ['冐', '冒', ''], ['沒', '没', ''], ['飜', '翻', ''], ['萬', '万', ''], ['滿', '満', ''], ['彌', '弥', ''], ['默', '黙', ''], ['樣', '様', ''], ['譯', '訳', ''], ['藥', '薬', ''], ['豫予', '予', ['8c6b', '4e88']], ['餘余', '余', ['9918', '4f59']], ['與', '与', ''], ['譽', '誉', ''], ['來', '来', ''], ['瀧', '滝', ''], ['勞', '労', ''], ['樂', '楽', ''], ['覽', '覧', ''], ['亂', '乱', ''], ['兩', '両', ''], ['龍', '竜', ''], ['壘', '塁', '58d8'], ['禮', '礼', ''], ['勵', '励', ''], ['隸', '隷', ''], ['靈', '霊', ''], ['齡', '齢', ''], ['獵', '猟', ''], ['戀', '恋', ''], ['爐', '炉', ''], ['樓', '楼', '6a13'], ['灣', '湾', ''], ['爲', '為', ''], ['圍', '囲', '570d'], ['衞', '衛', '885e'], ['圓', '円', '5713'], ['奧', '奥', '5967'], ['穩', '穏', '7a69']], uni = []; String.prototype._className = 'String'; Array.prototype._className = 'Array'; (function(){ var _doc = document; var textarea_b = _doc.getElementById('str_b'), select = _doc.getElementById('type'), button_do = _doc.getElementById('do'), resultarea = _doc.getElementById('result'), button_judge = _doc.getElementById('judge'), textarea_a = _doc.getElementById('str_a'); jis = jis.map(function(e){ var a = new Array(2); if(e[0].split('').length != 1){ a[0] = e[0].split(''); }else{a[0] = e[0];} a[1] = e[1]; return a; }); var conv = function(){ var str = textarea_b.value; var result = ''; if(select.value == '0'){ var ids = 0, q_faded = new Object(); jis.forEach(function(e){ if(e[0]._className != 'String'){ var r = ''; for(var i=0, l=e[0].length; i<l; ++i) r += '<span class="please">' + e[0][i] + '</span>'; str = str.replace(new RegExp(e[1], 'g'), function(word){ q_faded['please_'+ids] = false; return '<span class="please_s" id="please_' + (ids++) + '">' + r + '</span>'; }); }else{ str = str.replace(new RegExp(e[1], 'g'), e[0]); } result = str; }); }else{result = 'preparing.'} resultarea.innerHTML = result.replace(/\n/g, '<br/>\n'); uu.klass('please').forEach(function(e){ e.onclick = function(){ var now_id = uu.xpath('./parent::node()', this)[0].getAttribute('id'); if(!q_faded[now_id]){ uu.xpath('./preceding-sibling::node() | ./following-sibling::node()', this).forEach(function(elm){ //uu.effect.fade(elm, {keep:0, revert:0}); uu.css.set(elm, {display:'none'}); q_faded[now_id] = true; }); }else{ uu.xpath('./preceding-sibling::node() | ./following-sibling::node()', this).forEach(function(elm){ uu.css.set(elm, {display:'inline'}); q_faded[now_id] = false; }); } }; }); }; var judge = function(){ var resultarea_d = _doc.getElementById('result_d'); resultarea_d.innerHTML = resultarea.innerHTML; uu.xpath('./span/span', resultarea_d).forEach(function(e){ if(uu.css.get(e, 'display') == 'none') uu.node.remove(e); }); uu.xpath('./span', resultarea_d).forEach(function(e){ uu.node.replace(_doc.createTextNode(uu.tag('span', e)[0].innerHTML), e); }); uu.xpath('./br', resultarea_d).forEach(function(e){ uu.node.remove(e); }); textarea_a.value = resultarea_d.innerHTML; }; uu.ready(function(){ button_do.onclick = function(){conv();}; button_judge.onclick = function(){judge();}; }); })(); </script> </body> </html>
uupaa.jsに依存している。
http://code.google.com/p/uupaa-js/
取り敢えず使ってみろ。