c4se記:さっちゃんですよ☆

.。oO(さっちゃんですよヾ(〃l _ l)ノ゙☆)

.。oO(此のblogは、主に音樂考察Programming に分類されますよ。ヾ(〃l _ l)ノ゙♬♪♡)

音樂は SoundCloud に公開中です。

考察は現在は主に Scrapbox で公表中です。

Programming は GitHub で開發中です。

俗字⇒正字変換機

追記2015-12-25
現在使ってゐる新しい手段。
新字を舊字に (ほぼ) 自動で変換する - c4se記:さっちゃんですよ☆
Unicode舊字をAndroidで表示する為に、Notoフォントの部分フォントを作りWebフォントにする - c4se記:さっちゃんですよ☆


現代字を旧字に変換できる。
俗字⇒正字
複数の可能性があるときは、複数を強調表示する。目的とする字をクリックすると、その字が残り、残りは消える。選択を間違えた時は、再度クリックすると、また残りが表示される。
選択が終わり、決定を押すと、下のテキストエリアに決定文が転記される。
動作は最新のOperaFirefoxSafariGoogle 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/

取り敢えず使ってみろ。