PDF 内部構造 CMap 新しいページはコチラ
提供: yonewiki
(→概要) |
(→概要) |
||
1行: | 1行: | ||
[[PDF 内部構造 テキスト#/ToUnicode|PDF 内部構造 テキスト]]へ戻る。 | [[PDF 内部構造 テキスト#/ToUnicode|PDF 内部構造 テキスト]]へ戻る。 | ||
== '''概要''' == | == '''概要''' == | ||
− | CMapは、グリフの番号のGID(フォントファイルに格納されている順番の番号)と文字番号のCID(文字コードの意味をもつ番号)とを解決する割り当て表みたいなものです。[https://adobe-type-tools.github.io/font-tech-notes/pdfs/5014.CIDFont_Spec.pdf 仕様書PDFはコチラ] | + | CMapは、グリフの番号のGID(フォントファイルに格納されている順番の番号)と文字番号のCID(文字コードの意味をもつ番号)とを解決する割り当て表みたいなものです。[https://adobe-type-tools.github.io/font-tech-notes/pdfs/5014.CIDFont_Spec.pdf 仕様書PDFはコチラ]から入手可能。PDFでは特殊なCMapはストリームとして記述して、内部に埋め込む必要があります。以下がPDFにおけるTo Unicode部としてのCMap情報の埋め込みの例です。CMapファイルを構成する場合はもっと多くの辞書定義が必須となります。 |
+ | |||
<Syntaxhighlight2 lang="text" line=1> | <Syntaxhighlight2 lang="text" line=1> | ||
15 0 obj | 15 0 obj | ||
9行: | 10行: | ||
12 dict begin | 12 dict begin | ||
begincmap | begincmap | ||
− | + | /CIDSystemInfo | |
<< | << | ||
/Registry (Adobe) | /Registry (Adobe) | ||
57行: | 58行: | ||
− | + | いまからCMapの内容を書くので、PostScript言語を動かすプログラム資源を見つけて準備をしてくれって感じなんですね。用意したもを使ってファイルの最後の40行目のendまで処理するということを記述しています。仕様書の付録Aにやんわりと書かれています。PostScriptの初期化では以下のようなファイルを動かすんだそうです。 | |
67行: | 68行: | ||
− | Sys/Startはプリンタで印刷するときに動かすようなsysの下のstart.psっていうのを動かすそうです。Windowsの場合はそんなディレクトリはないので、違うところにあるんでしょう。DisplayPostScript™システムはdpsstartup.psと呼ばれるファイルを使用をするということも書かれています。PostScriptには「PostScript Level1」(1984年)、「PostScript Level2」(1990年)、「PostScript3」(1996年)の3種類がありますので、FS/Level1とか、FS/ | + | Sys/Startはプリンタで印刷するときに動かすようなsysの下のstart.psっていうのを動かすそうです。Windowsの場合はそんなディレクトリはないので、違うところにあるんでしょう。DisplayPostScript™システムはdpsstartup.psと呼ばれるファイルを使用をするということも書かれています。PostScriptには「PostScript Level1」(1984年)、「PostScript Level2」(1990年)、「PostScript3」(1996年)の3種類がありますので、FS/Level1とか、FS/Level2というのは、古いPostScriptを動かす時に使うとかということも書いてあります。実際には書いてないレベルの違うものを紹介しているだけ。Level1とか2の背景を知っていれば、どういう意味か予想できる。現在はどうなってるのかわからんね。Adobe Acrobatのフォルダにはreesourceというフォルダとその中にcmapやcidfontやfontってフォルダはあるので、AcrobatReaderでPDFを使うときにCIDFontを使うとこのあたりのファイルが使われたりするんだと思う。GhoostScriptでPostScriptを動かすとまた違うものが使われたりするんだと思います。 |
+ | |||
+ | |||
+ | /CIDInit /ProcSet を準備して動かすのがCMapの通常のあり方です。Adobeが準備したCMapも同じようになっています。 | ||
+ | |||
+ | |||
+ | この後に辞書が始まるという意味で | ||
+ | |||
+ | |||
+ | 12 dict begin | ||
+ | |||
+ | |||
+ | のようなキーワードを記述します。今から定義される実際の辞書の個数よりも大きい数値として、12 になっています。5個くらいは大きめにしておくのが普通らしいです。少ないとdictfullエラーというのが返されるそうです。これに対応する終了部分が39行目のendです。この区間の中でcmapが記述できます。cmapの始まりとして | ||
+ | |||
+ | |||
+ | begincmap | ||
+ | |||
+ | |||
+ | を記述します。対応する終了部分が38行目のendcmapです。 | ||
+ | |||
+ | |||
[[PDF 内部構造 テキスト#/ToUnicode|PDF 内部構造 テキスト]]へ戻る。 | [[PDF 内部構造 テキスト#/ToUnicode|PDF 内部構造 テキスト]]へ戻る。 |