EU4のパッチ情報です。
前回
修正案1
前回の続きです。強制的に右ルートに持っていくことで、プロビンスの文字列が長くても切れずに表示されることがわかりました。ただし、すべてのルートを右ルートにすると、ヒープが足りないからか、途中でフリーズしてしまいます。そこで、文字列の長さが2Dを超えているもののみを左ルートに変更するようにします。
修正案1の問題点
表示の問題としてテキストの位置が強制的にまっすぐ(positionsを設定した値)になってしまいます。また他のところで致命的な問題があり、プロビンス名は上記の方法で回避出来ることがわかったのですが、合成される文字列(ブランデンブルク 下シュヴァーベンなど)に関しては上記の右ルートが用意されていないことがわかりました。確かにpostions.txtが存在していないため納得できます。下記のぐちゃぐちゃしがそれが合成テキストを作っている箇所です。よってこの方法は諦めました。
残念ながら…
文字列を正しくすべて表示させることは難しそうなことがわかりました。そこでせめて強制終了する原因を修正します。原因は不正なコードポイント(パッチ都合で使えない0x100~0x9DBのこと)を参照した時に発生するので、そのようなコードポイントが発生した時は…(0x2026)に置き換えます。
本来はパッチした箇所すべてに上記のチェックを挿入しないといけないのですが、とりあえず今回はエラーが発生した箇所のみに挿入しています。1.24では最初から含める予定です。
パッチb2
長いテキストは途中でちょん切れます。下記だと「ランド」がちょん切れています。あと最後に「…」を表示させたかったのですが、何故か表示されずこれ以上の修正につらみがあったので次に回します。