![调用外部字体时如何避免使用 Fontspec](https://linux22.com/image/446690/%E8%B0%83%E7%94%A8%E5%A4%96%E9%83%A8%E5%AD%97%E4%BD%93%E6%97%B6%E5%A6%82%E4%BD%95%E9%81%BF%E5%85%8D%E4%BD%BF%E7%94%A8%20Fontspec.png)
我最近从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
您可以使用pdftex
或luatex
进行测试。请注意,在这两种情况下我都没有使用fontspec
。