¿Por qué cambiar la codificación no funciona en pdfTeX para fuentes Type1?

¿Por qué cambiar la codificación no funciona en pdfTeX para fuentes Type1?

El uso pdftexen los siguientes archivos cambia la codificación de la fuente de mapa de bits (esto se puede verificar copiando y pegando el texto del PDF resultante):

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

donde cmr10.ences el siguiente (se diferencia del valor predeterminado solo en /quoterightcambiado a /uni0027y /quoteleftcambiado a /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

Ahora cambia el \pdfmaplinea =cmr10 <cmr10.enc <cmr10.pfb. pdftexfalla con este error:

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.

Esto es extraño, porque en ambos casos se utiliza el mismo archivo enc. Y la fuente de mapa de bits demuestra que no hay ningún problema con el nombre uni0027. Entonces, ¿por qué no es posible cambiar la codificación de la fuente Type1 en pdftex?

Respuesta1

Cuando usas la codificación para un mapa de bits, en realidad no vuelves a codificar la fuente. Para ver la diferencia intercambiemos A y B en tu mapa:

  /B/A

Si luego compila (he cambiado el nombre de su mapa):

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

la salida se ve así:

ingrese la descripción de la imagen aquí

Entonces los glifos han sido recodificados y han cambiado de lugar.

si compilas

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

la salida se ve así:

ingrese la descripción de la imagen aquí

Entonces no hay recodificación. Pero si luego copia y pega en el pdf, el resultado es

`BA'

Si elimina el comando mapline y copia y pega:

‘AB’

Observar que tanto el pedido como la cotización han cambiado.

Entonces, usar un vector de codificación con mapas de bits no cambia la codificación de los mapas de bits, sino que "sólo" se usa para mejorar copiar y pegar (lo cual ya es algo bastante bueno).

información relacionada