我正在编写一个使用matplotlib的Python程序。我想使用matplotlib不包含的字体。 (好吧,我想使用Lucida Grande,它包含在OS X中,但是matplotlib can’t read the .dfont file directly所以我需要发布我自己的.ttf字体。)
似乎matplotlib只在一个目录中查找字体:mpl-data/fonts
。可以tweak matplotlib’s configuration更改mpl-data
目录的位置,但似乎不可能指定多个这样的目录,其中可以找到字体。那是准确的吗?
(我可以将字体放在我系统的全局mpl-data
目录中,但是对于一个应用程序来说,使用全局使用的目录这样做是错误的。我当然不会我想在我的应用程序中包含整个mpl-data
- 加一文件。)
答案 0 :(得分:2)
一种可能性是扩展使用matplotlib here的font manager module提供的响应。具体来说,看起来您可以使用fname
matplotlib.font_manager.FontProperties
参数指定字体的绝对路径(请参阅此处的文档:http://matplotlib.org/api/font_manager_api.html#matplotlib.font_manager.FontProperties)
修改以前的SO响应(稍微简单的问题),如果您可以在工作流程中指定ttf字体文件的绝对路径,这当然值得一试。我在下面使用了内置的MacOS字体(并且可以工作),但也许可以尝试替换您特定的绝对路径&字体,看它是否有效。
import matplotlib
matplotlib.use( "agg" ) #some backend sensitivity explained in previous SO response
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm
fig, ax = plt.subplots()
#specify the absolute path to your font file:
absolute_path_to_ttf_file = '/opt/X11/share/fonts/TTF/VeraSe.ttf'
prop = fm.FontProperties(fname=absolute_path_to_ttf_file)
ax.set_title('Text in a cool font', fontproperties=prop, size=40)
plt.show()
plt.savefig('test.png')