TrueType font の情報

7/10 訂正

元の記事はPANOSEのガイドを読み進めるうちに、ちょっと怪しいということがわかり始めてきました。
元の記事がいい加減だったのは間違いないですが、そもそも、ttfdumpは、Family Kindに対応していないということを知らなかったということです。
PANOSEによるとFamily Kindには次の種類があります*1

  • Text and Display (通常の文字)
  • Hand Written(手書き風文字)
  • Decorative(飾り文字)
  • Pictoral(絵文字、記号、symbol)


これらの種別に応じて、格納された情報が異なるのですが、ttfdumpの出力は対応していません*2。また、少なくとも、「記号(=pictoral)」に対しては、異常終了していることがわかっています(エラー127)。
現在使っているttfdump(v.0.5.5)は、kakuto3.exe 0.76に含まれるものですが、Microsoftが配布するfonttoolsのttfdumpも同一のもので、残念ながら替えが利きません・・・というのは間違いでした。

Kakuto3.exe0.76のttfdump

True Type Font File Dumper: v 0.5.5
Copyright 1996-1998 ollie@ms1.hinet.net

Microsoft Fonttoolsのttfdump

; TrueType v1.0 Dump Program - v1.8, Oct 29 2002, rrt, dra, gch, ddb, lcp, pml
; Copyright (C) 1991 ZSoft Corporation. All rights reserved.
; Portions Copyright (C) 1991-2001 Microsoft Corporation. All rights reserved.


(でも、)表示が別物なので、代替が利きません・・・ということで、別の記事へ飛びます。

(元記事)

ttfdump を使ってTrueType フォントのベンダー名(vendor)、フォント名、ウェイト(weight)、スタイル(font style)を引っ張り出すbash+awkスクリプト

#! /usr/bin/sh
font_path='iwp3rm.ttf'

# ベンダ名
awk_script='
BEGIN { vendorname=""; }
/Name table *0\./ { entry=1; }
/Name table *1\./ { entry=0; }
entry && />/ { vendorname=vendorname gensub( /^.+ *> *(.+)$/, "\\1", "g" ); }
END { print vendorname; }'
ttfdump -t 'name' $font_path | awk "$awk_script"

# フォント名
awk_script='
BEGIN { fontname=""; }
/Name table *1\./ { entry=1; }
/Name table *2\./ { entry=0; }
entry && />/ { fontname=fontname gensub( /^.+ *> *(.+)$/, "\\1", "g" ); }
END { print fontname; }'
ttfdump -t 'name' $font_path | awk "$awk_script"

# ウェイト
awk_script='/usWeightClass/ {print gensub( /^.+'"'"'(.+)'"'"'$/,"\\1","g");}'
ttfdump -t 'OS/2' $font_path | awk "$awk_script"

# スタイル
awk_script='/fsSelection/ {print gensub( /^.+'"'"'(.+)'"'"'$/,"\\1","g");}'
ttfdump -t 'OS/2' $font_path | awk "$awk_script"

例えば、イワタ中丸ゴシック体V3(iwp3rm.ttf)だと、

Iwata Engineering Co.,Ltd.
RGothIWA-Md-V3
Normal
Regular


  • windowsプラットフォームではなくて、appleプラットフォームを引っ張り出しているようだけど、よしとします。
  • Typography homeあたりに情報あります。
  • また、「ttf2pk option」で検索すれば、フォント情報のザックリとした概要が得られます。
  • 使用した ttfdump は、TeX(kakuto3_0_76)に付属するものですが、Microsoftが配布していると同じものだと思います。
  • 上記、awk正規表現は、えらい粗いですが動いているので良しとします。
  • 各々の情報としてふさわしいエントリを引っ張り出しているかどうかは、これから調べます・・・という状況。

隔靴掻痒

TeX(kakuto3.exe0.76)には、fc-・・・というコマンド群があります(font command)。それを使えば、・・・

$ fc-query.exe /cygdrive/c/Windows/Fonts/iwp3rm.ttf
Pattern has 20 elts (size 32)
        family: "RGothIWA-Md-V3"(s) "イワタ中丸ゴシック体V3"(s)
        familylang: "en"(s) "ja"(s)
        style: "Regular"(s)
        stylelang: "en"(s)
        fullname: "RGothIWA-Md-V3"(s) "イワタ中丸ゴシック体V3"(s)
        fullnamelang: "en"(s) "ja"(s)
        slant: 0(i)(s)
        weight: 80(i)(s)
        width: 100(i)(s)
        foundry: "unknown"(s)
        file: "/cygdrive/c/Windows/Fonts/iwp3rm.ttf"(s)
        index: 0(i)(s)
        outline: FcTrue(s)
        scalable: FcTrue(s)
        charset:
        0000: 00000000 ffffffff ffffffff 7fffffff 00000000 005361a1
$ fc-list.exe|grep イワタ
GothIWA\-Bd\-V3,イワタ太ゴシック体V3:style=Regular
GothIWA\-Hv\-V3,イワタ特太ゴシック体V3:style=Regular
MinIWA\-Th\-V3,イワタ中細明朝体V3:style=Regular
MinIWA\-Md\-V3,イワタ中明朝体V3:style=Regular
MinIWA\-Hv\-V3,イワタ特太明朝体V3:style=Regular
MinIWA\-Bd\-V3,イワタ太明朝体V3:style=Regular
MinIWA\-Lt\-V3,イワタ細明朝体V3:style=Regular
RGothIWA\-Md\-V3,イワタ中丸ゴシック体V3:style=Regular
GothIWA\-Dm\-V3,イワタ中太ゴシック体V3:style=Regular


・・・もう少し情報を出して欲しいです。foundryとvendorは違うかも知れませんが、weight、slantなど数値表記というのが惜しいです。

*1:他にも"Any"があり、このフォントは「Any=何にでも替えが利く」という意味で、このPANOSEの情報は使いものにならない、フォント固有の特徴を持っていないという意味です。"Any"のTTFも多々ありそうですので、PANOSEは当てにならないようです

*2:ttfdumpのソースコードをみると、がっつりとText and Display(通常の文字)に特化しているようです