首页 > 解决方案 > Matplotlib 在同一文本对象中有 mathtext 方程和粗体特殊 unicode 字符

问题描述

作为我正在进行的项目的一部分,我需要在 Matplotlib 文本艺术家中同时拥有希伯来语的粗体文本和 mathtext 方程。但是,我需要使用(现代计算机)字体集呈现 mathtext 方程'cm',并将希伯来文本呈现为实际的粗体希伯来文本而不是虚拟符号。
我尝试使用自定义 matplotlib 字体和mathtext.fallback_to_cm标志来尝试诱使渲染器使用我的字体渲染希伯来语,并使用 cm 渲染其他所有内容,但它似乎不起作用,即使这样做也会非常不便携和混乱(创建一个自定义 Arial 字体,但只有希伯来字符,只是为了使几句话加粗)。此外,文档似乎表明自定义模式“不受支持,将来可能会消失”这是一些演示问题的代码:

import matplotlib.pyplot as plt

plt.rcParams['text.latex.preamble'] = [r'\usepackage{lmodern}']

#plt.rcParams['mathtext.fontset'] = 'cm' #disable/enable this line!!

plt.text(0.1, 0.5, "equation: $\\sum_i2^3$. bold text: $\\bf{א}$", fontsize=20)

plt.show()

启用或禁用注释掉的行将在常规希伯来字母和常规数学文本方程之间交替。
我用来寻找解决方案
的一些资源:mathtext Matplotlib 指南(请参阅“字体”)
rcparams 选项(用于字体自定义,ctrl+F “mathtext”)
Stackoverflow 回答并解释了如何仅将部分文本设为粗体

编辑: 现代计算机的字体中没有希伯来字符。但是,这些字符不需要是计算机现代字体,这似乎是 Matplotlib 方面的一个限制,我希望可以以比创建新字体系列更好的方式绕过它。

标签: pythonmatplotlib

解决方案


推荐阅读