-->

Googleフォントからサーバー内フォントに変更

Googleフォントからサーバー内フォントに変更

GoogleフォントのWebフォント配信をセルフホスティングに変更する方法。
ニコモジの404サーバーエラー対応。

関連URL
Google日本語フォントからニコモジを使っていたのですが、最近404エラーを返してまともに表示されなくなりました。
そもそもGoogleから配信されているニコモジは旧バージョンで、現在はニコモジ+v2というのが存在しています。
たぶん今後もメンテナンスされることは無いので、これを機にサーバー内にフォントを組み込むことにしました。

Google Fontsについて

Googleフォントは大変便利で、HTMLのヘッダー内に1~3行コードを書くだけで、あとはCSSから指定してそのフォントが使えます。
本サイトでは、今でも Noto Sans に関してはGoogleフォントの配信を利用して文字出力しています。


しかし日本人向けサービスであるGoogle日本語フォントは、あまり積極的にメンテナンスがされていません。
Googleのニコモジ は2016年からずっとアーリーアクセスのままで、ついに404エラーを返すようになりました。

Googleが指定しているHTMLコードは次の通りです。
<link href="https://fonts.googleapis.com/earlyaccess/nicomoji.css" rel="stylesheet">
このhrefで指定されてるURLに飛ぶと、実際のフォントデータのURLが表示されます。

この中のいずれのURLも404エラーになっています。

ニコモジについて

Google Fontsからの配信は切れていますが、ニコモジ自体は現在も健全に公開されています。
ニコモジ公式から配信されている最新バージョンはニコモジ+ v2.5です(2026/04/27)。
まるもじフォント(ニコモジ)

Google Fontsから配信されていたものは漢字に対応していませんでしたが、この+ v2.5は漢字にも対応しています。
サイトの下の方からttfフォントデータをダウンロードしてください。

フォントのセルフホスティング化

フォントをサーバー内に組み込むことのデメリットは、サーバーのストレージを圧迫する可能性があることです。
一方で同一ドメイン内から参照すれば処理速度は上がるし、そもそもこのサイトではごく限られた文字列でしかニコモジは使っていません。
適切に不必要な文字を削減すれば、ストレージの負担はほぼ無視できるレベルまで抑えられます。

事前準備

事前準備として、まず以下のURLから
サブセットフォントメーカー
WOFFコンバーター
をDLし、インストールまでしてください。
もし文字を削る必要がない場合はWOFFコンバーターだけで大丈夫です。
サブセットフォントメーカー
WOFFコンバーター

サブセットフォントメーカー

サブセットフォントメーカーを起動し、
作成元フォントファイル
に先ほど落としたのttfフォントデータを指定してください。
作成後フォントファイル
には編集後のファイルパスを入力します。

次に
フォントに格納する文字列
に、
必要な文字を入力します

重複した文字は無視され、1つ分として処理されます。

最後に
作成終了後、WOFFコンバーターを起動する
にチェックを入れた状態で「
作成開始
」ボタンを押してください。

WOFFコンバーター

ttfフォントデータはPCにインストールすることが出来て、Webでも使えます。ただしサイズが巨大です。
Webに組み込む際には、
woff2
というデータ形式に圧縮するのが一般的になっています。

インストールしたWOFFコンバーターを開いて、
変換前ファイル
にttfフォントのパスを指定してください。
サブセットフォントメーカーから開いた際は、すでに指定済みになっているはずです。
続いて
変換後ファイル
に、返還後のファイルパスを入力します。
変換後のファイルパスに対しては、拡張子の入力は必要ありません。コンバーターの方で勝手にくっ付けてくれます。

最後に
WOFF2を作成する
にチェックが入っているのを確認し、「
変換開始
」ボタンを押してください。

CSSの対応

作成したwoff2フォントデータをサーバに配置したら、CSSからそれを参照させます。
まず
@font-face
で、フォントデータと任意の識別子を紐づけます。
ここででは
font-family
で指定している
NicoMojiCustom
がその識別子です。
/* ニコモジ+をローカルから読み込み */
@font-face {
  font-family: 'NicoMojiCustom';
  src: url('
[woff2フォントへのパス]
') format('woff2');
  font-display: swap; /* 読み込み中も文字を表示させる */
}

続いて実際にフォントを指定する作業です。
このサイトでは
title_tex
というidセレクタを使い、タイトル文字に対してニコモジを反映させています。
/* Titleの文字列の中央表示 */
#title_text {
  font-family: 'NicoMojiCustom', sans-serif;
  font-size: 1.2em;
  text-align: center;
}
0
0