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はコチラ]から入手可能。PDFでは特殊なCMapはストリームとして記述して、内部に埋め込む必要があります。以下が埋め込みの例です。
+
 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  
+
            /CIDSystemInfo  
 
             <<  
 
             <<  
 
               /Registry (Adobe)  
 
               /Registry (Adobe)  
57行: 58行:
  
  
 いまからCMapの内容を書くので、PostScript言語を動かすプログラム資源を見つけて準備をしてくれって感じなんですね。用意したもを使ってファイルの最後の40行目のendまで処理するということを記述しています。仕様書の付録Aにやんわりと書かれています。PostScriptの初期化には以下のようなファイルを動かすんだそうです。
+
 いまから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/Level2というのは、古いPostScriptを動かす時に使うとかということも書いてあります。
+
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 内部構造 テキスト]]へ戻る。

2022年8月5日 (金) 00:00時点における版



個人用ツール
名前空間

変種
操作
案内
ツールボックス