OpenType - PDF、組版と文書変換の

第12回多言語組版研究会
多言語組版のためのフォント技術
l
内田富久
1
内
容
1. OpenTypeフォントの現状
2. OpenTypeフォントとTrueTypeフォント
の比較
3. OpenTypeのタイポグラフィー向け機能
4. 組版ソフトはOpenTypeをどう使うか
5. その他
l
2
フォントの分類
フォントの分類
概
要
プラット・ホーム
TrueType
データ構造
Windows/Mac/Unix
(スクリー
ン)
プログラム構造
Mac (Windows)
(プリン
タ)
*ATM:ラスタラ
イザーが必要
Apple
Microsoft
ATMフォント
CID
フォン
ト
Adobe
PostScripプリンタ
OpenType
*TrueTypeフォ
ント構造
Windows/Mac
Bitmapフォント
.fon / 独自
組み込み機器
/Unix
l
Microsoft
Adobe
3
OpenTypeフォントの現状
① 日本語OTF
CFFベース(The Type 2 Charstring Format)
※CFF - PostScript (Compact Font
Format)
② 欧文OTF
TrueTypeベースが多い
l
4
日本語OpenTypeフォントの特徴
① Windows・Mac(data fork)で使用できる。
Rasterizer(日本語OTF)
Windows:Win2K/XPはOSに組み込まれ
ている。その他、ATMをinstall
Mac
:OS-XOSに組み込まれている。
その他、ATMをinstall
② Unicodeベース +AJ1-4(AJ1-5)
③ 日本語組版を考慮した文字の属性データがいろ
いろ追加(feature table)
l
5
日本語OpenTypeフォントの特徴
注意点
① フォントにはAJ1-4の文字数(15,444字)
あるが全ての文字を表示するにはアプリケー
ション側が管理。OTFのFeature機能も同様。
② 現在InDesign・Illustrator-CSはサポート
しているがそれ以外は通常のTTF・CIDと同様。
S-JIS・システム外字文字数。
l
6
Adobe-Japan文字セット
分類
CID番号
AdobeJapan1-0
0-8283
概
要
8,284字
AdobeJapan1-1
8284-8358
8,359字(JIS-X0208:1997相当)
AdobeJapan1-2
8359-8719
8,720字(WindowsのIBM拡張文字)
AdobeJapan1-3
8720-9353
9,354字(縦組用文字,90度回転,半角文
字,その他)
AdobeJapan1-4
9354-15443
15,444字
AdobeJapan1-5
15444-20316
JIS X 0213:2000+SK外字
OTF-Std版(AJ1-3)
OTF-Pro版(AJ1-4/AJ1-5)
l
7
Adobe-AJ1-4文字セット
l
8
OTFフォント・ファイル構造
1.Offset Table
2.実データ
テーブル情報
実データ
cmap
glyf
GSUB
GPOS
・・・
cmap
glyf
GSUB
GPOS
・・・
l
9
OTFフォント・ファイル構造
テーブル名
内
容(代表的なテーブル)
head
フォントの概要情報(EM,BBOX,…)
BASE
Baseline情報
OS/2
OS/2 及びWindows メトリックス,その他
CFF(※)
PostScript フォント・データ.(CIDベース)
glyf
TrueTypeフォント・データ
cmap
グリフへのマッピングデータ.
GSUB
グリフの置換.(グリフの縦横切り替え・グリフの合字・異字体切り替
え)
GPOS
グリフ位置置換(全角・半角・プロポーショナル切り替え)
hhea/vhea
横方向(横組)ヘッダ.
hmtx/vmtx
横方向(横組)メトリックス情報.
l
10
フォント・ファイル構造(OS/2の例)
項目
内容
1
weightClass
400
2
panose
2260000000
Family Kind (2)=Text & Display
Serif Style
(2)=Cove
Weight
(6)=Medium
3
unicodeRange1
A00002ff(Basic Latin,Latin-1 Supplement,
Latin Extended-A,Latin Extended-B,IPA
Extensions,Spacing Modifier Letters,・・・)
4
unicodeRange2
68c7feff(Superscripts and
Subscripts,Currency Symbols,Combining
Diacritical Marks for Symbols,CJK Unified
Ideographs,・・・)
5
codePageRange1
00020005(Latin 1 (1252),Cyrillic
(1251),JIS/Japan (932))
6
TypoAscender
TypoDescender
TypoLineGap
880
-120
1000
(Normal/Regular)
l
11
OTL(OpenType Layout)
OTL関係のテーブル
① GSUB/GPOS/BASE/JSTF/GDEF
② script・・・グリフの集合
(Latin,平仮名、片仮名、漢字)
③ language system
(英語、フランス語、ドイツ語)
l
12
OTFのGSUB/GPOS構造
l
13
ScriptとScriptTag
Script
Script Tag
Arabic
arab
CJK Ideographic hani
Cyrillic
cyrl
Default
DFLT
Greek
grek
Hiragana
kana
Katakana
kana
Latin
latn
Devanagari
Deva
・・・
Script tags
Script tags identify the scripts represented in a OpenType Layout font. Script tags are defined by
Microsoft Typography and correspond to the contiguous character code ranges in Unicode.
l
14
Registered features
Feature Tag
Friendly Name
aalt
afrc
Access All Alternates
Alternative Fractions
fwid
Full Widths
jp78
JIS78 Forms
jp83
JIS83 Forms
jp90
・・・
JIS90 Forms
・・・
l
15
日本語OTF
GSUB
GSUBに属するfeatureテーブル
Features
概要
1
aalt
置き換え全般
2
jp78/jp83/expt/trad 字体切り替え
3
ital/ruby
書体の置き換え
4
ital
リガチャーの置き換え
5
fwid/hwid/pwid
プロポーショナル・全角・半角
6
vert/vrt2
縦横切り替え
7
afrc/dlig/dnom/sinf
8
・・・
l
16
GSUB(glyf substitution)
Lookupタイプ
概要
1
Single substitution
2
Multiple substitution 複数文字の置き換え
3
Alternate
代替え文字の置き換え
substitution
Ligature substitution リガチャーの置き換え
4
5
6
7
Contextual
substitution
Chained contextual
Extention
substitution
1文字の置き換え
文脈の置き換え
綴り文字の置き換え
機能拡張
l
17
GSUB(グリフの置換)
InDesign-CS
l
18
GSUB(グリフの置換)
InDesign-CS
l
19
GSUB(グリフの置換) InDesign-CS
l
20
GSUB(グリフの置換)
InDesign-CS
l
21
日本語OTF
GPOSに属するfeatureテーブル
GPOS
Features
概要
1
halt/palt
半角・プロポーショナル字幅設定
2
vhal/vpal
縦方向字幅設定
3
kern
カーニング字幅設定
日本語OTFは欧文と比較すると少ない
l
22
GPOS(glyph positioning)
Lookupタイプ
概要
1
Single adjustment
1文字の調整
2
Pair adjustment
複数文字の調整
3
Cursive adjustment
続き文字の調整
4
Mark-to-Base
attachment
マーク(発音記号・ウムラルト)とベース文
字の調整
5
Mark-to-Ligature
attachment
マークとリガチャーの調整
6
Mark-to-Mark attachment
マークとマークの調整
7
Contextual Positioning
文脈の調整
8
Chained contextual
Positioning
chained文脈綴り文字の調整
9
Extention Positioning
機能文字の調整
l
23
GDEF(glyph definition)
項目
概要
1
Glyph class
2
Attachement
list
3
Ligature Caret
リガチャー文字のカーソル位置
4
Mark attachement
class definition
マーク(発音記号・ウムラル
ト)の分類
注
グリフの分類
point
合成時の参照する基準位置情報
日本語Otf使用していない
l
24
GDEF Glyph classの例
アラビア語の例
No. 0 startGid :
0 endGid:
445 Class=base glyf
No. 1 startGid : 446 endGid: 463 Class=mark glyf
No. 2 startGid : 464 endGid: 476 Class=base glyf
No. 3 startGid : 477 endGid: 481 Class=mark glyf
l
25
BASE(baseline definition)
l
26
多言語用OTFを使用して組版を行うには
1.OTF対応のアプリケーションを使用
① 各国別のOS・アプリケーションの利用
② ・・・
2.独自に制作
① 多言語(Uniscribe),feature(OTLS)
OTLS:OpenType Layout Service library
② アプリケーションのPlugInAPIを利用
③ フォントデータから必要とするデータを直接
参照する。
④ ・・・
l
27
組版とフォント情報
グリフ置換
GSUB
グリフデータ
エンコーディング
cmap/loca
glyf/CFF
メトリックス情報
Hmtx/vmtx/GPOS
禁則処理
行組版ルール
l
1行印字
28
プログラムでOTFのデータをアクセスすに
は?
ポイント
① Glyphデータへのアクセス
-cmap -loca -maxp -glyf
② GSUBとGPOSではGSUBが先
-まずGlyphの置き換えがあるか
-常にGlyphのセット幅(run)を計算
③ 適用するfeature tabel の調査
④ Lookup
table/Sub tableを調べる
⑤ Glyphに適用
l
29
各国の言語をアクセスする際の注意点
① Coverageとは入力tableのこと
入力Glyph番号(class)に対し、出力Glyph
番号class)が対応
② Chained Contextual Substitute等、そ
の言語について熟知していないと使用方法がわ
からない?
(BacktrackGlyph/InputGlyph/LookaheadGl
yph)
③ GDEF Glyph classが定義
l
30
各国の言語をアクセスする際の注意点
④ postテーブル
cmapで定義でない文字に対しglyphのGlyph
名を記述。
(例、アラビア語)
Glyf#: 867 GlyfNameI#: 632 uni067C.fina
Glyf#: 868 GlyfNameI#: 633 uni067C.init
Glyf#: 869 GlyfNameI#: 634 uni067C.inittall
Glyf#: 870 GlyfNameI#: 635 uni067C.initshort
Glyf#: 871 GlyfNameI#: 636 uni067C.medi
Glyf#: 872 GlyfNameI#: 637 uni067C.meditall
Glyf#: 873 GlyfNameI#: 638 uni067C.medivar1
l
31
アラビア語フォントの解析
質問
l
32