概要
Google Fontsをダウンロードし、CSSのfont-faceで定義したときに、Windows版Firefoxのコンソールに以下のメッセージが出ることがあります(ブラウザコンソールで表示されるため、Webページの動作には問題は無いと思います)。
downloadable font: gasp: Changed the version number to 1 (font-family: "Quicksand" style:normal weight:700 stretch:100 src index:0) source: https://hostname/webfonts/Quicksand/Quicksand-Bold.ttf
このメッセージ通り、gasp.version
を1
にすることで解消します。対象TTFのgaspテーブルのversion
が0
になっており、Pythonのfonttoolsモジュールを使い、gasp.version
を1
にすることで回避することができました。
TTFのgaspテーブルとはGrid-fitting And Scan-conversion Procedure Tableというもののようです。Microsoftの仕様書の中でversionはset to 1と書かれており、1が正しい値のようです。
- gasp -- Grid-fitting and Scan-conversion Procedure Table (Microsoft Typography)
解決手順
環境
CSSではこのように定義しています。
@font-face {
font-family: 'Quicksand';
font-style: normal;
font-weight: 700;
src: url(../webfonts/Quicksand/Quicksand-Bold.ttf) format('truetype');
}
これが適用されたときに上記の警告が出るみたいです。
Google FontsのGitHubで数年前に議論されていますが、再現性が低いとされてクローズされているみたいです。
- GitHub google/fonts #243 How to solve this error?
私の場合はWindows10(22H2) Firefox 109.0.1で発生しました(ずっと以前のバージョンから出ていたと思います)。Edge 109.0.1518.70ではメッセージは表示されませんでした。
fonttoolsモジュールによるTTFファイルの修正
fonttoolsモジュールを使いTTFファイルのgasp.version
の値を1
に書き換えて保存します。
fonttoolsのインストール
pipでインストールします。CentOS 7.9 + Python 3.6で実行しましたが、他の環境でも動作すると思います。
$ pip3 install fonttools
gasp.versionの値を修正して保存します
from fontTools.ttLib import TTFont
# フォントを読み込む
font = TTFont("Quicksand-Bold.ttf")
# gasp.versionが0の時に問題が発生しているように思うので1にする
if font["gasp"].version == 0:
font["gasp"].version = 1
font.save("Quicksand-Bold-v1.ttf") # 修正後のttfを保存する
ここで保存したQuicksand-Bold-v1.ttf
を使うことで警告が表示されなくなりました。Quicksandでしか試していないので他のフォントも同様かはわかりませんが。
動作には影響ありませんが、ずっと気になってたのが修正できました!
参考
- TTFの全グリフをPNGにしてみる -- fonttoolsの使い方を参考にしました
- fonttoolsのRead the Docs