使用 pdfLaTeX 获取 fontspec 字体

使用 pdfLaTeX 获取 fontspec 字体

我必须制作一个最初用 LuaLaTeX 编写的文档,使其兼容 pdfLaTeX 和 LuaLaTeX。除了字体不同之外,其他一切都正常。如何强制 pdfLaTeX/fontenc 使用与 fontspec 相同的字体?

最小示例(省略 ifluatex 以避免混乱):

\documentclass[fontsize=11pt]{scrreprt}
% \usepackage{fontspec}
\usepackage{lmodern}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}

\begin{document}
    \chapter{Chapter}
    \section{Section}
    Text with some formulas: $a=1$.
\end{document}

通过使用lmodern,文本的字体看起来几乎一致,但数学字体有所不同:

# pdffonts output for pdflatex with lmodern, fontenc and inputenc:
name                                 type              encoding         emb sub uni object ID
------------------------------------ ----------------- ---------------- --- --- --- ---------
ZGMFNK+LMSans10-Bold                 Type 1            Custom           yes yes no       4  0
YIMXCY+LMRoman10-Regular             Type 1            Custom           yes yes no       5  0
GXEVRM+LMMathItalic10-Regular        Type 1            Custom           yes yes no       6  0
YIMXCY+LMRoman10-Regular             Type 1            Custom           yes yes no       7  0

# pdffonts output for lualatex with fontspec:
name                                 type              encoding         emb sub uni object ID
------------------------------------ ----------------- ---------------- --- --- --- ---------
SSPBGH+LMSans10-Bold                 CID Type 0C       Identity-H       yes yes yes      4  0
XXBUAG+LMRoman10-Regular             CID Type 0C       Identity-H       yes yes yes      5  0
EDWHGC+CMMI10                        Type 1            Builtin          yes yes no       6  0
HVZLMP+CMR10                         Type 1            Builtin          yes yes no       7  0

因此,类型和编码以及数学字体都不同。

答案1

不可能为 LuaTeX 和 pdfTeX 获取相同的字体编码,原因很简单,LuaTeX使用 OpenType 字体,而 pdfTeX 使用 Type 1 字体。不过,通过将选项传递给fontspec,可以获取相同的数学字体。nomathlmodern

如果你使用的是 2018 版 LaTeX,你可以删除\usepackage[utf8]{inputenc}因为UTF-8 现在是标准编码

\documentclass[fontsize=11pt]{scrreprt}
\ifdefined\directlua
  \usepackage{fontspec}
\else
  \usepackage[T1]{fontenc}
  \usepackage[nomath]{lmodern}
\fi

\begin{document}
    \chapter{Chapter}
    \section{Section}
    Text with some formulas: $a=1$.
\end{document}

运行pdflatex我得到这个

$ pdflatex test.tex
$ pdffonts test.pdf
name                                 type              encoding         emb sub uni object ID
------------------------------------ ----------------- ---------------- --- --- --- ---------
ZGMFNK+LMSans10-Bold                 Type 1            Custom           yes yes no       4  0
KOIJYY+LMRoman10-Regular             Type 1            Custom           yes yes no       5  0
EDWHGC+CMMI10                        Type 1            Builtin          yes yes no       6  0
HVZLMP+CMR10                         Type 1            Builtin          yes yes no       7  0

运行lualatex我得到这个

$ lualatex test.tex
$ pdffonts test.pdf
name                                 type              encoding         emb sub uni object ID
------------------------------------ ----------------- ---------------- --- --- --- ---------
SSPBGH+LMSans10-Bold                 CID Type 0C       Identity-H       yes yes yes      4  0
HXVMKT+LMRoman10-Regular             CID Type 0C       Identity-H       yes yes yes      5  0
EDWHGC+CMMI10                        Type 1            Builtin          yes yes no       6  0
HVZLMP+CMR10                         Type 1            Builtin          yes yes no       7  0

相关内容