LaTeX+dvips 的自定义字体

LaTeX+dvips 的自定义字体
\documentclass[twoside, openany]{book}

\usepackage[dvipsnames,svgnames,x11names]{xcolor}
\usepackage[dvips]{graphicx}
\usepackage{lipsum}

\special{papersize=145mm,220mm}
\textwidth=113mm \textheight=180mm
\topmargin=-14mm
\footskip=11mm
\oddsidemargin=-12.6mm
\evensidemargin=-6.4mm

\newfont{\weird}{abcr8r at 14pt}

\begin{document}
{\weird 1234567890 abcd}
\medskip
 \lipsum
\end{document}

出版商需要带有页码的页面样式和带有 EuropaDemi 字体的标题(他们没有自己的样式文件,甚至几乎从不使用 LaTeX 手稿!)

我采用了此字体 EuropeDemi.otf,经过创建 afm-、tfm-、ttf- 和 vf- 文件进行一些转换后,我创建了新的 TTFONTS 文件夹并将其添加到配置中。因此,我已将此字体指定为某个新的字体系列“abc”。

TFM 文件夹中有 5 个文件:abcr8r、abcr8t、abcr7t、abcr6a 和 rabcr6a(尽管没有检测到它们的用法有差异)

为了进行文本化,我需要 LateX->Dvips (和俄语编码)

但在 *.dvi 和 *.ps 中,这些新字体字母看起来像是光栅化的,边距很差。不过,如果我增加分辨率或增加字母大小,Microsoft Word 中的原始 EuropeDemi.otf 看起来就没问题了。

1) 有人知道原因和修复/避免的方法吗?也许有一些“内部”方法可以添加此字体(例如软件包,而不是我自己创建这些文件)。

2) tfm 文件名中的数字 6、7、8(abcr8r、abcr8t、abcr7t、abcr6a 和 rabcr6a)是什么意思?对于页码,我需要 14pt,对于标题则需要更大

谢谢

答案1

如果 XeLaTeX 是一种选择,那么您可以通过为您的操作系统安装它并使用 来轻松使用该字体fontspec。这样做的好处是允许您使用\specialpdfLaTeX 无法使用的 ,因为 XeLaTeX 的处理过程.tex是多阶段的,类似于使用 LaTeX 然后在编译后转换为 PDF 的过程。

我没有您的字体,但这里有一个我有的字体示例。请注意,我们需要为指定一个非默认驱动程序,以便geometry允许 s \special。默认值是xetex,但您的评论表明这可能不太适合您的代码,您可能希望指定替代方案。我之所以使用,是geometry因为建议这样做,而不是手动设置布局尺寸,并且会自动确保将适当的选项传递给后端驱动程序。

\documentclass[twoside, openany]{book}
\usepackage[dvipsnames,svgnames,x11names]{xcolor}
\usepackage{graphicx}
\usepackage{lipsum}
\usepackage{geometry}
\geometry{driver=dvipdfm,,papersize={145mm,220mm},textheight=180mm,footskip=11mm,inner=12.8mm,outer=19mm,verbose}
\usepackage{fontspec}
\newfontfamily\myweirdfont{Neris Light}
\DeclareRobustCommand\weird{\fontsize{14pt}{18pt}\myweirdfont}

\begin{document}
{\weird 1234567890 abcd\par}
\medskip
 \lipsum
\end{document}

奇怪的字体和常规字体

我没有任何西里尔文可供测试,但polyglossia可以使用或babel也可以工作。fontspec可以在需要时切换到西里尔文脚本。请参阅fontspec的手册,如果适用,polyglossia请参阅 的。

请注意,此解决方案要求您的.tex文件采用 UTF-8 编码。如果您在使用标准 TeX 连字符(如 等)时遇到任何问题-----则可能是您使用的是旧版本的fontspec。在这种情况下,只需添加

\defaultfontfeatures{Ligatures=TeX}

现在是默认设置,但以前并非如此。

答案2

  1. Dvips 无法处理 ttf 字体,只能处理 pk 和 Type1 (pfb) 字体;因此,在没有合理的 pfb 的情况下,它会回退到 Metafont,或者在您的情况下,ttf2pk生成并包含光栅字体。

  2. 你需要阅读字体名称文档这解释了受 Lore 8.3 格式(例如 DOS 和 VAX)约束的字体的“标准”命名方案。在这种情况下,8r 是 8 位原始;8t 是 8 位 Cork TeX 编码;7t 是 7 位 Old TeX 编码;6a 是 T2A Cyrillic 编码。所有 8 位 TeX 字体都需要一个编码标识符来使用适当的字母/脚本。

因此,如果您想采用旧的 [La]TeX+dvips 方式,您需要:

  1. sourcefontname.pfbsourcefontname.afm文件。您可以通过使用 FontForge 等处理字体来获取这些文件。

  2. tfm按照 LY1 的说明,使用适当的编码为你的字体制作文件拖船, 例如:

afm2tfm [源字体名称] -T T2A.enc -v [目标字体名称].vpl >> [目标字体名称].map
pltotf [目标字体名称].vpl

您应该获得一个targetfontname.tfm和一个targetfontname.map文件,您应该安装它们;以及一个targetfontname.vpl您可以丢弃的临时文件。

或者,您也可以使用该afm2pl工具。

afm2pl -p T2A.enc [sourcefontname] [targetfontname]
pltotf [targetfontname]
  1. pfb文件放入/fonts/type1/foundry"、将tfm文件放入/fonts/tfm/foundry、并将放入目录map中,然后在系统上/fonts/map/dvips执行。updmap --add targetfontname.map

  2. 在源代码中加载 [targetfontname] 并照常执行 LaTeX 和 dvips。此过程还会为 pdflatex 设置字体。

如果你决定这样做,我鼓励你遵循字体名称为字体命名。这只是一个标准化的问题。

如果您使用非基于 TeXLive 的实现(如 MikTeX),字体实用程序的语法可能会有所不同。请查看您的文档以了解详细信息。

相关内容