似乎无法在网上找到答案。
我正在将 Linux Libertine 字体与 LuaLaTeX 结合使用,但遇到两个字符的问题:ɭ 和 ɳ。问题是 Linux Libertine 在其粗体系列中不支持这些字符。我的解决方法是告诉 LaTeX 在以下情况下使用非常相似的 Minion 3 字体:
\documentclass{article}
\usepackage{fontspec}
\usepackage{newunicodechar}
\setmainfont{Linux Libertine}
\newunicodechar{ɭ}{{\fontspec{Minion3} ɭ}}
\newunicodechar{ɳ}{{\fontspec{Minion3} ɳ}}
\begin{document}
The bold Minion 3 characters \textbf{ɭ, ɳ} look perfect, but I want the regular ɭ, ɳ characters to be in Linux Libertine.
\end{document}
我想知道是否有可能只在粗体环境中进行这种替换?也许可以通过条件语句(大致意思为)每当文本为粗体时,那么\newunicodechar{...}
,或者通过其他方法用 Linux Libertine 粗体 ɭ, ɳ 替换 Minion 3 的粗体等效项来实现?或者也许有一个使用 Lua 代码的解决方案。
任何帮助或想法都将不胜感激,谢谢!
答案1
你应该绝不在文档中使用\fontspec
。定义新的字体系列效率更高。
\bfseries
添加一个条件,当发出时该条件为真。
\documentclass{article}
\usepackage{fontspec}
\usepackage{newunicodechar}
\setmainfont{Linux Libertine O}
\newfontfamily{\boldsub}{Noto Sans}
\makeatletter
\newif\if@boldface
\AddToHook{cmd/bfseries/after}{\@boldfacetrue}
\newcommand{\maybe@boldsub}[1]{%
\if@boldface
{\boldsub#1}%
\else
#1%
\fi
}
\newunicodechar{ɭ}{\maybe@boldsub{ɭ}}
\newunicodechar{ɳ}{\maybe@boldsub{ɳ}}
\makeatother
\begin{document}
The bold Minion 3 characters \textbf{ɭ, ɳ} look perfect,
but I want the regular ɭ, ɳ characters to be in Linux Libertine.
\end{document}
抱歉,使用的是 Noto Sans,但我没有 Minion 3,因此我使用了一种非常独特的字体来查看替换确实已完成。