LuaLaTeX:针对系列相关 babelfont 声明的通用后备

LuaLaTeX:针对系列相关 babelfont 声明的通用后备

我有一个多语言文档,并使用 babel 在标准平均欧洲脚本和其他脚本之间切换:

\documentclass[english]{minimal}

\usepackage{fontspec}

\usepackage{babel}

\parindent0pt

\babelfont{rm}{Alegreya-Regular.ttf}
\babelfont{sf}{BarlowCondensed-Regular.ttf}
\newfontfamily\sfwide[WordSpace=2.0]{BarlowCondensed-Regular.ttf}

\babelprovide{chinese}
\babelfont[chinese]{rm}{NotoSerifSC-Regular.otf}
\babelfont[chinese]{sf}{NotoSansSC-Regular.otf}


\begin{document}
\rmfamily
Test Test \foreignlanguage{chinese}{中文字} Test Test

\sffamily
Test Test \foreignlanguage{chinese}{中文字} Test Test

\sfwide
Test Test \foreignlanguage{chinese}{中文字} Test Test
\end{document}

由于没有\sfwide提供此语言的版本,因此未打印最后的中文片段。假设我有很多不同的脚本系统(阿拉伯语、希伯来语、亚美尼亚语、古希腊语等)和很多字体系列,所以我需要一个通用的创建 babelfont fallbacks 的方法,理想情况下是这样的

\babelalias{sfwide}{sf} 

这会导致 babel在字体系列上下文中出现时切换到chinese/ 。sf\foreignlanguage{chinese}{...}sfwide

问题我需要如何定义\babelalias#1#2

或者:有没有办法分辨出fontspec\sfwide是的“子” \sffamily

评论

示例中用到的字体可以从google下载: 阿莱格雷亚巴洛诺托 简体中文

因为它有区别:我使用的是 texlive2019 的早期版本(latex.ltx fmtversion 2018-12-01),不,我无法更新。如果在较新版本的 LuaLaTeX 或 babel 中可以做到这一点,我将需要一个补丁。

答案1

我不确定我是否理解了这个问题,但\babelfont可以创建字体系列,以便将 LaTeX 字体方案扩展到非拉丁文字的需求。在这里我使用了不同的颜色,但您可以根据自己最方便的方式定义字体。

\documentclass[english]{minimal}

\usepackage{fontspec}

\usepackage{babel}

\parindent0pt

\babelfont{rm}{FreeSerif}
\babelfont{sf}{FreeSans}
\babelfont{sfwide}{CMU Bright Bold Extended}

\babelprovide{chinese}
\babelfont[chinese]{rm}[Color=2255cc]{IPAMincho}
\babelfont[chinese]{sf}[Color=55cc22]{IPAMincho}
\babelfont[chinese]{sfwide}[Color=cc5522]{IPAMincho}

\begin{document}
\rmfamily
Test Test \foreignlanguage{chinese}{中文字} Test Test

\sffamily
Test Test \foreignlanguage{chinese}{中文字} Test Test

\sfwidefamily
Test Test \foreignlanguage{chinese}{中文字} Test Test
\end{document}

在此处输入图片描述

相关内容