こなさんみんばんわ。
「ローカルにこのフォントがなければ Web フォントをロードする」ということをしたい場合、@font-face
アットルールでローカルのフォントを指定するためにはそのフォントの PostScript 名やフルネームが必要になります。
macOS の場合だと、インストール済みのフォントであれば Font Book で PostScript 名は分かりますがフルネームまでは分かりませんし、インストールする前に調べたい場合もあるでしょう。あとフォントにどんな OpenType 機能が実装されているかなども分かると便利です。
フォントをドロップすると色々な情報を出してくれる Web サービスもありますが、いちいちブラウザを開くのも面倒ですし、手元でやる方法は何かないかと探していたところ、コマンドラインで調べられる otfinfo というツールがあるのをたまたま見つけまして、使ってみたらけっこう便利だったので軽くご紹介したいと思います。
otfinfo と LCDF Typetools
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 を紹介しました。みなさんもよかったら使ってみてください。
あっさりめに終わります。