`lib:text` は未収録の文字を、1 UTF-16コード単位あたり送り幅9px・太字加算0.5px(表の符号値146)として計算します。これと異なる幅の文字を文言へ追加すると、表を更新しなくても計算が成功し、配置がずれる可能性があります。関連する実装は #2307 です。 文章を追加する開発者が更新漏れに気づけるよう、配布フォントの実値と収録表を照合するCIを用意します。146と一致する文字は表に追加する必要がありません。 ### 検査対象 - Assetの神器Loreとその追記、Condition・ConsumeItemなどLoreへ組み込む文言、EffectのName・Description、MobのName・BossbarName - TheSkyBlessingのLore生成用loot tableと、表示文言を組み立てる関数 - TSB-ResourcePackのdefault・uniform・space定義と、その参照先 Assetでは `data/asset/functions/`、本体では `TheSkyBlessing/data/asset_manager/loot_tables/artifact/generate_lore/` と `TheSkyBlessing/data/asset_manager/functions/artifact/` が調査の入口です。registerだけに限定せず、後から名前やLoreを変更する箇所も対象にします。導入時に収集対象のフィールドとコマンドを列挙し、検査できている範囲を明示してください。 ### 実装時に決めること SNBT内のJSONとNBT形式のTextComponentを読み、text・文章を直接指定したtranslate・with・extraとフォント継承を扱います。翻訳キー、動的参照、macroで組み立てる部分、未対応フォント、解析できない入力は、対応済みとせず別に報告します。任意のコマンドのデータフローを完全に評価することは要求しません。 比較には縮小済みの表だけでなく、Minecraft 1.20.4と配布リソースパックから読み取った元の送り幅・太字加算・UTF-16長を使います。依存repoのcommitと取得素材のハッシュを固定し、同じ入力で再検証できるようにします。 まずは更新の必要性を通知し、再生成手順または修正差分を提示する方式を検討します。自動更新を採用する場合は、別repoへの更新先と承認方法も決める必要があります。 ### 完了条件 - 未収録の146文字は許可し、未収録または値が異なる非146文字を検出できる - ファイル・文言・文字・フォント・実際の幅と表の値を報告し、再生成箇所を特定できる - 動的入力や解析失敗を見落とさず、検査対象外として報告できる - Assetの文言変更、本体の表示文言変更、リソースパックのフォント変更のどこで検査を動かすかが決まっている - 既存文言と、146文字・非146文字・補助文字・位置調整スペース・translateを含む入力で検証されている
Activity