我正在编译一个用 编写的日文 TeX 文件CJK.sty
,并使用IPA 字体。我曾经ttf2tfm
生成tfm
文件。有没有办法直接从 tex 文件内部判断pdftex
一组tfm
文件对应于一个 Unicode truetype 字体?我目前正在使用
\pdfmapfile{+ipamp.map}
使用ipamp.map
以下形式的文件
ipamp00 <ipamp.ttf <ipamp00.enc
ipamp01 <ipamp.ttf <ipamp01.enc
ipamp02 <ipamp.ttf <ipamp02.enc
ipamp03 <ipamp.ttf <ipamp03.enc
... continuing to ipampff ...
我认为这相当愚蠢。此外,在 的最后阶段将字体嵌入 pdf 文件pdftex
非常慢。那么我的问题是是否有更好的方法。例如,对于dvipdfmx
,您只需一行
ipamp@Unicode@ unicode ipamp.ttf
背景:我正在准备一个日语 TeX 文件,准备提交给预印本服务器 (arXiv),但不幸的是,该服务器不接受 XeTeX 或 LuaTeX。该服务器只有日语 wadalab 字体,相当丑陋。所以我想改用 IPA。我上面描述的方法有效,但听起来并不完美。
答案1
pdfTeX 现在支持使用 SFD 文件的单行映射语法。它尚未记录。您可以使用
ipamp@Unicode@ <ipamp.ttf
代替
ipamp00 <ipamp.ttf <ipamp00.enc
ipamp01 <ipamp.ttf <ipamp01.enc
ipamp02 <ipamp.ttf <ipamp02.enc
ipamp03 <ipamp.ttf <ipamp03.enc
......
你甚至可以使用
\pdfmapline{=ipamp@Unicode@ <ipamp.ttf}
在你的 TeX 文件中。那么你就不需要写 mapfile 了。
zhwinfonts.tex
这种方法几年前就用于中文。您可以在我们的zhmetrics
包中查看。
对不熟悉CJK
CJK 字体的人进行全面测试:
使用这个命令行来创建很多
.tfm
文件:ttf2tfm ipamp.ttf -q -w ipamp@Unicode@
我们在控制台上有这条地图线:
ipamp@Unicode@ ipamp.ttf
编写一个
c70ipamp.fd
在 LaTeX NFSS 中安装字体:\DeclareFontFamily{C70}{ipamp}{\hyphenchar \font\m@ne} \DeclareFontShape{C70}{ipamp}{m}{n}{<-> CJK * ipamp}{\CJKnormal} \DeclareFontShape{C70}{ipamp}{bx}{n}{<-> CJKb * ipamp}{\CJKbold}
使用此 TeX 文件进行测试(UTF-8 编码,使用 编译
pdflatex
):\documentclass{article} \AtBeginDvi{\pdfmapline{=ipamp@Unicode@ <ipamp.ttf}} \usepackage{CJK} \begin{document} \begin{CJK*}{UTF8}{ipamp} 日本語 \clearpage\end{CJK*} \end{document}