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*****>