我在我的系统(OSX10.9.1)上安装了各种字体,并且能够在我的所有工具和应用程序(包括LaTeX安装)中毫无问题地使用它们,但是我试图在matplotlib
(使用text.usetex=False
)中指定一个特定的字体会产生意想不到的和令人困惑的结果。在
例如
font = {'family': 'sans-serif',
'sans-serif': ['Open Sans', 'Avenir', 'sans-serif']}
plt.rc('font', **font)
结果既没有使用opensans也没有使用Avenir,尽管指定了一个大小(例如,'size': 20
)会按预期更改大小。在
奇怪的是,指定一个权重不仅会改变权重,还会导致字体发生变化。例如
^{pr2}$似乎导致了使用opensan(但看起来像是额外加粗而不是加粗)。如果我把重量设置为550或更大,我会得到相同的效果;而任何一个较小的结果都会导致错误的字体。我在其他字体(例如。。Sika或Gill Sans),不管字体是OT、TT,还是作为系统字体或用户字体,都可以看到这一点。在
为什么matplotlib
以这种奇怪的方式响应。我是否应该更改matplotlib
(或Python)设置或配置选项以确保获得预期的行为?也许还有其他方法可以指定字体的粗细吗?在
FWIW,下面是Open Sans在我的字体安装中的外观:
所有这些都可以由Python按预期(在/Users/Rax/Library/Fonts/
)找到
import matplotlib.font_manager
print matplotlib.font_manager.findSystemFonts(fontpaths=None)
以及
font_manager.FontProperties(fname='/Users/Rax/Library/Fonts/OpenSans-ExtraBold.ttf').get_name()
font_manager.FontProperties(fname='/Users/Rax/Library/Fonts/OpenSans-Regular.ttf').get_name()
正如预期的那样,这两种字体都将“Open Sans”报告为字体名称
font_manager.FontProperties(fname='/Users/Rax/Library/Fonts/OpenSans-Regular.ttf').get_weight()
报告“正常”。在
如果您还没有,您可能需要设置一个^{} file ,看看这些设置是否有效。把它放在
~/.matplotlib/matplotlibrc
中,它将在启动时自动读取。我还没有为字体定制我的字体,但当我改变了它的一些其他设置(特别是图像DPI)时,我用pylab重新启动IPython时,它被选中了,所以希望它能为您工作。在相关问题 更多 >
编程相关推荐