
Diese Frage hängt mit den Antworten auf diese Frage zusammen:Wie erstellt TeX DVI, ohne die TFM-Datei zu lesen?
Lassen Sie uns nur die TFM-Datei für cmr10 ändern (und natürlich den Schriftnamen ändern) und alle anderen Schriftartdateien unverändert lassen:
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
Neue Metrik testen:
\setbox0=\hbox{A}
\showbox0
\font\myfont=mycmr10\myfont
\setbox0=\hbox{A}
\showbox0
Die Ausgabe bestätigt, dass die neue Metrik funktioniert:
\hbox(6.83331+0.0)x7.50002
\hbox(6.83331+0.0)x3.99998
Kompilieren Sie nun diese Datei test.tex
\font\myfont=mycmr10\myfont
Ab
\bye
In der Ausgabe von xdvi überlappen sich die Buchstaben dvips und dvipdfmx. Lesen sie also trotzdem alle die TFM-Datei? Obwohl die Ausgabe von dvips dies nicht anzeigt und xdvi dies nicht tun sollte.
Antwort1
Die mycmr10.vf
Datei enthält Ihre neue Zeichenbreite. xdvi
Kennt dies also aus dieser Quelle und die Zeichen überlappen sich. xdvi
Liest die Datei jedoch nicht cmr10.tfm
(wie im vorherigen Thread erwähnt).
Sie können Folgendes in Ihrem Arbeitsverzeichnis versuchen:
tftopl cmr10.tfm > cmr10.pl
Bearbeiten Sie cmr10.pl, damit der Buchstabe A eine andere Breite hat.
pltotf cmr10.pl
Jetzt haben Sie „schlechte Metrik“ cmr10.tfm
in Ihrem Arbeitsverzeichnis. Format generieren:
tex -ini plain
\dump
Format verwenden:
tex -fmt plain \\relax Ab\\end
Dann xdvi texput
werden nicht überlappende Zeichen angezeigt (weil es die Zeichen nach der ausgelesenen Zeichenbreite platziert cmr10.pfb
), aber dvips
es dvipdfmx
wird Ihre geänderte Metrik gelesen und die Korrektur der Zeichen vorgenommen: Sie überlappen sich.