有没有办法在 LuaLaTeX 中不使用 china2e 来获取 ℔ (U+2114)?

有没有办法在 LuaLaTeX 中不使用 china2e 来获取 ℔ (U+2114)?

我想使用在 LuaLaTeX 中。不幸的是,似乎最常用的字体中国2e从 1997 年开始 - 我发现的唯一一个据称支持这个符号的软件包 - 甚至在最新的 TeXlive 发行版中都不可用。

\documentclass{scrartcl}
\usepackage{microtype}

\begin{document}
   L B bar = U+2114 = ℔
\end{document}

TeX Gyre Bonum通过 用作主字体时fontspec,出现以下错误:

Gives: Missing character: There is no ℔ (U+2114) in font TeXGyreBonum:mode=node;language=dflt;+tlig;!

现在我只剩下两个选择(我想,如果还有更多,请纠正我):

  1. 找到一种方法来利用已有 23 年历史的软件包 (china2e)
  2. 找到支持该精确符号的字体

我怎样才能实现这两个目标(但我倾向于第二种选择)?

答案1

albatross使用texlive中的新工具

albatross 0x2114

在我的系统中提供了相当多的字体。例如,texlive 中也有 dejavu:

\documentclass{scrartcl}
\usepackage{microtype}
\usepackage{fontspec}
\setmainfont{dejavusans}
\begin{document}
   L B bar = U+2114 = ℔
\end{document}

在此处输入图片描述

答案2

您可以从包含该符号的任何字体中取出符号。一种不改变主字体的好方法是使用 将字符设置为活动字符\newunicodechar

\documentclass{article}
\tracinglostchars=2
\usepackage{fontspec}
\usepackage{newcomputermodern}
\usepackage{newunicodechar}

\newfontfamily\symbolfont{Junicode}[Scale=MatchUppercase]

\newcommand\lbbar{{\symbolfont\symbol{"2114}}}
\newunicodechar{^^^^2114}{\lbbar} % ℔

\begin{document}
lb ℔
\end{document}

Junicode 示例

包含此字形的免费字体包括:Cardo、Code2000、DejaVu Sans、Everson Mono、FreeSerif、FreeSans、Junicode、Linux Libertine、Noto Sans、Noto Serif 和 Symbola。Noto 字体特别有用,因为它们有多种宽度和粗细,因此很可能至少有一种字体与您的其他字体相匹配。

答案3

LuaTeX 中可以使用 fontspec 的 fallback 机制将多种字体合并在一起。当缺少某个字符时,它会自动在 中搜索该字符Noto Sans,其中存在该字符。您还可以设置更多 fallback 字体。这样,您就不必更改文档的主字体了。

\documentclass{scrartcl}
\usepackage{fontspec}
\usepackage{microtype}

\directlua{luaotfload.add_fallback("genericfallback",
    {
      "NotoSans:mode=node;"
    })
}

\setmainfont{TeX Gyre Bonum}[RawFeature={fallback=genericfallback}]

\begin{document}
    the brown fox jumped over the lazy dog ℔
\end{document}

相关内容