为 pdftex 和 CJK.sty 指定 CJK 字体

为 pdftex 和 CJK.sty 指定 CJK 字体

我正在编译一个用 编写的日文 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包中查看。


对不熟悉CJKCJK 字体的人进行全面测试:

  1. 下载 IPA 字体http://sourceforge.jp/projects/ipafonts/releases/

  2. 使用这个命令行来创建很多.tfm文件:

    ttf2tfm ipamp.ttf -q -w ipamp@Unicode@
    

    我们在控制台上有这条地图线:

    ipamp@Unicode@   ipamp.ttf
    
  3. 编写一个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}
    
  4. 使用此 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}
    

相关内容