
Этот вопрос связан с ответами на этот вопрос:Как TeX создает DVI, не читая файл TFM?
Давайте изменим только файл TFM для cmr10 (и, конечно, изменим имя шрифта), оставив все остальные файлы, связанные со шрифтами, без изменений:
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
Тест новой метрики:
\setbox0=\hbox{A}
\showbox0
\font\myfont=mycmr10\myfont
\setbox0=\hbox{A}
\showbox0
Вывод подтверждает, что новая метрика работает:
\hbox(6.83331+0.0)x7.50002
\hbox(6.83331+0.0)x3.99998
Теперь скомпилируйте этот test.tex
\font\myfont=mycmr10\myfont
Ab
\bye
В выводе xdvi буквы dvips и dvipdfmx перекрываются. Так что, все они тем не менее читают файл TFM? Хотя вывод dvips этого не показывает, и xdvi не должен этого делать.
решение1
Файл mycmr10.vf
включает вашу новую ширину символа. Поэтому xdvi
знает это из этого источника, и символы перекрываются. Но xdvi
не читает cmr10.tfm
файл (как упоминалось в предыдущей теме).
Вы можете попробовать это в своем рабочем каталоге:
tftopl cmr10.tfm > cmr10.pl
отредактируйте cmr10.pl так, чтобы символ A имел различную ширину.
pltotf cmr10.pl
cmr10.tfm
Теперь у вас в рабочем каталоге есть "плохая метрика" . Сгенерируйте формат:
tex -ini plain
\dump
используйте формат:
tex -fmt plain \\relax Ab\\end
Затем xdvi texput
отображаются неперекрывающиеся символы (потому что он размещает символы по ширине символов, считанной из cmr10.pfb
), но dvips
считывает dvipdfmx
измененную вами метрику и выполняет исправление символов: они перекрываются.