您尚未登录。

#1 2016-07-31 11:09:51

梦断代码
会员
注册时间: 2016-07-31
帖子: 4

[已解决] Chrome 52 中文字体粗体失效?

(磨蹭了一段时间还是决定发出来问问,看上去自己一个人很难找到原因的样子,搜了一圈也没发现什么结果

我从 AUR 安装的 google-chrome-stable 在几个星期前从 google-chrome-51.0.2704.106-1-x86_64 升级到 google-chrome-52.0.2743.82-1-x86_64,就发现网页里的中文字体全都失去了粗体效果(font-weight: bold 无效了),但英文字体的粗体依然有效。看网页时有种微妙的违和感。

我的 Chrome 字体设置:

579d6b640813e.png

我的 fontconfig 配置:

$ cat /etc/fonts/local.conf 
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<match>
	<test name="family"><string>sans-serif</string></test>
	<edit name="family" mode="prepend" binding="strong">
		<string>WenQuanYi Micro Hei</string>
		<string>WenQuanYi Zen Hei</string>
		<string>WenQuanYi Bitmap Song</string>
		<string>DejaVu Sans</string>
		<string>Noto Color Emoji</string>
	</edit>
</match>
<match>
	<test name="family"><string>serif</string></test>
	<edit name="family" mode="prepend" binding="strong">
		<string>DejaVu Serif</string>
		<string>WenQuanYi Bitmap Song</string>
		<string>WenQuanYi Zen Hei Sharp</string>
		<string>AR PL UMing CN</string>
		<string>AR PL UMing TW</string>
		<string>AR PL New Sung</string>
		<string>Noto Color Emoji</string>
	</edit>
</match>
<match>
	<test name="family"><string>monospace</string></test>
	<edit name="family" mode="prepend" binding="strong">
		<string>WenQuanYi Micro Hei Mono</string>
		<string>WenQuanYi Zen Hei Mono</string>
		<string>WenQuanYi Bitmap Song</string>
		<string>DejaVu Sans Mono</string>
		<string>Noto Color Emoji</string>
	</edit>
</match>
</fontconfig>

粗体在其他应用程序中完全正常。(GNOME Tweak Tool 中一直设置界面字体为 Sans Regular)

求问大家知道什么可能的原因么?或者有什么调查问题的方向么?

最近编辑记录 梦断代码 (2016-09-02 22:26:44)

离线

#2 2016-07-31 11:58:28

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,384
个人网站

Re: [已解决] Chrome 52 中文字体粗体失效?

应该和 fontconfig 没关系。是 Chrome 的字体渲染策略调整了,不再使用伪粗体了吧?

离线

#3 2016-08-01 02:53:27

jack
会员
注册时间: 2013-03-02
帖子: 40

Re: [已解决] Chrome 52 中文字体粗体失效?

我很早就遇到粗体失效问题,但我用的是 chromium ,时间大概超过一年(具体哪个版本忘了),不清楚 chrome 是不是同样情况。当时发现不只中文,有些英文网页,chromium 也用 regular 合成的伪粗体来显示。

当时google一翻的结论是:
chromium是使用系统自带粗体还是合成伪粗体,和网页 font-family 中的字体排序有关。如果系统中存在网页 font-family 设置里的字体,且该字体在 font-family 的排序处于第一位,那么这个网页中的粗体,chromium 会正常调用粗体字体。当 font-family 含有系统自带字体,但该字体的排序不在第一位,粗体部份 chromium 会用 regular 合成伪粗体来显示;系统字体不在 font-family 列表时, chromium 也用伪粗体来显示。

举例来说:
中文字体,我用的是思源黑体,archlinuxcn 网页字体的标题是粗体显示,从理论来说,应该调用 Source Han Sans SC Bold ,可实际 chromium 会用 Source Han Sans SC Regular 合成伪粗体来显示。
archlinuxcn 网页标题 H3 部份 font-family 的设置是:

font-family: sans-serif !important;

sans-serif 是虚拟字体,一般这么设置,浏览器会根据 fontconfig 的排序来调用系统已有字体,无需别的设置。但 font-family 里没有思源黑体时,chromium 用 Source Han Sans SC Regular 合成伪粗体来显示。把 font-family 改成

font-family: sans-serif, Source Han Sans SC !important;

这次虽然 font-family 里有思源黑体,但字体排序在第二位,chromium 还是显示伪粗体。
再改成:

font-family: Source Han Sans SC !important;

或者

font-family: Source Han Sans SC, sans-serif !important;

终于能调用正常粗体显示。

以上步骤可以在 chromium 里用鼠标选中字体,再从右键菜单点击“检查”,找到 font-family 进行修改,看看显示效果,也可以在 Rendered Fonts 看看调用的是什么字体,chrome 的操作步骤应该差不多,只是不知道楼主的情况和我是否相同。

最近编辑记录 jack (2016-08-01 02:57:46)

离线

#4 2016-08-01 10:16:59

梦断代码
会员
注册时间: 2016-07-31
帖子: 4

Re: [已解决] Chrome 52 中文字体粗体失效?

jack 说:

我很早就遇到粗体失效问题,但我用的是 chromium ,时间大概超过一年(具体哪个版本忘了),不清楚 chrome 是不是同样情况。当时发现不只中文,有些英文网页,chromium 也用 regular 合成的伪粗体来显示。

当时google一翻的结论是:
chromium是使用系统自带粗体还是合成伪粗体,和网页 font-family 中的字体排序有关。如果系统中存在网页 font-family 设置里的字体,且该字体在 font-family 的排序处于第一位,那么这个网页中的粗体,chromium 会正常调用粗体字体。当 font-family 含有系统自带字体,但该字体的排序不在第一位,粗体部份 chromium 会用 regular 合成伪粗体来显示;系统字体不在 font-family 列表时, chromium 也用伪粗体来显示。

举例来说:
中文字体,我用的是思源黑体,archlinuxcn 网页字体的标题是粗体显示,从理论来说,应该调用 Source Han Sans SC Bold ,可实际 chromium 会用 Source Han Sans SC Regular 合成伪粗体来显示。
archlinuxcn 网页标题 H3 部份 font-family 的设置是:

font-family: sans-serif !important;

sans-serif 是虚拟字体,一般这么设置,浏览器会根据 fontconfig 的排序来调用系统已有字体,无需别的设置。但 font-family 里没有思源黑体时,chromium 用 Source Han Sans SC Regular 合成伪粗体来显示。把 font-family 改成

font-family: sans-serif, Source Han Sans SC !important;

这次虽然 font-family 里有思源黑体,但字体排序在第二位,chromium 还是显示伪粗体。
再改成:

font-family: Source Han Sans SC !important;

或者

font-family: Source Han Sans SC, sans-serif !important;

终于能调用正常粗体显示。

以上步骤可以在 chromium 里用鼠标选中字体,再从右键菜单点击“检查”,找到 font-family 进行修改,看看显示效果,也可以在 Rendered Fonts 看看调用的是什么字体,chrome 的操作步骤应该差不多,只是不知道楼主的情况和我是否相同。

谢谢~ 我试了一下,似乎是所有中文字体的伪粗体都失效了(试过文泉驿微米黑、文泉驿正黑、AR PL UMing CN、方正书宋)。但我个人还挺喜欢微米黑的 orz

离线

#5 2016-08-01 10:18:17

梦断代码
会员
注册时间: 2016-07-31
帖子: 4

Re: [已解决] Chrome 52 中文字体粗体失效?

依云 说:

应该和 fontconfig 没关系。是 Chrome 的字体渲染策略调整了,不再使用伪粗体了吧?

嗯,但这样的话不是很多人的粗体都应该坏掉了?自带粗体的中文字体应该不多吧(除了 Noto?)。你有遇到这种情况么?

离线

#6 2016-08-01 11:46:19

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,384
个人网站

Re: [已解决] Chrome 52 中文字体粗体失效?

梦断代码 说:
依云 说:

应该和 fontconfig 没关系。是 Chrome 的字体渲染策略调整了,不再使用伪粗体了吧?

嗯,但这样的话不是很多人的粗体都应该坏掉了?自带粗体的中文字体应该不多吧(除了 Noto?)。你有遇到这种情况么?

我是火狐用户。最近他们两次把字体渲染弄坏,都有 issue,等一个版本就好了。

PS: 我似乎没有看到过粗体的中文……

离线

#7 2016-09-02 22:26:21

梦断代码
会员
注册时间: 2016-07-31
帖子: 4

Re: [已解决] Chrome 52 中文字体粗体失效?

在 google-chrome 53.0.2785.89-1 中已经解决。

离线

页脚