PDF 内部構造 CMap 新しいページはコチラ
提供: yonewiki
(→beginbfchar ~ endbfchar) |
|||
71行: | 71行: | ||
− | /CIDInit に対して /ProcSet という辞書で指定できる値を設定、準備して動かすのがCMap定義のはじまりの通常のあり方です。Adobeが準備した(WindowsならC:\Program Files\Adobe\resource\cmapにあるのがAcrobatReader向けの標準CMap)全てのCMapファイルも同じようになっています。 | + | /CIDInit に対して /ProcSet という辞書で指定できる値を設定、準備して動かすのがCMap定義のはじまりの通常のあり方です。Adobeが準備した(WindowsならC:\Program Files\Adobe\Acrobat DC\resource\cmapにあるのがAcrobatReader向けの標準CMap)全てのCMapファイルも同じようになっています。 |
159行: | 159行: | ||
<Syntaxhighlight2 lang="text"> | <Syntaxhighlight2 lang="text"> | ||
− | + | 1 beginbfchar | |
<0000> <FFFF> | <0000> <FFFF> | ||
endcodespacerange | endcodespacerange | ||
198行: | 198行: | ||
<Syntaxhighlight2 lang="text"> | <Syntaxhighlight2 lang="text"> | ||
− | + | 17 beginbfchar | |
<0003> <0020> % | <0003> <0020> % | ||
<0030> <004D> %M | <0030> <004D> %M | ||
281行: | 281行: | ||
==== '''beginnotdefchar ~ endnotdefchar''' ==== | ==== '''beginnotdefchar ~ endnotdefchar''' ==== | ||
+ | notdefは未定義値の意味です。Glyph未定義値の結果としてどのグリフ番号を使うかというものです。PDFでもよく文字化けしたような文字で□が使われることがありますが、これもフォントの動作として指定されているということです。何も設定しなければcodespaceの範囲外の無効な値はGlyph番号 0が使われます。 | ||
+ | int endnotdefchar - | ||
+ | |||
+ | srcCode dstCID endnotdefchar - | ||
+ | |||
+ | <Syntaxhighlight2 lang="text"> | ||
+ | 1 beginbfrange | ||
+ | <01> 1 | ||
+ | endbfrange | ||
+ | </Syntaxhighlight2> | ||
+ | |||
+ | のような使い方になるでしょう。 | ||
==== '''beginnotdefrange ~ endnotdefrange''' ==== | ==== '''beginnotdefrange ~ endnotdefrange''' ==== | ||
+ | Glyph未定義値の結果としてどのグリフ番号を使うかというものの一括版です。何も設定しなければ | ||
+ | |||
+ | int endnotdefrange - | ||
+ | |||
+ | srcCodeLo srcCodeHi dstCID endnotdefrange - | ||
+ | |||
+ | <Syntaxhighlight2 lang="text"> | ||
+ | 1 beginbfrange | ||
+ | <01> <1F> 1 | ||
+ | endbfrange | ||
+ | </Syntaxhighlight2> | ||
+ | |||
+ | のような使い方になるでしょう。 | ||
==== '''beginrearrangedfont ~ endrearrangedfont''' ==== | ==== '''beginrearrangedfont ~ endrearrangedfont''' ==== | ||
+ | 再配置したフォントを1つにまとめて使う場合の定義です。どのフォントからどれを使うかはこれまでに紹介した方法で定義する必要があります。割り当てを定義するオペレータを使う都度、usefontオペレータで対象のフォントを配列にしていた順番で割り当てられる番号で指定する必要があります。 | ||
+ | |||
+ | |||
+ | /newFontName [component fonts array] beginrearrangedfont - | ||
+ | |||
+ | srcCodeLo srcCodeHi dstCID endnotdefrange - | ||
+ | |||
+ | <Syntaxhighlight2 lang="text"> | ||
+ | /Jun101-Light-K-G-R-83pv-RKSJ-H | ||
+ | [ | ||
+ | /Jun101-Light-83pv-RKSJ-H | ||
+ | /Poetica-ChanceryIV | ||
+ | /ShinseiKai-CBSK1-83pv-RKSJ-H | ||
+ | /FutoGoB101-Bold-83pv-RKSJ-H | ||
+ | /FutoMinA101-Bold-83pv-RKSJ-H | ||
+ | /HSMinW3Gai30 | ||
+ | ] beginrearrangefont | ||
+ | </Syntaxhighlight2> | ||
+ | |||
+ | のような使い方になるでしょう。5つのCIDフォントが再配置されて、/Jun101-Light-K-G-R-83pv-RKSJ-Hとして機能することを意味しています。 | ||
==== '''beginusematrix ~ endusematrix''' ==== | ==== '''beginusematrix ~ endusematrix''' ==== | ||
+ | フォントを移動拡大縮小回転歪み変形させる処理です。斜体文字を演算によって作り出すだけの手法はCMapによって実現できます。実際は専用の斜体文字の見た目の良さには勝てません。文字の詰め方や斜体独特の文字のつぶれ方の補完を実施したほうが美しいと感じます。 | ||
+ | |||
+ | |||
+ | fontID beginusematrix | ||
+ | |||
+ | [a b c d tx ty] endusematrix | ||
+ | |||
+ | <Syntaxhighlight2 lang="text"> | ||
+ | 1 beginusematrix % 1はフォント番号 | ||
+ | [1 0 0 1 0 0.15] beginrearrangefont | ||
+ | </Syntaxhighlight2> | ||
+ | |||
+ | のような使い方になるでしょう。配列の0.15にあたる部分は縦方向の移動量を示していて1が1000emとなるような単位系です。emとは何かについては[[METAFONT 単位|フォントの作成について説明した記事]]で説明済なので説明しません。配列は行列を使った移動拡大縮小のメカニズムで[[PDF_内部構造_グラフィックス#平行移動・拡大縮小・回転|PDF内部構造のグラフィックの部分]]で説明済なので、ここでは説明しません。 | ||
+ | |||
− | |||
[[PDF 内部構造 テキスト#/ToUnicode|PDF 内部構造 テキスト]]へ戻る。 | [[PDF 内部構造 テキスト#/ToUnicode|PDF 内部構造 テキスト]]へ戻る。 |