[M+ OUTLINE FONTS 384] PANOSE の計算

アーカイブの一覧に戻る

KANOU Hiroki kanou****@khdd*****
2005年 1月 31日 (月) 12:26:52 JST


狩野です。重箱の隅をつつくような話で恐縮ですが…

プロポーショナル英字ができて、等幅フォントではなくなったので、
OS/2 テーブルの PANOSE の値を改訂する必要が生じました。
せっかくですので、フォントデザインから測定値をきちんと測って
正しいPANOSE 値を求めることにしました。

PANOSE とは、10 桁の数値で書体の特徴を分類し、文書ファイルに
埋め込むための物です。必要な書体がインストールされていない時に、
PANOSE 値の近いフォントを代りに用いることにより、文書の見栄えが
あまり代わらないという、(いまひとつ役に立たない) 技術です。

10 桁の数値で、各桁の意味は以下のように定められています。
(本文用欧文フォントの場合。最初の桁により後の桁の意味付けは変わる)。

桁の名前           意味
Family Kind =	   含まれている文字の種類と、書体に適した要素
Serif Style =	   セリフありかなしか、ある場合はどんな形態か
Weight =	   太さ
Proportion =	   文字ごとの幅の、バラツキ・平均などの傾向
Contrast =         線の太いところと細いところの比率
Stroke Variation = 太いところから細いところへの変化のしかた
Arm Style =        A の斜め線や C の端端の向きの特徴
LetterForm =       傾きと、ふところの大きさ
Midline	=          横線の位置と、尖った所 (A の頭) の処理
X-height =         小文字の大きさ

PANOSE の特徴は、グリフの定められた位置を測定することにより、
主観的なバラツキなしに書体の特徴を分類できることです。
http://www.panose.com/printer/pan2.asp に詳細な説明があります。

それに従って値を算出したところ、以下のような結果が得られました。

桁の名前         M+ プロポーショナルの値
Family Kind =	   2 - Latin, Text
Serif Style =	   11 - Normal Sans
Weight =	   9 - Heavy 〜 3 - Light	(太さによる)
Proportion =	   2 - Old style (Black〜Regular), 3 - Modern (Light,Thin)
Contrast =         2 - None
Stroke Variation = 2 - No Variation
Arm Style =        3 - Straight Arms/Wedge
LetterForm =       2 - Normal/Contact
Midline	=          2 - Standard Trimmed
X-height =         7 - Ducking/Large	(または 4 - Constant/Large)

いくつか問題の有り得るものについて以下に注記します。

・Weight
H の高さ (CapH) が、E のステム (縦線) の太さ (WstemE) の何倍かによって
分類します。

CapH =		760	760	760	760	760	760	760
Wstem(E) =	200	171	143	115	86	58	30
WeightRat = CapH / WStemE
	  =	3.8	4.444	5.315	6.609	8.837	13.103	25.33
Weight=		8-Bold	8-Bold	7-Demi	6-Medium5-Book	4-Thin	3-Light

Bold の定義は「3.5 <= WeightRat < 4.5」なので、Black と Heavy がどちらも
同じカテゴリに入ってしまいます。太さに差を設けてあるのに、Weight が同じ
というのは気持ち悪いので、Black の Weight 値を 9 にしてはいかがでしょうか。

・Proportion
この測定は結構面倒です。

・ORat (O の縦横比) によって、Expanded, Condensed を切り分ける。
・JMRat (J と M の横幅の比率) によって Monospaced かどうかを判断
・どちらでもない場合、狭い文字の代表 (E, S) と、広い文字の代表 (O, H)
  の幅の比率を求める。差が激しい順に Old Style, Modern, Even Width となる。

		Black	Heavy	Bold	Medium	Regular	Light	Thin
EWid =		560	548	536	525	513	501	490
SWid =		620	605	590	575	560	545	530
OWid =		760	750	740	730	720	710	700
Hwid =		630	615	600	585	570	555	540
OTall =		780	780	780	780	780	780	780
MWid =		780	763	746	730	713	696	680
JWid =		510	496	483	470	456	443	430
CapH =		760	760	760	760	760	760	760

ThinAv = (EWid + SWid) / 2
       =	590	576.5	563	550	536.5	523	510
WideAv = (OWid + HWid) / 2
       =	695	682.5	670	657.5	645	632.5	620
CalcEm = CapH * 1.5
       =	1140	1140	1140	1140	1140	1140	1140
ThinRat = CalcEm / ThinAv
	=	1.9322	1.9775	2.0249	2.0727	2.1249	2.1797	2.2353
WideRat = CalcEm / WideAv
	=	1.6403	1.6703	1.7015	1.7338	1.7674	1.8024	1.8387
PropRat = WideRat / ThinRat
	=	0.8489	0.8447	0.8403	0.8365	0.8318	0.8269	0.8226
JMRat = JWid / MWid
      =		0.6538	0.6501	0.6475	0.6438	0.6396	0.6365	0.6324
ORat = OTall / OWid
     =		1.0263	1.04	1.0541	1.0685	1.0833	1.0986	1.1143

常に JMRat < 0.78 かつ 0.92 <= ORat < 1.27 なので 2-Old Style, 3-Modern,
4-Even Width のいずれか。
PropRat < 0.83 となる Black 〜 Regular は 2-Old Style, Light と Thin は
3-Modern と判定されます。

これについては、無理にどちらかに揃える必要はないでしょう。細くなるに
従って、モダンな雰囲気がプロポーションの上に現れてくるように思います。

X-height =         7 - Ducking/Large	(または 4 - Constant/Large)
・X-height
H と x の高さの比率で求める。AとÅの「A」部分の高さに顕著な差がある
場合、Ducking に分類される。

とりあえず、ビットマップでは 0x00C5 のÅが A を小さく作ってあるので、
それに従って Ducking としてあります。これは、アクセントつき文字が
実装されたらまた測定し直して決めましょう。

狩野 宏樹  <kanou****@khdd*****>



mplus-fonts-dev メーリングリストの案内
アーカイブの一覧に戻る