Warum funktioniert die Änderung der Kodierung in pdfTeX für Type1-Schriftarten nicht?

Warum funktioniert die Änderung der Kodierung in pdfTeX für Type1-Schriftarten nicht?

Die Verwendung pdftexder folgenden Datei ändert die Kodierung für die Bitmap-Schriftart (dies kann durch Kopieren und Einfügen des Textes aus der resultierenden PDF-Datei überprüft werden):

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

wobei cmr10.encFolgendes gilt (es unterscheidet sich vom Standard nur durch /quoterightgeändert in /uni0027und /quoteleftgeändert in /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

Ändern Sie nun \pdfmaplinein =cmr10 <cmr10.enc <cmr10.pfb. pdftexschlägt mit diesem Fehler fehl:

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.

Das ist seltsam, weil in beiden Fällen dieselbe Enc-Datei verwendet wird. Und die Bitmap-Schriftart zeigt, dass es kein Problem mit dem Namen gibt uni0027. Warum ist es also nicht möglich, die Kodierung für die Type1-Schriftart in pdftex zu ändern?

Antwort1

Wenn Sie die Kodierung für eine Bitmap verwenden, kodieren Sie die Schriftart nicht wirklich neu. Um den Unterschied zu sehen, tauschen wir A und B in Ihrer Map aus:

  /B/A

Wenn du dann kompilierst (ich habe deine Map umbenannt):

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

Die Ausgabe sieht folgendermaßen aus:

Bildbeschreibung hier eingeben

Daher wurden die Glyphen neu kodiert und haben ihre Plätze getauscht.

Wenn Sie kompilieren

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

Die Ausgabe sieht folgendermaßen aus:

Bildbeschreibung hier eingeben

Also keine Neukodierung. Wenn man dann aber ein Copy&Paste im PDF macht, ist das Ergebnis

`BA'

Wenn Sie den Mapline-Befehl entfernen und kopieren und einfügen:

‘AB’

Beachten Sie, dass sich sowohl die Bestellung als auch das Angebot geändert haben.

Die Verwendung eines Kodierungsvektors bei Bitmaps ändert also nicht die Kodierung der Bitmaps, sondern dient „nur“ der Verbesserung von Kopieren und Einfügen (was schon eine recht gute Sache ist).

verwandte Informationen