だめ文字と回避方法

提供: Arcanum JP Wiki
移動: 案内検索


だめ文字

  • } (0x40)、@ (0x7D)と、これらを下位バイトに含むマルチバイト文字は使用できない
    • }: マ・急・枝・図・挿など
      • }はdlg/mesファイル内においてIDや各文章の区切り文字として使用されているため
    • @: 全角スペース・院・機・堀・叩など
      • @はdlg/mesファイル内において@pcname@のような変数として使用されているため
    • {は使えるが、}が駄目なので特に使う必要性が無い
    • 全部で80文字程度
  • 未検証
    • 典型的な%dや%sも変数として使用されているので、%も普通には使えないはず
      • 恐らく\%で使えるのでは?


だめ文字の回避方法

  • {, }, 単体の @ は原文でも使用されておらず、文中で使用する状況はまず無いので使用しない方向で
  • それ以外のマルチバイト文字は外字を使用することで回避可能かも
    • 外字とは
    • だめ文字に相当する文字を外字領域に登録しておき、そちらを使用する
    • 外字リンカーを使用することで外字を配布可能にしたtteファイルをリンクして使用することが出来る


  • デメリット
    • 既に別の用途でなんらかの外字登録をしている場合、以前の外字が外字のリンクを解除しない限り使用できない
    • 手動でやるのは大変面倒
      • だめ文字を検出して外字領域の文字コードに置き換えるコンバータは作った
      • 翻訳時にはだめ文字を含むデータを編集して、パッケージング直前のみにコンバート済みファイルを使用しないと、外字を含むファイルが翻訳途中のファイルに混在することになるので切り分けた方がよさげ


  • ファイルの流れ

だめ文字を含む通常ファイル A ←→ ファイル A を翻訳
 ↓
ファイル A をだめ文字の置換コンバートにかける
 ↓
外字を含むコンバートファイル B (ファイル A は上書きしないで残す)
 ↓
ファイル B を dat 化


  • とりあえず外字領域も解釈して文字出力してくれることは確認したが、問題点が出てくるかもね