フォントのMOD制作¶
フォントはインターフェース上のテキスト要素へ適用されます。すべてのフォントはgfx/fonts/フォルダーにあり、新しいフォントもそこへ置くのが基本です。
フォントの入手と準備¶
フォントには読みやすさ、テーマとの適合、無償で利用できることが求められます。ここではMODに適したフォントを探し、準備する手順を説明します。
Stellarisで主に使われるフォントは次のとおりです。
- メインメニュー: Jura Light Medium
- 本文: Century Gothic
- タイトル: Orbitron
- ヘッダー(ポップアップなど): Malgun Gothic
多くはGoogle Fontsで見つけられます。
フォントを探す場所¶
「無料」をうたうフォントサイトでも、実際には目的に合わないライセンスが付いている場合があります。必ずフォントのライセンスを確認し、法的な要件を満たせることを確かめてください。判断が難しければ、CC0と明記されたものを探します。
| Webサイト | 注記 |
|---|---|
| Font Squirrel | 各フォントのページにライセンスタブがあります。 |
| Cool Text | 多くはパブリックドメインに近い条件ですが、念のためフォント名からライセンスを別途確認してください。 |
| Vic Fieger’s Website | 「free fonts」にはライセンス不要と説明されています。不安ならサイト掲載の連絡先で確認できます。 |
| Google Fonts | 収録フォントはすべてOpen Font Licenseであることが確認されています。 |
TrueTypeからOpenTypeへの変換¶
Stellarisは古いTrueType形式(.ttf)よりも、より多くの情報と複雑な動作を格納できるOpenType形式(.otf)を主に使用します。
OpenTypeはTrueTypeの全体構造を継承しているため、オンライン変換サービスで容易に変換できます。
最終手段として、myfont.ttfをmyfont.otfへ改名し、エンジンが読み込めるか試す方法もあります。適切な形式へ変換できたら、ゲームファイルへ配置する準備は完了です。
新しいフォントを作る¶
新しいフォントの作成にはBMFontを使います。これは、フォントページと記述ファイルを生成するプログラムです。
BMFontをインストールして起動し、OptionsメニューからFont Settingsを開きます。フォントファイルをインポートし、ドロップダウンから対象のフォントを選びます。フォントファイルはGoogle Fontsなどから入手できます。その後、以下の設定を行います。
フォント設定¶
- Charset: Unicodeにします。
- Size: 出力するビットマップ上の各文字サイズです。目的の大きさにします。
- 大きくするほど出力容量が増え、複数ビットマップへ分割される場合があります。複数ビットマップを使うには別々の出力フォントファイルとして定義する必要があるため、できるだけ1枚に収めます。
- Match char height: すべての文字を同じ高さにするため有効にします。
- Font smoothing: ゲーム内で文字の縁が鋭すぎる場合に有効にします。
- Outline thickness: 輪郭を付ける場合、目的の太さを設定します。
- 輪郭を付けるとビットマップ内で各文字が占める面積が増えます。
設定後、「OK」を押して変更を保存します。
出力設定¶
ゲームが読み込めるフォントビットマップを出力するため、Export Optionsを開きます。
- Padding: フォント画像内の各文字間の余白を制御します。フォントファイルを手作業で編集し、文字同士が近すぎないようにしたい場合だけ必要です。
- Bit depth:
32にします。 - Spacing: フォント画像内での文字間の最小距離です。
1, 1にします。文字同士の色がにじむ場合は増やします。 - Width / Height: 出力するビットマップの寸法です。すべての文字が1枚に収まるよう調整します。
- 幅・高さを大きくするとファイルサイズが急増します。ゲームは16MBを超える単一フォント画像を処理できません。Paradoxの中国語フォントでも最大16,001KBです。高圧縮方式を使わないとすぐ上限へ達しますが、複数のフォントビットマップを1つのフォントへ関連付けることで回避できます。Paradoxも中国語フォントで14~16MBの画像11枚を関連付けています。
- Channels: 文字の合成方法です。輪郭を指定していなければすべて
glyphにします。輪郭がある場合はアルファチャンネル(A)をoutline、残りをglyphにします。 - Presets: 上でチャンネルを手動指定するなら不要です。使用する場合はアルファを含むものを選びます。
- Font descriptor:
textにします。 - Textures:
.ddsにします。 - Compression: DDSの圧縮方式です。
- None: 無圧縮。巨大なファイルになり、ゲームが処理できない可能性があります。小規模な出力にのみ使います。
- DXT1: 最も高圧縮・低品質です。透明度は0か1だけで、半透明にはできません。
- DXT3: 中程度の圧縮で、フェードを含むより高品質な透明度に対応します。
- DXT5: 無圧縮を除くと圧縮率は最も低いものの、最高品質と高品質な透明度を持ちます。
設定後、「OK」を押して変更を保存します。
文字の選択¶
画面右側には文字種ごとのチェックボックスがあります。フォントに含まれない文字を使うと、四角内の疑問符として表示されます。用途に必要な文字種を選択してください。左側の文字画像をクリックすれば、ビットマップへ含める文字を個別に選べます。
どの用途でも、LatinおよびLatin-1 Supplementにある1~3個の空白文字枠(後者は表示されない場合があります)を必ず選択します。選ばないと、単語間の空白が表示されません。
フォントの保存¶
目的の設定ができたら、キーボードのVを押し、全文字が1ページに収まるか確認します。複数ビットマップを使わないのに収まらない場合は、画像の幅・高さを増やすか、フォントサイズを小さくします。
Optionsメニューの「Save bitmap font as…」(Ctrl+S)で保存します。
画像ファイルとフォントファイルは、拡張子を除いて完全に同じ名前にしなければなりません。.fntファイル内には使用する画像ファイルが記載されますが、ゲームは内部定義より先に同名ファイルを使います。これはビットマップフォント定義でファイル拡張子を付けないことからも分かります。ビットマップフォント定義そのものは、フォントファイルと同名でなくても構いません。
フォントの保存場所はビットマップフォント定義で決まるため、必ずしもgfx/fonts/に置く必要はありません。ただし、基本ゲームはすべてのフォントをここに置いています。
簡易チェックリスト¶
- BMFontを開き、フォントを選ぶ。
- フォント設定を適切に行い、変更を保存する。
- 適切な出力設定と必要な文字セットでフォントを出力する。
- 出力された
.ddsファイル名の末尾から_0を取り除き、フォント定義ファイルと同じ名前にする。 - 必要ならカーニングを追加する。
- 既存フォントの変更ではなく新規追加なら、
bitmapfont = { ... }定義を追加する。
カーニング¶
多くのフォントはカーニング情報を含めて出力されますが、含まれないものもあります。.fntファイルを開き、kerning first=で始まる行があるか確認できます。カーニングがないとゲーム内で文字が重なり、見栄えを損なう場合があります。その場合はフォントファイルへカーニング情報を追加します。
各カーニングペアについて、次の形式の行を追加します。
kerning first=<文字位置> second=<文字位置> amount=<ピクセル幅>
フォント内の文字位置は、BMFontのキャンバスで文字にカーソルを合わせると右下のステータスバーに表示されます。ピクセル量は1文字目と2文字目の間隔です。全ペアを手作業で作るのは現実的でないため、Pythonなどで生成する方が高速です。以下はPython 3.6以降の例です。
file = open("kerning.txt", "wt")
# 空白文字枠の文字位置をここに追加する
exclude = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
21, 22, 23, 25, 26, 27, 28, 29, 30, 31, 127, 129, 141, 143, 144, 156, 173, 181]
for x in range(1, 255):
for y in range(1, 255):
if x not in exclude:
if y not in exclude:
file.write(f"kerning first={x} second={y} amount=1\n")
file.close()
ビットマップの定義¶
gfx/fonts/に新しいフォントを関連付けるには、interface/*.gfxファイルへエントリを作ります。既存フォントを編集する場合は定義がすでにあるため、変更は不要です。
bitmapfonts = {
bitmapfont = {
name = "my_font"
fontfiles = {
"gfx/fonts/font_bitmap_1"
"gfx/fonts/font_bitmap_2"
}
color = 0xffffffff
textcolors = {
G = { 86 172 91 }
}
}
}
name: フォント名です。テキストを使うインターフェース要素が、使用するフォントファイルを指定するために使います。マップ用フォント以外のあらゆる用途で参照されます。基本ゲームのビットマップフォントがどこで使われているかを調べるには、テキストエディターでinterfaceフォルダー内の全.guiファイルを検索するのが確実です。fontfiles: フォントで使用する全ビットマップの場所です。gfx/fonts/*.fntへのパスから.fnt拡張子を除いて記述します。複数ファイルの定義文字が重複してはいけません。1ファイルだけなら、代わりにpath = "gfx/fonts/my_font"を使用できます。color: ARGB形式の16進数でフォント色を定義します。0x後の最初の2桁が透明度で、00は完全透明、FFは完全不透明です。残り6桁がRGBで、各色を00~FFで指定します。textcolors: ローカライズ用のテキスト色を上書きします。特定のテキスト色を、このフォントで使った場合だけ既定値と異なる色にできます。
ビットマップの上書き¶
ゲーム言語に応じてビットマップフォントを上書きすることもできます。これは主に、ラテン文字を使わず、16MBの単一ファイルに収められない言語(簡体字中国語など)で使われます。
interface/*.gfxへ次のような上書きエントリを作ります。
bitmapfonts = {
bitmapfont_override = {
name = "my_font"
fontfiles = {
"gfx/fonts/font_bitmap_1"
"gfx/fonts/font_bitmap_2"
}
languages = { "l_russian" "l_polish" }
}
}
- ビットマップを1つだけ使う場合は、
fontfilesの代わりにpath = "gfx/fonts/my_font"を使えます。 languagesにはサポート対象の言語を指定します。使用できる言語はlocalisation内にフォルダーを持つものです。
複数ビットマップの生成作業が増えることだけが欠点です。一方、複数ビットマップは異なる文字体系を整理する効果的な方法です。MOD全体で独自フォントを使う場合は、アンチエイリアスの問題を抑えながら、より大きく高品質な文字やデザインを使う余裕も増えます。
出典: Stellaris Wiki — Font modding(原文更新日: 2024年11月27日、版ID 96227)
翻訳日: 2026年8月31日 / 対応バージョン: 常時有効
本ページは原文Wiki(CC BY-SA 3.0)の内容を翻訳した非公式ファン翻訳です。