fontspec/unicode-math 和粗体直立无点 i 的问题

fontspec/unicode-math 和粗体直立无点 i 的问题

unicode-math在数学模式下使用纯和时,我无法获得粗体直立无点 i fontspec。我的 MWE:

\documentclass[border=0.4in]{standalone}
\usepackage{fontspec}
\usepackage{unicode-math}
\begin{document}
  \Huge
  Vector $\symbfup{x}$; compare $\textbf{x}$.
  Unit vector $\symbfup{ı}$; compare $\textbf{ı}$.
\end{document}

在此处输入图片描述

我不确定为什么这个特定的 Unicode 字符与其他字符的处理方式不同。欢迎提出任何建议,只要他们仍然使用fontspecunicode-math

答案1

\symbfup(和其他\sym..命令)将其参数映射到Mathematical Alphanumeric Symbolsunicode 块http://unicode.org/charts/PDF/U1D400.pdf。它只对有目标的符号起作用。您不能使用它进行任意输入。

如果您想使用不在数学 Unicode 块中的粗体 Unicode 字符,则必须使用文本字体。\mathXX可以使用各种字体来实现此目的:

\documentclass{article}
\usepackage{unicode-math}
\setmainfont{Latin Modern Roman} %to force \mathtextbf to use EU-encoding
\begin{document}

%\mathbf is possible too, but \mathtextbf is ihmo clearer
Unit vector $\mathtextbf{\symup{ı}}$; compare $\textbf{ı}$.

\end{document}

在此处输入图片描述

答案2

Unicode 没有数学上粗体无点 i 的规范,因此unicode-math 不能提供自动替换:没有要指向的东西。该字符似乎有其用途(用帽子或箭头表示矢量/方向),但直到 Unicode 未添加它并且字体更新后,\symbfup才能达到它。

因此,就目前而言,这\textbf{\i}似乎是唯一的解决方案,尽管不太好。

以下是在 Unicode 点中搜索“数学无点”的结果(由 UnicodeChecker 提供)

在此处输入图片描述

与搜索“数学小 i”进行对比

在此处输入图片描述

答案3

无论是数学字体Latin Modern Math还是XITS Math粗体版本\imath(“无点 i”)。

看起来,如果在数学模式下遇到ı("text-mode dotless i"),它会被正确映射到\imath。并且,由于没有粗体版本\imathı\symbfup{ı}都产生相同的非粗体输出。

在此处输入图片描述

\documentclass{article}
\usepackage{amsmath} % for "\boldsymbol" macro
\usepackage{fontspec}
\setmainfont{Latin Modern Roman} 
%or: \setmainfont{XITS}
\usepackage{unicode-math}
\setmathfont{Latin Modern Math}  
%or: \setmathfont{XITS Math}

\begin{document}
\Huge
$\imath$, $ı$, 
$\boldsymbol{\imath}$, $\boldsymbol{ı}$, 
$\symbfup{\imath}$, $\symbfup{ı}$. 
\textbf{\i} \textbf{ı} % two forms of text-mode "dotless i"
\end{document}

如果使用unicode-math选项math-style=upright和加载包bold-style=upright,则会得到以下结果:

在此处输入图片描述

字符现在是直立的(这并不奇怪),但数学模式字符仍然不是粗体。

\documentclass{article}
\usepackage{amsmath} % for "\boldsymbol" macro
\usepackage{fontspec}
\setmainfont{Latin Modern Roman} 
%or: \setmainfont{XITS}
\usepackage[math-style=upright,bold-style=upright]{unicode-math}
\setmathfont{Latin Modern Math}  
%or: \setmathfont{XITS Math}

\begin{document}
\Huge
$\imath$, $ı$, 
$\boldsymbol{\imath}$, $\boldsymbol{ı}$, 
$\symbfup{\imath}$, $\symbfup{ı}$. 
\textbf{\i} \textbf{ı} % two forms of text-mode "dotless i"
\end{document}

答案4

在数学模式下,这似乎适用于将文本模式字符插入为数学字母:

\documentclass[border=0.4in]{standalone}
\usepackage{fontspec}
\usepackage{unicode-math}

\DeclareRobustCommand\mbfupdotlessi{\mathalpha\hbox{\rmfamily\upshape\bfseries{ı}}}

\begin{document}
  \Huge
  Vector $\symbfup{x}$; compare $\textbf{x}$.
  Unit vector $a \symbfup{ı} + 1$; compare $a \mbfupdotlessi + 1$, $a \symup{ı} + 1$.
\end{document}

输出

相关内容