PDF 内部構造 CMap 新しいページはコチラ

提供: yonewiki
移動: 案内, 検索
(beginnotdefrange ~ endnotdefrange)
(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">
17 beginbfchar  
+
1 beginbfchar  
 
     <0000> <FFFF>  
 
     <0000> <FFFF>  
 
endcodespacerange
 
endcodespacerange
198行: 198行:
  
 
<Syntaxhighlight2 lang="text">
 
<Syntaxhighlight2 lang="text">
1 beginbfchar  
+
17 beginbfchar  
 
   <0003> <0020> %  
 
   <0003> <0020> %  
 
   <0030> <004D> %M
 
   <0030> <004D> %M
223行: 223行:
  
 
==== '''beginbfrange ~ endbfrange''' ====
 
==== '''beginbfrange ~ endbfrange''' ====
 +
 一定の範囲を一括で同じグリフに割り当てるオペレータです。endbfrangeの最初の2つのオペランドで指定した入力範囲に対して、3番目に指定した番号を先頭としたグリフIDを連番で指定するものです。出力に配列名と辞書名文字を使うパターンも使うかもしれないです。
 +
 +
 int beginbfrange -
 +
 +
 srcCodeLo srcCodeHi dstCodeLo endbfrange -
 +
 +
or
 +
 +
 srcCodeLo srcCodeHi [/dstCharName 1 .. /dstCharName n] endbfrange -
 +
 +
 +
<Syntaxhighlight2 lang="text">
 +
1 beginbfrange
 +
    <00>  <1F>  <20>
 +
endbfrange
 +
</Syntaxhighlight2> 
 +
 +
 +
<Syntaxhighlight2 lang="text">
 +
1 beginbfrange
 +
    <20>  <23>  [/space /exclam /quotedbl /numbersign]
 +
endbfrange
 +
</Syntaxhighlight2> 
 +
 +
 +
 のような使い方になるでしょう。
  
 
==== '''begincidchar ~ endcidchar''' ====
 
==== '''begincidchar ~ endcidchar''' ====
 +
 出力に10進数のグリフ番号を使うパターンです。
 +
 +
 int begincidchar -
 +
 +
 srcCode dstCID  endcidchar -
 +
 +
<Syntaxhighlight2 lang="text">
 +
1 beginbfrange
 +
    <20>  32  %space
 +
endbfrange
 +
</Syntaxhighlight2> 
 +
 +
 のような使い方になるでしょう。
  
 
==== '''begincidrange ~ endcidrange''' ====
 
==== '''begincidrange ~ endcidrange''' ====
 +
 領域を一括して指定するものです。endcidrangeの最初の2つのオペランドで指定した入力値に対して10進数で指定したのグリフ番号を先頭に連番で使うパターンです。
 +
 +
 int begincidrange -
 +
 +
 srcCode dstCID  dstCIDLo endcidrange -
 +
 +
<Syntaxhighlight2 lang="text">
 +
1 beginbfrange
 +
    <20>  <7e>  231  %space 
 +
endbfrange
 +
</Syntaxhighlight2> 
 +
 +
 のような使い方になるでしょう。
  
 
==== '''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 内部構造 テキスト]]へ戻る。

2022年8月11日 (木) 00:00時点における最新版



個人用ツール
名前空間

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