Type1 フォントの pdfTeX でエンコーディングを変更しても機能しないのはなぜですか?

Type1 フォントの pdfTeX でエンコーディングを変更しても機能しないのはなぜですか?

次のファイルで使用するとpdftex、ビットマップ フォントのエンコーディングが変更されます (結果の PDF からテキストをコピーして貼り付けることで確認できます)。

\pdfmapline{=cmr10 <cmr10.enc}
`hello world'
\end

ここで、 は次のようになります (が に変更され、が に変更されたcmr10.enc点のみがデフォルトと異なります)。/quoteright/uni0027/quoteleft/uni0060

/MyCMRencoding [/Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi/Omega/ff/fi/fl/ffi
/ffl/dotlessi/dotlessj/grave/acute/caron/breve/macron/ring/cedilla
/germandbls/ae/oe/oslash/AE/OE/Oslash/suppress/exclam/quotedblright
/numbersign/dollar/percent/ampersand/uni0027/parenleft/parenright
/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six
/seven/eight/nine/colon/semicolon/exclamdown/equal/questiondown/question/at
/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft
/quotedblleft/bracketright/circumflex/dotaccent/uni0060/a/b/c/d/e/f/g/h/i
/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/endash/emdash/hungarumlaut/tilde/dieresis
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
] def

ここで\pdfmaplineを に変更します=cmr10 <cmr10.enc <cmr10.pfbpdftex次のエラーで失敗します:

This is pdfTeX, Version 3.14159265-2.6-1.40.19 (TeX Live 2019/dev/Debian) (preloaded format=pdftex)
 restricted \write18 enabled.
entering extended mode
(./test.tex{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map} [1] ){cmr10.enc}
</usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb

pdfTeX warning: pdftex (file /usr/share/texlive/texmf-dist/fonts/type1/public/a
msfonts/cm/cmr10.pfb): glyph `uni0027' undefined


pdfTeX warning: pdftex (file /usr/share/texlive/texmf-dist/fonts/type1/public/a
msfonts/cm/cmr10.pfb): glyph `uni0060' undefined
>
Output written on test.pdf (1 page, 11512 bytes).
Transcript written on test.log.

これは奇妙です。なぜなら、どちらの場合も同じ enc ファイルが使用されているからです。また、ビットマップ フォントは、名前に問題がないことを示していますuni0027。では、なぜ pdftex で Type1 フォントのエンコーディングを変更できないのでしょうか。

答え1

ビットマップのエンコーディングを使用する場合、実際にはフォントを再エンコードするわけではありません。違いを確認するには、マップ内の A と B を交換してみましょう。

  /B/A

その後コンパイルすると(マップの名前を変更しました):

\pdfmapline{=cmr10 <testcmrenc.enc <cmr10.pfb}
`AB'
\end

出力は次のようになります。

ここに画像の説明を入力してください

そのため、グリフは再エンコードされ、場所が入れ替わりました。

コンパイルすると

\pdfmapline{=cmr10 <testcmrenc.enc}
`AB'
\end

出力は次のようになります。

ここに画像の説明を入力してください

再エンコードは不要です。しかし、PDFにコピー&ペーストすると、結果は次のようになります。

`BA'

mapline コマンドを削除してコピー アンド ペーストすると、次のようになります。

‘AB’

注文と見積の両方が変更されたことに注意してください。

したがって、ビットマップでエンコーディング ベクトルを使用すると、ビットマップのエンコーディングは変更されず、コピー アンド ペーストを改善するためにのみ使用されます (これはすでに非常に優れた機能です)。

関連情報