¿Cuáles son las reglas exactas para leer archivos TFM?

¿Cuáles son las reglas exactas para leer archivos TFM?

Esta pregunta está relacionada con las respuestas a esta pregunta:¿Cómo TeX crea DVI sin leer el archivo TFM?

Modifiquemos solo el archivo TFM para cmr10 (y cambiemos el nombre de la fuente, por supuesto), dejando el resto de archivos relacionados con las fuentes sin cambios:

tftopl cmr10.tfm > mycmr10.vpl
patch <<EOF
--- mycmr10.vpl
+++ mycmr10.vpl
@@ -1,3 +1,4 @@
+(MAPFONT D 0 (FONTNAME cmr10))
 (FAMILY CMR)
 (FACE O 352)
 (CODINGSCHEME TEX TEXT)
@@ -466,7 +467,7 @@
    (CHARHT R 0.694445)
    )
 (CHARACTER C A
-   (CHARWD R 0.750002)
+   (CHARWD R 0.4)
    (CHARHT R 0.683332)
    (COMMENT
       (KRN C t R -0.027779)
EOF
vptovf mycmr10.vpl

Probar nueva métrica:

\setbox0=\hbox{A}
\showbox0
\font\myfont=mycmr10\myfont
\setbox0=\hbox{A}
\showbox0

El resultado confirma que la nueva métrica funciona:

\hbox(6.83331+0.0)x7.50002
\hbox(6.83331+0.0)x3.99998

Ahora compila este test.tex

\font\myfont=mycmr10\myfont
Ab
\bye

En la salida de xdvi, las letras dvips y dvipdfmx se superponen. Entonces, ¿todos ellos leen el archivo TFM? Aunque la salida de dvips no indica esto, xdvi no debería hacerlo.

Respuesta1

El mycmr10.vfarchivo incluye el nuevo ancho de carácter. Entonces xdvilo sabe por esta fuente y los personajes se superponen. Pero xdvino lee el cmr10.tfmarchivo (como se mencionó en el hilo anterior).

Puedes probar esto en tu directorio de trabajo:

tftopl cmr10.tfm > cmr10.pl

edite cmr10.pl para que el carácter A tenga un ancho diferente.

pltotf cmr10.pl

Ahora tiene una "métrica incorrecta" cmr10.tfmen su directorio de trabajo. Generar formato:

tex -ini plain
\dump

utilizar formato:

tex -fmt plain \\relax Ab\\end

Luego xdvi texputmuestra caracteres que no se superponen (porque coloca los caracteres según el ancho de los caracteres leídos desde cmr10.pfb), pero dvipslee dvipdfmxla métrica modificada y corrige los caracteres: se superponen.

información relacionada