我从Google Fonts下载了字体,想在我的论文和所有图表中使用,即Alegreya字体家族。将字体安装到$HOME/.fonts后,我删除了.cache/matplotlib/fontList.cache,并在rcParams中创建了一个新的font.family = 'Alegreya Sans'的绘图。不幸的是,matplotlib将Alegreya Sans的Thin字体错误地识别为Regular字体。以下最小示例说明了这个错误的检测:
import matplotlib.font_manager
weights = ['ultralight', 'light', 'normal', 'regular', 'book', 'medium',
'roman', 'semibold', 'demibold', 'demi', 'bold', 'heavy',
'extra bold', 'black']
print 'weight'+6*' ', 'file name', '\n'+70*'-'
for weight in weights:
fprops = matplotlib.font_manager.FontProperties(family='Alegreya Sans',
weight=weight)
print weight+(12-len(weight))*' ', matplotlib.font_manager.findfont(fprops)
输出:
weight file name
----------------------------------------------------------------------
ultralight /hmi/kme/.fonts/Alegreya_Sans/AlegreyaSans-Light.ttf
light /hmi/kme/.fonts/Alegreya_Sans/AlegreyaSans-Light.ttf
normal /hmi/kme/.fonts/Alegreya_Sans/AlegreyaSans-Thin.ttf
regular /hmi/kme/.fonts/Alegreya_Sans/AlegreyaSans-Thin.ttf
book /hmi/kme/.fonts/Alegreya_Sans/AlegreyaSans-Thin.ttf
medium /hmi/kme/.fonts/Alegreya_Sans/AlegreyaSans-Medium.ttf
roman /hmi/kme/.fonts/Alegreya_Sans/AlegreyaSans-Medium.ttf
semibold /hmi/kme/.fonts/Alegreya_Sans/AlegreyaSans-ExtraBold.ttf
demibold /hmi/kme/.fonts/Alegreya_Sans/AlegreyaSans-ExtraBold.ttf
demi /hmi/kme/.fonts/Alegreya_Sans/AlegreyaSans-ExtraBold.ttf
bold /hmi/kme/.fonts/Alegreya_Sans/AlegreyaSans-ExtraBold.ttf
heavy /hmi/kme/.fonts/Alegreya_Sans/AlegreyaSans-ExtraBold.ttf
extra bold /hmi/kme/.fonts/Alegreya_Sans/AlegreyaSans-ExtraBold.ttf
black /hmi/kme/.fonts/Alegreya_Sans/AlegreyaSans-Black.ttf
这个问题怎么解决,为什么会出现这种情况?谢谢!
编辑:
当然,在文件夹/hmi/kme/.fonts/Alegreya_Sans/中有更多的文件。
完整列表如下:
AlegreyaSans-BlackItalic.ttf
AlegreyaSans-BoldItalic.ttf
AlegreyaSans-ExtraBoldItalic.ttf
AlegreyaSans-Italic.ttf
AlegreyaSans-Light.ttf
AlegreyaSans-Medium.ttf
AlegreyaSans-ThinItalic.ttf
AlegreyaSans-Black.ttf
AlegreyaSans-Bold.ttf
AlegreyaSans-ExtraBold.ttf
AlegreyaSans-LightItalic.ttf
AlegreyaSans-MediumItalic.ttf
AlegreyaSans-Regular.ttf
AlegreyaSans-Thin.ttf
我的系统:
OpenSuse 13.1 python 2.7
matplotlib 版本 1.4.3
AlegreyaSans-Thin.ttf
,而我得到的是AlegreyaSans-Regular.ttf
,你得到的是AlegreyaSans-ExtraBold.ttf
,而我得到的是AlegreyaSans-Bold.ttf
。其他一切都是相同的。不确定这是否有任何帮助,但至少增加了一个数据点! - tmdavison$HOME/.fonts
中,我在上面的评论中得到的结果是正确的。但是,如果我将它们移动到子目录$HOME/.fonts/Alegreya_Sans
中,就会得到与您相同的结果。 - tmdavison