调用外部字体时如何避免使用 Fontspec

调用外部字体时如何避免使用 Fontspec

我最近从https://www.dafont.com,当我将它调用到我的文档中时,需要使用 进行fontspec打包和编译lualatex。这导致了几个问题,其中大部分(尽管不是全部)我已经能够解决。

我不知道这是否可行,但我正在尝试找到一种方法来将上述字体调用到我的文档中,而无需使用fontspec.

考虑以下代码:

\documentclass{book}

\ifdefined\directlua
  \usepackage{fontspec}
\else
  \usepackage[T1]{fontenc}
  \usepackage[nomath]{lmodern}
\fi

\newfontfamily\CloisterBlack{CloisterBlack.ttf}
\begin{document}
\thispagestyle{empty}
\huge
\CloisterBlack{How to Use This Font without Fontspec?}
\end{document}

编译后lualatex会产生以下结果:

在此处输入图片描述

我想,也许我可以\usepackage{fontspec}用 替换包\usepackage[T1]{fontenc}\usepackage[nomath]{lmodern},但是当我用 编译代码时pdflatex出现错误。

问题:我如何(如果可能的话)在不使用的情况下将外部下载的字体调用到文档中并进行编译fontspec?(我以为我找到了一种方法,通过替换,fontspec直到unicode-math我发现后一个包会自动加载前一个包)。欢迎提出建议。

谢谢。

答案1

在 pdftex(即 8bit TeX)中,字体管理比 luaTeX 复杂 100 倍,因为有长期开发陷入死胡同的 decal。您必须管理 tfm 文件、enc 文件、map 文件、pfb 文件、vf 文件等。我希望您不想这样做。

但是如果您想要这个,那么我会向您展示更简化的管理(没有虚拟字体,并且 TeXlive 中存在固定的 enc 文件)。在命令行上运行:

otftotfm --no-virtual -e xl2 CloisterBlack.ttf cloister

这将创建文件cloister.tfm。将其保存在实际目录中。然后您可以尝试:

\ifx\directlua\undefined
  \pdfmapline{=cloister  CloisterBlack "XL2encoding ReEncodeFont" <xl2.enc <CloisterBlack.ttf}
  \font\cl=cloister
\else
  \input luafonts  % initializing extended \font primitive
  \font\cl=[CloisterBlack]
\fi

{\cl How to Use This Font without Fontspec?}

\bye

您可以使用pdftexluatex进行测试。请注意,在这两种情况下我都没有使用fontspec

相关内容