「きゃ」を「kilya」でなく「kya」にする

「っ」が「ltu」に変換される問題は、変換テーブルの並びを変更したら修正できた。なので、あとは「きゃ」を「kilya」でなく「kya」にするように変更するあたり。

この問題はソースコードに修正を行ったら解決。変更点は

  for (size_t i = 0; i < pimpl->converted.size(); ++i) {
    // 一致したパターンを置換する
    for (int j = 0; pimpl->convert_table[j] != 0x0; j += steps) {
      size_t match =
        pimpl->converted.compare(i, pimpl->ptnlen(j, pimpl->convert_table),
                                 &pimpl->convert_table[j]);
      if (match == 0) {
      }
      if (match == 0) {
        pimpl->replace(i, j);

        // か + (濁点) といった変換用のために、1文字分戻る
        --i;
        break;
      }
    }
  } 

において、置換する変換候補の文字列の長さを考慮したくらい。
主な変更部分を抜粋すると、だいたい以下の通り。

    for (int j = pimpl->max_length;
         pimpl->convert_table[j] != 0x0; j += steps) {
      int ptn_length = pimpl->ptnlen(j, pimpl->convert_table);
      int compare_first = i - (ptn_length -1);
      if (compare_first < 0) {
        continue;
      }
      size_t match =
        pimpl->converted.compare(compare_first, ptn_length,
                                 &pimpl->convert_table[j]);
      ... 

変換文字列候補の生成については、こんな感じかな?
いい感じ〜♪

実際のゲーム中で使うのが楽しみだ。

和歌データの Unicode 変換 へ」

Generated on Mon Apr 13 22:52:06 2009 by  doxygen 1.5.7.1