マガジン

ゲームに使えるフリーフォント:日本語対応

遊びをつくる

執筆にClaudeを使用しています。

丸や四角の色紙と色見本を使ってゲームの画面を検討する机。
記事のテーマをもとに制作したAI生成イメージ。実際のゲーム画面ではありません。

ゲームにフォントを使うとき、最初につまずくのはライセンスです。「フリーフォント」という言葉には「無料で使える」と「自由に使える」の両方の意味が混在しており、商用利用・ゲーム埋め込み・改変のそれぞれで条件が異なります。見た目が気に入ったフォントを選んでから後でライセンスに引っかかると、差し替えの手間が大きくなります。選ぶ順番は「ライセンス確認 → 用途への適合 → 見た目」です。 日本語対応フォントは英語フォントに比べてファイルサイズが格段に大きくなります。ひらがな・カタカナだけで200字以上、常用漢字を含めると2,000字超のグリフ(字形データ)が必要なため、フルセットのWebフォントは数MBになることも珍しくありません。ブラウザゲームでは初回読み込みの遅延がプレイ離脱に直結するので、サイズと表示品質のバランスを意識して選ぶ必要があります。 この記事では、ゲーム制作でよく使われる日本語フリーフォントの代表例とその特徴、ライセンスの読み方のポイント、ブラウザゲームへの組み込み手順を整理します。

この記事の目次
  1. ライセンスで確認すべき3つの項目
  2. 日本語対応フリーフォントの代表例と特徴
  3. サイズ問題への対処:サブセット化の手順
  4. CSSへの組み込み方
  5. 複数フォントを使うときの判断基準
  6. 次の行動
  7. 参考資料

ライセンスで確認すべき3つの項目

フリーフォントのライセンスは「SIL Open Font License(OFL)」「クリエイティブ・コモンズ(CC)」「独自ライセンス」の3種類が主流です。それぞれで確認すべき点が異なります。

商用利用の可否は最初に確認します。「個人利用無料」と書いてある場合、ゲームを広告付きで公開したり、有料で販売したりする行為が商用にあたるかどうかを確認します。OFLはこの点で明確で、商用・非商用を問わず無料で利用・配布できます。

フォントデータの埋め込み・再配布もゲームでは重要です。HTMLファイルやZIPにフォントファイルを同梱して配布する形は「再配布」に該当します。OFLはフォント単体を有料販売しない限り再配布を認めています。独自ライセンスのフォントは「Webフォントとしての使用のみ可」「埋め込み不可」など条件が細かい場合があるため、必ず原文を読みます。

改変・サブセット化はファイルサイズ削減のために行いたい操作です。サブセット化とは、使用する文字だけを抜き出して小さなフォントファイルを作ることです。OFLはサブセット化を改変とみなしつつも許可しており、その際は元のフォント名を変えることを推奨しています。独自ライセンスでは改変禁止のものもあるので確認が必要です。

日本語対応フリーフォントの代表例と特徴

ここでは制作者コミュニティでよく使われているフォントをカテゴリ別に紹介します。ライセンスや配布状況は変わることがあるため、利用前に必ず各配布元の公式ページで最新の条件を確認してください。

ゴシック系(視認性重視)

Noto Sans Japanese(Google・Adobeが共同開発)はOFLで提供されており、ウェイト(太さ)が7段階あります。ゲームUIのボタンテキストや説明文など、読みやすさが優先される場面に向いています。Google Fontsから直接読み込む方法と、ファイルをダウンロードして同梱する方法の両方が使えます。

源ノ角ゴシックはNoto Sans Japaneseと同じフォントのAdobe配布版です。名前が異なりますが内容はほぼ同一で、こちらもOFLです。

M PLUS Rounded 1c / M PLUS 1pはOFLで配布される日本語フォントで、丸みのある字形が特徴です。カジュアルなゲームやキャラクターの台詞表示に使いやすく、Google Fontsからも入手できます。

明朝系(雰囲気重視)

Noto Serif JapaneseはNoto Sans Japaneseの明朝体版で、同様にOFLです。RPGやノベルゲームのような読み込み量の多いテキストに適しています。

源ノ明朝はAdobe配布版で、こちらもOFLです。やや骨格が古典的で、時代劇や和風テーマのゲームと相性がよいです。

ピクセル系・個性派

美咲フォントはドット絵風の8×8ピクセル設計で、レトロゲームやファミコン風UIに使われます。ライセンスはパブリックドメインに近い形で提供されていますが、必ず配布元で最新の条件を確認してください。

Zpixは中国の開発者が作成した12×12ピクセルの日本語対応ビットマップフォントで、MITライセンスです。小さいサイズでもつぶれにくく、ドット絵スタイルのゲームに向いています。

サイズ問題への対処:サブセット化の手順

日本語フォントのフルセットは4〜10MB程度になることがあります。ブラウザゲームで全文字を必要とするケースは少なく、固定テキストしかないゲームなら使用文字を数百字以内に絞れます。

サブセット化にはpyftsubset(Pythonのfonttoolsパッケージに含まれるコマンドラインツール)が広く使われています。

  1. Pythonをインストールし、pip install fonttools brotli を実行します。
  2. ゲーム内で使う文字をすべて列挙したテキストファイル(chars.txt)を用意します。
  3. 次のコマンドを実行します。
pyftsubset NotoSansJP-Regular.otf \
  --text-file=chars.txt \
  --output-file=NotoSansJP-sub.woff2 \
  --flavor=woff2
  1. 出力された .woff2 ファイルをゲームと同じフォルダに置き、CSSで読み込みます。

この操作でフルセット数MBのフォントが数十〜数百KBに収まることがあります。ただし、プレイ中にユーザーが文字を入力する仕組みがある場合は、そのフォントに含まれていない文字がシステムフォントで表示されてしまうため、サブセット化の範囲を広めに設定するか、フルセットを使う選択を検討してください。

CSSへの組み込み方

フォントファイルをゲームのファイル構成に含めた場合、CSSで次のように宣言します。

css
@font-face {
  font-family: 'NotoSansJP';
  src: url('./fonts/NotoSansJP-sub.woff2') format('woff2');
  font-display: swap;
}

body {
  font-family: 'NotoSansJP', sans-serif;
}

font-display: swap は、フォントが読み込まれる前にシステムフォントで文字を表示し、読み込み完了後に切り替える指定です。これを入れておくと、フォント読み込みの遅延でテキストが見えない時間を短くできます。

Google FontsのCDNを使う場合は @font-face を自分で書かずに、Googleが提供するlink要素をHTMLのheadに貼るだけで動きます。ただしこの方法は外部CDNへの通信が必要なため、オフライン環境でのプレイには対応しません。ZIPでゲームを配布するときは、フォントファイルを同梱して相対パスで読み込む方法の方が安定します。

複数フォントを使うときの判断基準

ゲームにフォントを何種類も使うと、ファイルサイズと視覚的な統一感の両方が崩れやすくなります。一般的には、1タイトルで使うフォントファミリーは2種類以内(たとえば「UIテキスト用ゴシック」と「タイトルロゴ用装飾フォント」)に抑えると管理しやすいです。

フォントを使い分ける基準としては、「読ませる文字か、見せる文字か」が起点になります。説明文・ボタン・スコア表示など読まれることが主目的のテキストにはNoto系のような高可読性フォントを使い、タイトルや演出テキストには個性的なフォントを使うという役割分担が機能します。

装飾フォントを選ぶときは、日本語グリフが含まれているかどうかを必ず事前に確認します。英語フォントとして配布されているものの多くは日本語グリフを持たず、日本語文字を指定するとシステムフォントへのフォールバックが発生して表示が崩れます。

次の行動

使いたいフォントを1つ決めたら、そのライセンスページを開いて「商用利用」「埋め込み・再配布」「改変」の3点を確認してください。OFLのフォントであれば多くのゲーム用途に対応しています。サブセット化でファイルサイズを落としてからゲームに組み込み、モバイル回線を想定した環境で読み込み速度を一度確認しておくと、公開後のトラブルを避けられます。完成したゲームはアソバースにZIPまたはHTMLで投稿できます。

参考資料

  • SIL Open Font License 公式ドキュメント(SIL International)
  • Google Fonts 公式サイト(フォントのライセンス・ダウンロード)
  • fonttools / pyftsubset 公式ドキュメント(GitHub)
  • Adobe Fonts(源ノ角ゴシック・源ノ明朝 配布ページ)