こなさんみんばんわ。

「ローカルにこのフォントがなければ Web フォントをロードする」ということをしたい場合、@font-face アットルールでローカルのフォントを指定するためにはそのフォントの PostScript 名やフルネームが必要になります。

macOS の場合だと、インストール済みのフォントであれば Font Book で PostScript 名は分かりますがフルネームまでは分かりませんし、インストールする前に調べたい場合もあるでしょう。あとフォントにどんな OpenType 機能が実装されているかなども分かると便利です。

フォントをドロップすると色々な情報を出してくれる Web サービスもありますが、いちいちブラウザを開くのも面倒ですし、手元でやる方法は何かないかと探していたところ、コマンドラインで調べられる otfinfo というツールがあるのをたまたま見つけまして、使ってみたらけっこう便利だったので軽くご紹介したいと思います。

otfinfo と LCDF Typetools

LCDF Typetools の Web サイト

otfinfo は OpenType および TrueType フォントに関する情報…たとえば OpenType 機能や Unicode コードポイント、光学サイズ機能の内容など…を調べられるツールです。LCDF Typetools という、フォントを操作するための色々なプログラムをまとめたパッケージの中に入っています。検索して調べてみると TeX 関係の情報が多く出てくるので、TeX 界隈では有名なプログラム群なんですかね。

インストールすると otfinfo の他、次の 10 個のプログラムが使えるようになりますが、僕には説明を読んでもさっぱり分からんので😅 README からの抜粋をざっと並べておくだけにとどめます。翻訳は Safari の翻訳機能にやってもらいました。

cfftot1
コンパクトフォントフォーマット(CFF)フォント、または PostScript 風味の OpenType フォントを PostScript Type 1 フォーマットに変換します。サブルーチンとヒントを正しく処理します。
mmafm
Type 1 Multiple Masterフォントのインスタンスに対応する AFM ファイル(フォントメトリック)を作成します。フォントとともに配布された AMFM および AFM ファイルを読み取ります。
mmpfb
Type 1 の複数のマスターフォントのインスタンスのように見える通常のシングルマスターフォントプログラムを作成します。複数のマスターフォントプログラムを PFA または PFB 形式で読み取ります。
otftotfm
OpenType または TrueType フォントに対応する TeX フォントメトリックとエンコーディングを作成します。グリフのポジショニング、置換、合字をできるだけ解釈します。どの OpenType 機能を有効にする必要があるかを言うことができます。
t1dotlessj
Type 1 フォントを読み、入力フォントのデザインに一致するドットレス小文字 j のみを持つ新しい Type 1 フォントを作成します。
t1lint
Type 1 フォントの正しさを確認します。Adobe Systems の Black Book (Adobe Type 1 Font Format) に記載されている要件のほとんどをテストします。
t1rawafm
生のType 1フォントファイル(PFA または PFB 形式)に対応する AFM フォントメトリックファイルを作成します。
t1reencode
Type 1 フォントを再エンコードし、その内部エンコーディングを指定したフォントに置き換えます。
t1testpage
特定の Type 1 フォントの PostScript テストページを作成します。これらのページには、フォントで定義されているすべての文字が表示されます。
ttftotype42
TrueType または TrueType 風味の OpenType フォント用の Type 42 ラッパーを作成します。これにより、フォントを PostScript ファイルに埋め込むことができます。

インストールするには

macOS であれば Homebrew を使って次のコマンドでインストールできます。

% brew install lcdf-typetools

MacPorts にもあるようです(試してはいません)。

% sudo port install lcdf-typetools

その他の環境の方は公式サイトの情報をご確認ください。ただし Windows の場合について、公式には W32TeX をダウンロードするようにと書いてありますが、これはもう配布してないようです。おそらく TeX Live というのを入れればいいのだと思いますが…すみませんよく分かりませんので詳しい方にお任せします。涙

使ってみよう

otfinfo --help すると使い方、オプションのリストが出てきます。基本的にはオプションで何の情報を得るかを指定して、フォントファイルを指定すればいいだけです。

jforg@local ~ % otfinfo --help
‘Otfinfo’ reports information about an OpenType font to standard output.
Options specify what information to print.

Usage: otfinfo [-sfzpg | OPTIONS] [OTFFILES...]

Query options:
  -s, --scripts                Report font’s supported scripts.
  -f, --features               Report font’s GSUB/GPOS features.
  -z, --optical-size           Report font’s optical size information.
  -p, --postscript-name        Report font’s PostScript name.
  -a, --family                 Report font’s family name.
  -v, --font-version           Report font’s version information.
  -i, --info                   Report font’s names and designer/vendor info.
  -g, --glyphs                 Report font’s glyph names.
  -t, --tables                 Report font’s OpenType tables.
  -u, --unicode                Report font’s supported Unicode code points.
      --variable               Report variable font information.
  -T, --dump-table NAME        Output font’s ‘NAME’ table.

Other options:
      --script=SCRIPT[.LANG]   Set script used for --features [latn].
  -V, --verbose                Print progress information to standard error.
  -h, --help                   Print this message and exit.
  -q, --quiet                  Do not generate any error messages.
      --version                Print version number and exit.

Report bugs to <ekohler@gmail.com>.

色々ずらっと出てきますが、とりあえずオプションについては次の 3 つくらいを覚えておけば十分じゃないかと思います。

フォント情報を一覧する: otfinfo --info (or -i)

いちばん基本的なやつですね。フォントの名前(ファミリー名やフォントのフルネーム、PostScript 名など)やそのデザイナー、ベンダーの情報が出てきます。

以下は otfinfo -i InterVariable.ttf してみたサンプルです。

jforg@local Fonts % otfinfo -i InterVariable.ttf
Family:              Inter Variable
Subfamily:           Regular
Full name:           Inter Variable
PostScript name:     InterVariable
Version:             Version 4.001;git-9221beed3
Unique ID:           4.001;git-9221beed3;RSMS;InterVariable-Regular
Designer:            Rasmus Andersson
Designer URL:        https://rsms.me/
Manufacturer:        rsms
Vendor URL:          https://rsms.me/
Trademark:           Inter UI and Inter is a trademark of rsms.
Copyright:           Copyright 2016 The Inter Project Authors
License URL:         http://scripts.sil.org/OFL
License Description: This Font Software is licensed under the SIL Open Font License, Version 1.1. This license is available with a FAQ at: http://scripts.sil.org/OFL
Vendor ID:           RSMS
Permissions:         Installable

フォントファミリー名だけが必要であれば otfinfo --family (or -a) で、PostScript 名を知りたいだけであれば otfinfo --postscript-name (or -f) も使えますが、特に @font-face アットルールを書きたい場合だとフォント名関係はまとめて必要になるかと思いますので、-i オプションを覚えておけば十分かと思います。

フォントの OpenType 機能を調べる: otfinfo --features (or -f)

OpenType フォントの持つ GSUB 機能や GPOS 機能を調べたい時には、このオプションで確認できます。

以下は otfinfo -f Roboto-Regular.ttf してみたサンプルです。

jforg@local Fonts % otfinfo -f Roboto-Regular.ttf
c2sc	Small Capitals From Capitals
ccmp	Glyph Composition/Decomposition
cpsp	Capital Spacing
dlig	Discretionary Ligatures
dnom	Denominators
frac	Fractions
kern	Kerning
liga	Standard Ligatures
lnum	Lining Figures
mark	Mark Positioning
mkmk	Mark to Mark Positioning
numr	Numerators
onum	Oldstyle Figures
pnum	Proportional Figures
salt	Stylistic Alternates
smcp	Small Capitals
ss01	Stylistic Set 1
ss02	Stylistic Set 2
ss03	Stylistic Set 3
ss04	Stylistic Set 4
ss05	Stylistic Set 5
ss06	Stylistic Set 6
ss07	Stylistic Set 7
subs	Subscript
sups	Superscript
tnum	Tabular Figures
unic	Unicase

オールドスタイル数字やスモールキャピタル用のグリフがあるんですね。

バリアブルフォントに関する情報を調べる: otfinfo --variable

バリアブルフォントの軸やその範囲、フォントに含まれるインスタンス(軸の組み合わせのプリセット的なもの)の情報が確認できます。これには省略形がありません。

以下は otfinfo --variable SourceHanSansJP-VF.otf してみたサンプルです。

jforg@local Fonts % otfinfo --variable SourceHanSansJP-VF.otf
Axis 0:                 wght
Axis 0 name:            Weight
Axis 0 range:           250 900
Axis 0 default:         250
Instance 0 name:        ExtraLight
Instance 0 position:    250
Instance 1 name:        Light
Instance 1 position:    300
Instance 2 name:        Normal
Instance 2 position:    350
Instance 3 name:        Regular
Instance 3 position:    400
Instance 4 name:        Medium
Instance 4 position:    500
Instance 5 name:        Bold
Instance 5 position:    700
Instance 6 name:        Heavy
Instance 6 position:    900

バリアブルフォントではない源ノ角ゴシックと、ウエイトやその名前が同じインスタンスが用意されているのが確認できました。

興味のある方はその他のオプションも色々試してみてください。

注意点

このように便利な otfinfo ですが、情報を得ることができるフォントファイルは単一のフォント(拡張子が .otf, .ttf)のものだけで、フォントコレクション形式(拡張子が .otc, .ttc のもの)には対応してないです。調べようとしても not an OpenType font (bad magic number) というエラーが返ってくるだけなのでご注意ください。

そんな訳で

本日はフォントに関する情報をコマンドラインで調べられる otfinfo を紹介しました。みなさんもよかったら使ってみてください。

あっさりめに終わります。