
Esta questão está relacionada com as respostas a esta pergunta:Como o TeX cria DVI sem ler o arquivo TFM?
Vamos modificar apenas o arquivo TFM para cmr10 (e alterar o nome da fonte, é claro), deixando todos os demais arquivos relacionados à fonte inalterados:
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
Teste a nova métrica:
\setbox0=\hbox{A}
\showbox0
\font\myfont=mycmr10\myfont
\setbox0=\hbox{A}
\showbox0
A saída confirma que a nova métrica funciona:
\hbox(6.83331+0.0)x7.50002
\hbox(6.83331+0.0)x3.99998
Agora compile este test.tex
\font\myfont=mycmr10\myfont
Ab
\bye
Na saída de xdvi, as letras dvips e dvipdfmx se sobrepõem. Então, todos eles ainda leem o arquivo TFM? Embora a saída do dvips não indique isso, o xdvi não deveria fazer isso.
Responder1
O mycmr10.vf
arquivo inclui a nova largura do caractere. Então xdvi
sabe disso desta fonte e os personagens se sobrepõem. Mas xdvi
não lê o cmr10.tfm
arquivo (como mencionado no tópico anterior).
Você pode tentar isso em seu diretório de trabalho:
tftopl cmr10.tfm > cmr10.pl
edite cmr10.pl para que o caractere A tenha largura diferente.
pltotf cmr10.pl
Agora você tem uma "métrica incorreta" cmr10.tfm
em seu diretório de trabalho. Gerar formato:
tex -ini plain
\dump
usar formato:
tex -fmt plain \\relax Ab\\end
Depois xdvi texput
mostra os caracteres não sobrepostos (porque coloca os caracteres pelas larguras dos caracteres lidos cmr10.pfb
) mas dvips
lê dvipdfmx
sua métrica alterada e faz a correção dos caracteres: eles se sobrepõem.