62275


CSS の [`@font-face`](https://developer.mozilla.org/ja/docs/Web/CSS/@font-face)
の `src` には `url()` の他に `local()` を指定することができます。たとえば `src: local("ＭＳ ゴシック")`
と書けばローカルのMSゴシックを指定できます。

ここで、手元にある有名でないフォントについて、`local` に指定する名前をどう知れば良いのか知らないことに気付きました。[CSS Fonts
Module Level 3](https://drafts.csswg.org/css-fonts-3/#font-face-rule) には

> For OpenType and TrueType fonts, this string is used to match only the
> Postscript name or the full font name in the name table of locally available
> fonts.

と書かれているのですが、この Postscript name と full font name
をどのようにすれば調べられるのかが分かりません。先の文書には続けて「どっちの名前を使うかは決まってないから両方書いてね」のように書かれており、Postscript
name も full font name も両方知りたいです。

手元にある OpenType フォントや TrueType フォントについて、`local` に指定すべき名前である Postscript name と
full font name を知るにはどのようにすれば良いでしょうか？

環境は Windows 10 Home でお願いします。cmd.exe、PowerShell、WSL Ubuntu の
Bash、その他必要なソフトウェアの使用は自由です。

※文脈：自分の持っているパソコン2台の上で動かす小さなウェブアプリを作っており、その2台ともにインストールされているフォントを `@font-face`
で指定したくなり、できれば `src` ではなく `local` で指定できると嬉しいなとなってこの質問に至りました。


CC BY-SA 4.0
2020-01-15T06:29:59.303
62254
2020-02-01T04:57:15.307
2020-01-15T10:32:54.877
19110
19110
question
css font postscript
@font-faceのlocalに指定すべき文字列を知るには？


質問者さんが引用した文章によれば、名前テーブル中に Postscript 名および完全なフォント名は含まれているように読めます。その直後には
Postscript 名は名前テーブル内の **`nameID` が 6** の行に、完全なフォント名は **`nameID` が 4**
の行に格納されている、と書かれています[[1]](https://drafts.csswg.org/css-fonts-3/#font-face-
rule)。また、 [name - Naming table specification - Typography | Microsoft
Docs](https://docs.microsoft.com/en-us/typography/opentype/spec/name#name-
records) にも同様の内容がより詳細に書かれています。

> ### 4.3. Font reference: the src
> descriptor[[1]](https://drafts.csswg.org/css-fonts-3/#font-face-rule)
>
> Just as a `@font-face` rule specifies the characteristics of a single font
> within a family, the unique name used with `local()` specifies a single
> font, not an entire font family. Defined in terms of OpenType font data,
> **the Postscript name is found in the font's name table, in the name record
> with`nameID = 6`** (see [OPENTYPE] for more details). The Postscript name is
> the commonly used key for all fonts on OSX and for Postscript CFF fonts
> under Windows. **The full font name (`nameID = 4`) is used as a unique key
> for fonts with TrueType glyphs on Windows.**

[LCDF Typetools](https://www.lcdf.org/type/index.html#typetools) の otfinfo で
OpenType および TrueType フォントに関する情報を得ることが出来ます。`otfinfo` コマンドに `--info`
オプションを付与することで Postscript 名および完全なフォント名が得られます。たとえば、 `GreatVibes-Regular.otf`,
`ARIAL.ttf` に対して `otfinfo` コマンドを実行すると、以下のような結果が得られました。

[code]

    C:\Users\supa>otfinfo -i GreatVibes-Regular.otf
    Family:              Great Vibes
    Subfamily:           Regular
    Full name:           Great Vibes
    PostScript name:     GreatVibes-Regular
    Version:             Version 1.001
    Unique ID:           RobertE.Leuschke: Great Vibes: 2012
    Designer:            Robert E. Leuschke
    Designer URL:        www.typesetit.com
    Manufacturer:        Robert E. Leuschke
    Trademark:           Grerat Vibes is a trademark of Robert E. Leuschke.
    with Reserved Font Name "Great Vibes"12 TypeSETit, LLC (typesetit@att.net),
    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:           pyrs
    
[/code]

[code]

    C:\Users\supa>otfinfo -i ARIAL.ttf
    Family:              Arial
    Subfamily:           Regular
    Full name:           Arial
    PostScript name:     ArialMT
    Version:             Version 7.00
    Unique ID:           Monotype:Arial Regular (Microsoft)
    Designer:            Monotype Type Drawing Office - Robin Nicholas, Patricia Saunders 1982
    Manufacturer:        The Monotype Corporation
    Trademark:           Arial is a trademark of The Monotype Corporation.
    Copyright:           © 2017 The Monotype Corporation. All Rights Reserved.
    
[/code]


CC BY-SA 4.0
2020-01-15T18:43:16.913
62275
2020-01-16T12:03:37.340
2020-01-16T12:03:37.340
32986
32986
62254
answer


WSLのUbuntuが利用可能な環境とのことなので、 **そこにfontconfigが入っていれば**
(cairoやgdが依存しているので多くの環境で入っていそう、WSLのUbuntuのデフォルトはどうなっているかしないけど……)、`fc-
query`でフォントの詳細が取得できそうです。

たとえば

[code]

    $ fc-query /mnt/c/Windows/Fonts/meiryo.ttc |less
    
[/code]

でメイリオの情報をダンプできました。

ただし、そのままだとcharsetのテーブルを全て表示したり同ファイルに含まれるのを全てならべたりするので`--format='%{family};%{fullname};%{postscriptname}\n'`を引数に指定するなどして情報を絞るのが質問の用途では実用的かもしれません。

(質問を目にした際にできるだろうなと思っていたものの確認できていなかったのをたまたま思い出して試してみたので回答として投稿します)


CC BY-SA 4.0
2020-02-01T04:57:15.307
62689
2020-02-01T04:57:15.307
2376
62254
answer