タスク: `font_?.*`の優先順位を決める

Issue #187 resolved
k4nagatsuki repo owner created an issue

画像による特殊文字フォント(font_1.bmpなど)に複数のファイルが該当する状況がありえます。例えばfont_1.bmpfont_1.pngfont_1.jpgが存在するような場合です。

今は、どれが表示されるか予測不能です(ファイルの並び順がアルファベット順になっている事が多いのでおそらくfont_1.pngが最後に検出されてそれが表示されるが、環境によっては異なる可能性がある)。

よって、優先順位を決める必要があります。私は単純に大文字・小文字を区別した文字列比較で小さいほうが優先でよいと考えています。

Comments (4)

  1. k4nagatsuki reporter

    エディタのコードを触りながら改めて考えたのですが、どうもfont_1.bmpでもfont_1.pngでも受け付けるというのは筋が悪そうな感じです。

    そう感じた理由としては、

    1. 1つのファイル指定で何件ものファイルが候補になる。データ構造として無理があり、管理が難しい。エディタでの対応でまず引っかかったのがこの点です。特殊フォントが複数のファイルを指すのであれば、検索・置換・使用回数表示などで、ファイルならぬ特殊フォントという特別なリソースとしての管理が必要になりますが、それは依然としてファイルでもあるため、事態があまりにもややこしくなってしまいます。特殊フォントとファイルが一対一で対応するのであれば混乱は軽減可能です。
    2. CWではfont_?.bmpだけが対象となるので、場合によって再生結果が変わってしまう。同様に再生結果が変わる仕様として(1)格納イメージにPNGを使用した場合と(2)標準外の画像や効果音を参照したカードを宿に持ち帰った場合がありますが、(1)は1.50のバグが原因 ですし、(2)は「効果音のインストール」を求めるようなシナリオへの対応のために採用しているため、特殊な事例と見なすべきです。
    3. そもそも#1のような形式で指定する方法の筋が悪い。Shift JISの1バイト文字しか使えなかったり、作成可能な特殊フォント数が文字コードの都合で限定されるような問題も起きます。

    シナリオの仕様を拡張するとしたら、特殊フォントの指定でPNGも参照できるようにする、というやり方よりも、#1のような指定方法はレガシーなものと割り切ってfont_1.bmpのみを対象とし、新たに#{/ファイル名}のようなより汎用的な指定方法を追加した方がよいと考えます。

  2. Log in to comment