\newunicodechar 仅在粗体环境中?

\newunicodechar 仅在粗体环境中?

似乎无法在网上找到答案。

我正在将 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,因此我使用了一种非常独特的字体来查看替换确实已完成。

在此处输入图片描述

相关内容