让我们获取字体的表格cmctt10
。
1)使用tex
+ dvipdfmx
:
$ tex testfont
This is TeX, Version 3.14159265 (TeX Live 2015/Debian) (preloaded format=tex)
(/usr/share/texlive/texmf-dist/tex/plain/knuth-lib/testfont.tex
Name of the font to test = cmctt10
Now type a test command (\help for help):)
*\table
*\bye
[1]
Output written on testfont.dvi (1 page, 4424 bytes).
Transcript written on testfont.log.
$ dvipdfmx testfont.dvi
testfont.dvi -> testfont.pdf
[1]
dvipdfmx:warning: Glyph "(null)" missing in font "cmctt10".
dvipdfmx:warning: Glyph "(null)" missing in font "cmctt10".
dvipdfmx:warning: Glyph "(null)" missing in font "cmctt10".
dvipdfmx:warning: Glyph "(null)" missing in font "cmctt10".
16039 bytes written
2)使用pdftex
:
$ pdftex testfont
This is pdfTeX, Version 3.14159265-2.6-1.40.16 (TeX Live 2015/Debian) (preloaded format=pdftex)
restricted \write18 enabled.
entering extended mode
(/usr/share/texlive/texmf-dist/tex/plain/knuth-lib/testfont.tex
Name of the font to test = cmctt10
Now type a test command (\help for help):)
*\table
*\bye
[1{/usr/local/share/texmf/fonts/map/pdftex/updmap/pdftex.map}]</usr/share/texli
ve/texmf-dist/fonts/type1/public/cmcyr/cmctt10.pfb></usr/share/texlive/texmf-di
st/fonts/type1/public/amsfonts/cm/cmr10.pfb></usr/share/texlive/texmf-dist/font
s/type1/public/amsfonts/cm/cmr7.pfb></usr/share/texlive/texmf-dist/fonts/type1/
public/amsfonts/cm/cmti10.pfb></usr/share/texlive/texmf-dist/fonts/type1/public
/amsfonts/cm/cmtt10.pfb>
Output written on testfont.pdf (1 page, 59482 bytes).
Transcript written on testfont.log.
如果我们通过 执行此操作dvipdfmx
,则插槽 '31,'35,'36,'177 为空。
这个案子到底出了什么问题dvipdfmx
?
答案1
dvipdfmx 可能不太聪明,无法自动理解如此复杂的 type1 字体。请创建一个名为的文件cmctt10.enc
:
/CMCTT10Encoding [
/.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 /afii61352
/.notdef /.notdef /.notdef /guillemotleft /guillemotright /.notdef /space
/.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
/afii10071 /.notdef /afii10023 /.notdef /afii10096 /afii10065 /afii10066 /afii10088
/afii10069 /afii10070 /afii10086 /afii10068 /afii10087 /afii10074 /afii10075
/afii10076 /afii10077 /afii10078 /afii10079 /afii10080 /afii10081 /afii10097
/afii10082 /afii10083 /afii10084 /afii10085 /afii10072 /afii10067 /afii10094
/afii10093 /afii10073 /afii10090 /afii10095 /afii10091 /afii10089 /afii10092
/afii10048 /afii10017 /afii10018 /afii10040 /afii10021 /afii10022 /afii10038
/afii10020 /afii10039 /afii10026 /afii10027 /afii10028 /afii10029 /afii10030
/afii10031 /afii10032 /afii10033 /afii10049 /afii10034 /afii10035 /afii10036
/afii10037 /afii10024 /afii10019 /afii10046 /afii10045 /afii10025 /afii10042
/afii10047 /afii10043 /afii10041 /afii10044 /.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
以及一个名为的文件cmctt10.map
:
cmctt10 cmctt10 <cmctt10.pfb <cmctt10.enc
然后
dvipdfmx -f cmctt10.map testfont.dvi
创建所需的 pdf。请注意,dvipdfmx 知道编码cmctt10.enc
。
答案2
字体cmctt10.pfb
包含以下部分
dup dup 161 10 getinterval 0 exch putinterval
dup dup 173 23 getinterval 10 exch putinterval
dup dup 127 exch 196 get put
readonly def
用于编码向量的定义。
Dvipdfmx 不会考虑此类情况,而 pdftex 和 dvips 则会处理此类情况。您可以使用自己的.enc
文件来解决此问题。