44
フォントしく 第3回 DTPの勉強会狩野宏樹(株式会社イワタ)

フォントのしくみ - iwatafont.co.jp · フォントのしくみ 第3回 dtpの勉強会 狩野宏樹(株式会社イワタ)

  • Upload
    lekhanh

  • View
    292

  • Download
    5

Embed Size (px)

Citation preview

Page 1: フォントのしくみ - iwatafont.co.jp · フォントのしくみ 第3回 dtpの勉強会 狩野宏樹(株式会社イワタ)

フォントのしくみ第3回 DTPの勉強会■

狩野宏樹(株式会社イワタ)

Page 2: フォントのしくみ - iwatafont.co.jp · フォントのしくみ 第3回 dtpの勉強会 狩野宏樹(株式会社イワタ)

全体の流れ

Page 3: フォントのしくみ - iwatafont.co.jp · フォントのしくみ 第3回 dtpの勉強会 狩野宏樹(株式会社イワタ)

フォントのフォーマットについて

~「OpenType」って何?~

Page 4: フォントのしくみ - iwatafont.co.jp · フォントのしくみ 第3回 dtpの勉強会 狩野宏樹(株式会社イワタ)

いろいろなフォントフォーマット

Type 1

OCF

CID

CFF

OpenType(.otf)

TrueType

TrueType GX

TrueType Open

OpenType(.ttf )

1985

1987

19911992

1995

1996

※年号は、製品でなく技術の発表年(見た資料の中で古いのを採用)

Page 5: フォントのしくみ - iwatafont.co.jp · フォントのしくみ 第3回 dtpの勉強会 狩野宏樹(株式会社イワタ)

フォントのアウトラインには 2種類ある

Page 6: フォントのしくみ - iwatafont.co.jp · フォントのしくみ 第3回 dtpの勉強会 狩野宏樹(株式会社イワタ)

フォントの中には点の座標が入っている。

(9, 7) - (9, 77) - (20,77) -(20,24) - (44,24) - (44, 93) -(56, 93) - (56,24) - (80,24) -(80,77) - (92, 77) - (92, 7) -(80, 7) - (80, 14) - (20,14) -(20, 7) - (9,7)

・点の座標は整数・最後は元の点に戻る

アウトライン表示の仕組み(1)

Page 7: フォントのしくみ - iwatafont.co.jp · フォントのしくみ 第3回 dtpの勉強会 狩野宏樹(株式会社イワタ)

← 囲まれた内側を  塗りつぶした結果

  12×12に↓ 縮小するには…?

アウトライン表示のしくみ(2)

Page 8: フォントのしくみ - iwatafont.co.jp · フォントのしくみ 第3回 dtpの勉強会 狩野宏樹(株式会社イワタ)

y = (0.5/12) * 100 = 4.167

y = (1.5/12) * 100 =12.5

y = (2.5/12) * 100 = 20.833

y = (3.5/12) * 100 = 29.167

y = (4.5/12) * 100 = 37.5

……

アウトライン表示のしくみ(3)

12×12のピクセルを拡大して 100×100の升目に重ね合わせると、ピクセル中心の位置は次のように計算できる。

Page 9: フォントのしくみ - iwatafont.co.jp · フォントのしくみ 第3回 dtpの勉強会 狩野宏樹(株式会社イワタ)

アウトライン表示のしくみ(4)

y=37.5 の高さの所で横線を引いてみる。

最初はアウトラインの外側にいて、交差するたびに内→外→内→…と移るから、升目の中心で交差回数 1,3,5 回 = 黒(塗り潰す) 0,2,4,6 回 = 白(そのまま)となる。

アウトラインを構成する全ての線分と y=37.5 の交点の x座標を求めれば塗り潰すピクセルが判る。

0 1 2 2 2 3 3 4 4 4 5 6

Page 10: フォントのしくみ - iwatafont.co.jp · フォントのしくみ 第3回 dtpの勉強会 狩野宏樹(株式会社イワタ)

アウトライン表示のしくみ(5)

機械的に計算すると線の太さが不揃いになることがある。

これを避けるために「ヒント情報」が内蔵できる。

PSフォントの例フォント全体の設定 : /StdVW [12] def /StdHW [11] def

グリフデータの付加情報 : 0 12 vstem 35 12 vstem 79 12 vstem 7 11 hstem → 縦線の太さは 1ドットで統一

Page 11: フォントのしくみ - iwatafont.co.jp · フォントのしくみ 第3回 dtpの勉強会 狩野宏樹(株式会社イワタ)

x(t) = x₀ t³+3 x₁ t²(1- t)+3 x₂ t(1- t)²+x₃ t(1- t)³y(t) = y₀ t³+3 y₁ t²(1- t)+3 y₂ t(1- t)²+y₃ t(1- t)³ (0 ≦ t ≦ 1)

x(t) = x₀ t²+2 x₁ t(1- t)+ x₂ (1- t)²y(t) = y₀ t²+2 y₁ t(1- t)+ y₂ (1- t)² (0 ≦ t ≦ 1)

2つのBézier 曲線(1)

z₀ = (x₀, y₀)

z₁

z₂

z₃

z₁

z₀ z₂

3次 2次

Page 12: フォントのしくみ - iwatafont.co.jp · フォントのしくみ 第3回 dtpの勉強会 狩野宏樹(株式会社イワタ)

2つのBézier 曲線(2)z₁

z₀ z₂

3 次は 2次を兼ねる

誤差 0.06%

誤差 6.1%

点の数が少なくてすむ

Page 13: フォントのしくみ - iwatafont.co.jp · フォントのしくみ 第3回 dtpの勉強会 狩野宏樹(株式会社イワタ)

フォントのフォーマットはいろいろある

Page 14: フォントのしくみ - iwatafont.co.jp · フォントのしくみ 第3回 dtpの勉強会 狩野宏樹(株式会社イワタ)

OpenType(OTF)って何?

Page 15: フォントのしくみ - iwatafont.co.jp · フォントのしくみ 第3回 dtpの勉強会 狩野宏樹(株式会社イワタ)

2種類のOpenType

Page 16: フォントのしくみ - iwatafont.co.jp · フォントのしくみ 第3回 dtpの勉強会 狩野宏樹(株式会社イワタ)

フォントの内部構造

~各テーブルには何が入っているか~

Page 17: フォントのしくみ - iwatafont.co.jp · フォントのしくみ 第3回 dtpの勉強会 狩野宏樹(株式会社イワタ)

フォントの全体構造(sfnt構造)

Page 18: フォントのしくみ - iwatafont.co.jp · フォントのしくみ 第3回 dtpの勉強会 狩野宏樹(株式会社イワタ)

フォントにはどんなデータが必要か

Page 19: フォントのしくみ - iwatafont.co.jp · フォントのしくみ 第3回 dtpの勉強会 狩野宏樹(株式会社イワタ)

字形

Page 20: フォントのしくみ - iwatafont.co.jp · フォントのしくみ 第3回 dtpの勉強会 狩野宏樹(株式会社イワタ)

メトリック

Page 21: フォントのしくみ - iwatafont.co.jp · フォントのしくみ 第3回 dtpの勉強会 狩野宏樹(株式会社イワタ)

活字と写植の考え方の違い

Page 22: フォントのしくみ - iwatafont.co.jp · フォントのしくみ 第3回 dtpの勉強会 狩野宏樹(株式会社イワタ)

デジタルフォントのメトリック

Page 23: フォントのしくみ - iwatafont.co.jp · フォントのしくみ 第3回 dtpの勉強会 狩野宏樹(株式会社イワタ)

縦書きのメトリック

Page 24: フォントのしくみ - iwatafont.co.jp · フォントのしくみ 第3回 dtpの勉強会 狩野宏樹(株式会社イワタ)

GIDとCID

Page 25: フォントのしくみ - iwatafont.co.jp · フォントのしくみ 第3回 dtpの勉強会 狩野宏樹(株式会社イワタ)

Cmap

Page 26: フォントのしくみ - iwatafont.co.jp · フォントのしくみ 第3回 dtpの勉強会 狩野宏樹(株式会社イワタ)

メタデータ

Page 27: フォントのしくみ - iwatafont.co.jp · フォントのしくみ 第3回 dtpの勉強会 狩野宏樹(株式会社イワタ)

「複雑な」テキスト表示について

~GSUB, GPOSの構造~

Page 28: フォントのしくみ - iwatafont.co.jp · フォントのしくみ 第3回 dtpの勉強会 狩野宏樹(株式会社イワタ)

どうしてテキストが表示できるの?

Page 29: フォントのしくみ - iwatafont.co.jp · フォントのしくみ 第3回 dtpの勉強会 狩野宏樹(株式会社イワタ)

「複雑」って何?

Page 30: フォントのしくみ - iwatafont.co.jp · フォントのしくみ 第3回 dtpの勉強会 狩野宏樹(株式会社イワタ)

複雑な指示が必要になる場合

Page 31: フォントのしくみ - iwatafont.co.jp · フォントのしくみ 第3回 dtpの勉強会 狩野宏樹(株式会社イワタ)

「フィーチャ」

Page 32: フォントのしくみ - iwatafont.co.jp · フォントのしくみ 第3回 dtpの勉強会 狩野宏樹(株式会社イワタ)

レイアウトテーブルの構造

Page 33: フォントのしくみ - iwatafont.co.jp · フォントのしくみ 第3回 dtpの勉強会 狩野宏樹(株式会社イワタ)

Lookupの構造

Page 34: フォントのしくみ - iwatafont.co.jp · フォントのしくみ 第3回 dtpの勉強会 狩野宏樹(株式会社イワタ)

GSUBの例1:縦書き

Page 35: フォントのしくみ - iwatafont.co.jp · フォントのしくみ 第3回 dtpの勉強会 狩野宏樹(株式会社イワタ)

縦書きの具体例

Page 36: フォントのしくみ - iwatafont.co.jp · フォントのしくみ 第3回 dtpの勉強会 狩野宏樹(株式会社イワタ)

GSUBの例2: ユーザの指示による置換

Page 37: フォントのしくみ - iwatafont.co.jp · フォントのしくみ 第3回 dtpの勉強会 狩野宏樹(株式会社イワタ)

主なGSUBのフィーチャタグ(欧字)

Page 38: フォントのしくみ - iwatafont.co.jp · フォントのしくみ 第3回 dtpの勉強会 狩野宏樹(株式会社イワタ)

主なGSUBのフィーチャタグ(和字)

Page 39: フォントのしくみ - iwatafont.co.jp · フォントのしくみ 第3回 dtpの勉強会 狩野宏樹(株式会社イワタ)

GSUBの例3: 言語による切り換え

Page 40: フォントのしくみ - iwatafont.co.jp · フォントのしくみ 第3回 dtpの勉強会 狩野宏樹(株式会社イワタ)

GSUBの例4, 5: 選択型の置換・合字

‘ ’

Page 41: フォントのしくみ - iwatafont.co.jp · フォントのしくみ 第3回 dtpの勉強会 狩野宏樹(株式会社イワタ)

IVS

Page 42: フォントのしくみ - iwatafont.co.jp · フォントのしくみ 第3回 dtpの勉強会 狩野宏樹(株式会社イワタ)

GPOSの例

Page 43: フォントのしくみ - iwatafont.co.jp · フォントのしくみ 第3回 dtpの勉強会 狩野宏樹(株式会社イワタ)

参考文献(1)

Page 44: フォントのしくみ - iwatafont.co.jp · フォントのしくみ 第3回 dtpの勉強会 狩野宏樹(株式会社イワタ)

参考文献(2)