找不到matplotlib字体

时间:2014-09-28 14:27:16

标签: python matplotlib fonts

我试图使用字体" Heuristica"在我的matplotlib情节中,但它不会出现。

我定义了" Heuristica"在rcParameter font.serif中的第一个点 - >没有结果

我将font.family更改为" Heuristica"得到了消息

findfont: FontFamily not found

让我思考,因为安装了Heuristica,我可以毫无问题地从其他软件访问它。所以我用了fontManager并做了:

import pylab as pl
la = pl.matplotlib.font_manager.FontManager()
lu = pl.matplotlib.font_manager.FontProperties(family = 'Heuristica')
la.findfont(lu)

得到了:

Out[7]: 'C:\\Windows\\Fonts\\Heuristica-Regular.otf'

显然可以找到Heuristica。 我查找了可用的ttf-Fonts(How can i get list of font family(or Name of Font) in matplotlib),但是Heuristica不在此列表中。

我很乐意提供任何帮助。

1 个答案:

答案 0 :(得分:34)

嗯,mdboom在github解决了问题,所有的功劳都属于他:

  

当您向系统添加新字体时,需要删除fontList.cache文件,以便matplotlib找到它们。

     

它在你的例子中在第4/5行上工作的原因是因为你是从头开始创建一个FontManager(它发送到文件系统并搜索所有字体)。在内部,当matplotlib稍后进行自己的字体查找时,它使用的是已经从fontList.cache文件中的磁盘缓存加载的FontManager。

     

长期来看,我们计划切换到使用操作系统的字体查找机制来解决这个问题,(参见MEP14),但与此同时,你需要在每次需要时删除fontList.cache文件matplotlib发现新字体。

文件fontList.cache位于您的用户文件夹 - > .matplotlib / fontList.cache,适用于Windows,通常为C:\Users\yourUsername\.matplotlib\fontList.cache