带有 OpenDyslexic 字体的数学部分

带有 OpenDyslexic 字体的数学部分

调用lualatex,我设法使所有纯文本都使用 Open Dyslexic 字体(安装了最新版本 0.910.12-rc2)显示,方法是按照此处描述的步骤. 读完本文后线,我有以下 MWE:

\documentclass{article}

\usepackage{fontspec}
\usepackage{unicode-math} %% Why is this package needed?
\defaultfontfeatures{Ligatures=TeX}

\setmainfont{OpenDyslexic}
\setmathfont{OpenDyslexic} %% Unfortunately not enough

\begin{document}

Any dyslexia math fonts out there?

Given $\Delta = b^2 - 4 ac$, we have 
\[ r_{\pm} = \frac{- b \pm \sqrt{\Delta}}{2a}.\]

\end{document}

但是,所有数学部分仍然使用通常的 TeX 数学字体显示。事实上,我有以下警告:

Package fontspec Warning: Font "OpenDyslexic" does not contain requested
(fontspec)                Script "Math".
Package fontspec Warning: OpenType feature 'Style=MathScript' (ssty) not
(fontspec)                available for font 'OpenDyslexic' with script
(fontspec)                'CustomDefault' and language 'Default'.
Package fontspec Warning: OpenType feature 'Style=MathScriptScript' (ssty) not
(fontspec)                available for font 'OpenDyslexic' with script
(fontspec)

在直接支持数学或至少数学变体之前,我如何在数学模式中使用现有的字母?

答案1

您想用 仅覆盖数学字体的字母range=。OpenDyslexic 没有数学符号或 OpenType 数学表,因此您必须先加载数学字体,然后使用 OpenDyslexic 仅覆盖字母和数字。您可以尝试类似这样的方法。(警告:我没有字体,因此未经测试。)

\documentclass{article}
\tracinglostchars=3 % Report an error if a font does not have a symbol.

\usepackage{fontspec}
\usepackage{unicode-math}
\defaultfontfeatures{ Ligatures=TeX,
                      Scale=MatchUppercase }

\setmainfont{OpenDyslexic}[Scale=1.0]
\setmathfont{Fira Math} % Or maybe try KPMath-Sans?
\setmathfont{OpenDyslexic Italic}[range=it/{Latin,latin}]
\setmathfont{OpenDyslexic}[range=up/{Latin,latin,num}]

\begin{document}

Any dyslexia math fonts out there?

Given $\Delta = b^2 - 4 ac$, we have 
\[ r_{\pm} = \frac{- b \pm \sqrt{\Delta}}{2a}.\]

\end{document}

如果 OpenDylexic 包含希腊字母,您可以删除限制/{Latin,latin,num}。如果您还想使用它的基本符号,如加号和乘号,您可以尝试更改range=up/{Latin,latin,num}range={"01-"FF,up/{Latin,latin,num}}

如果你不想在数学模式下出现倾斜的字母,请unicode-math使用选项加载

\usepackage[math-style=upright]{unicode-math}

附言

上述示例将仅加载来自 OpenDyslexic 的字母和数字。要加载其他符号,请将它们添加到选项中range=。例如,这演示了使用 OpenDyslexic 版本的数学运算符的几种方法:

\setmathfont{OpenDyslexic}[range={up/{Latin,latin,num},"2B,"2D,\cdot,`×}]

任何没有类似覆盖的符号都是从 Fira Math 加载的。但是,有些符号 Fira Math 没有,例如,我相信,⬜ (U+2B1C, \lgwhtsquare)。你可以从其他字体加载这些符号,例如:

\setmathfont{TeX Gyre DejaVu Math}[range=\lgwhtsquare]

相关内容