python中文字体奇怪_“matplotlib”中对字体设置的奇怪响应

我在我的系统(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在我的字体安装中的外观:

1dc0b6444ee018c589a9962f1e82f4c3.png

所有这些都可以由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()

报告“正常”。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值