在 Windows 10 下使用无 hinting 的 TrueType 版思源字体
本帖最后由 boday 于 2017-9-22 04:58 编辑我用过 GDI++ 和 MacType,终究觉得各种小毛病和始终得看微软爸爸脸色造成的烦心大过了好处,遂放弃。之后我一直坚持认为:不装 MacType 的话,Windows 下能看的简体中文字体只有微软雅黑了……直到我后知后觉发现了无 hinting 的 TrueType 版思源字体。
字体的渲染原理我不懂,只是看起来,直接把原版的思源字体(Open Type PostScript)放在 Windows 下用,效果是很糟糕的,转换成 TrueType 才能看,而且最好去掉字体中的 hinting 信息,否则小字号下会有各种扭曲变形的现象。
下面是方法。
首先把全部你需要用到的思源字体下载下来。因为接下来要用到的转换工具不支持 OTC 字体包,在浏览器上用考虑到多语言混排需要完整字形覆盖,所以我们这里选择“Language-specific OTFs”。目前思源黑体、思源宋体全部加起来一共有 64 个(包含所有语言、字重以及 HW 版本)。
转换用的工具是 otfcc。首先在这里下载已编译的 Windows 版,解压后把两个 exe 文件放在和原版字体同一文件夹内。然后安装 Node.js,需要最新的 v.8.5.0 版。随后在命令行(cmd.exe)下运行
npm install -g otfcc-c2q
来安装 otfcc-cubic2quad。
接下来运行命令来转换字体就好啦,格式是这样:
otfccdump input.otf | otfcc-c2q | otfccbuild -o output.ttf
需要批量处理的话,这里提供一个(比较土的)方法:
在命令行下进入你存放字体的目录,运行
dir /b > filenames.txt
打开目录下生成的 filenames.txt 文件,通过查找替换删除所有的“.otf”(将“.otf”替换为空)。
回到命令行下,运行
for /F "tokens=*" %A in (filenames.txt) do otfccdump %A.otf | otfcc-c2q | otfccbuild -o %A.ttf
转换全部 64 个字体大约需要一两个小时的时间。转换完成后,把原版的 otf 字体删掉,把得到的 ttf 字体安装到系统中,然后用就是了。
在浏览器里我是这么设置的:简体中文、繁体中文、日文和韩文,分别使用对应语言版本的思源黑体(无衬线)、思源宋体(衬线)和思源黑体 HW(等宽)。Chrome 需要另外安装字体高级设置的扩展(Advanced Font Settings)才能分别对不同语言进行设置。另外 Chrome 目前在指定思源黑体时必须选择一个字重而不能指定字体族名,导致只能使用一个字重。这个问题有一个非常土而暴力的办法解决,详见这里。
欢迎各种纠错和建议。不过,如果是“DirectWrite 是垃圾!字体糊成这样能看?”这种就算了。 感谢! 技术帖好评!
— from Sony F5321, Android 7.1.1 of S1 Next Goose v1.3.1.0-play 很感兴趣,同求截图效果图
另外只有一个字重的意思是粗体显示不出来还是? 求一个懒人包 马一个,回去看看,目前用的是无hinting雅黑
—— 来自 xiaomi Redmi Note 3, Android 7.1.2上的 S1Next-鹅版 v1.3.1.0 无图无真相吖 微软雅黑不够好吗? 本帖最后由 boday 于 2017-9-21 12:51 编辑
截图来了。
Firefox 里的效果:
微软雅黑+宋体 | OTF 思源黑+宋 | TTF 思源黑+宋
Windows 记事本里的效果:
微软雅黑 | OTF 思源黑体 | TTF 思源黑体 直接用Google的noto sans cjk不好吗? 官方有无hint版本。
https://noto-website.storage.googleapis.com/pkgs/Noto-unhinted.zip 烈之斩 发表于 2017-9-21 11:14
很感兴趣,同求截图效果图
另外只有一个字重的意思是粗体显示不出来还是? ...
chrome 会只使用这一个字重,遇到粗体会用算法加粗糊上去(inspect element 可以看到使用的仍然是 regular 字重的那个字体)。强行把“regular”去掉写进配置文件里,chrome 就正常识别整个 font family 了……很蛋疼。 clover9017 发表于 2017-9-21 11:27
求一个懒人包
https://github.com/m13253/kaigen-fonts
我折腾完这些之后有人给我发了这个……看了下他的脚本,和我弄出来的东西应该是一模一样的,除了字体名。 本帖最后由 shikkoku 于 2017-9-21 13:11 编辑
boday 发表于 2017-9-21 12:40
chrome 会只使用这一个字重,遇到粗体会用算法加粗糊上去(inspect element 可以看到使用的仍然是 regula ...
如何去掉regular,然后写去哪个配置文件?
修改元素那个是没卵用的。
shikkoku 发表于 2017-9-21 12:37
直接用Google的noto sans cjk不好吗? 官方有无hint版本。
https://noto-website.storage.googleapis.com/ ...
windows 渲染不好 otf 字体,虚得没法看(见上面记事本的第二张截图)。另外还是有不少程序对 otf 字体支持不好,有各种奇怪的小毛病。 shikkoku 发表于 2017-9-21 13:04
如何去掉regular,然后写去哪个配置文件?
修改元素那个是没卵用的。
...
有用的。改了之后再用 inspect element 看网页上用到粗体的地方,用的就是 bold 那个字体,而不是 regular 加粗了。 boday 发表于 2017-9-21 13:11
windows 渲染不好 otf 字体,虚得没法看(见上面记事本的第二张截图)。另外还是有不少程序对 otf 字体支 ...
感觉你的TTF是做了其他处理的。 本帖最后由 shikkoku 于 2017-9-21 13:21 编辑
boday 发表于 2017-9-21 13:15
有用的。改了之后再用 inspect element 看网页上用到粗体的地方,用的就是 bold 那个字体,而不是 regula ...
似乎有效但太麻烦。 原来是我其他的软件生效的。
https://chrome.google.com/webstore/detail/appoint-font/lmjdabbpgabigbonekfpjhfgjekpnkge
正黑也是有简体字库的,不过有些字形不一样。雅黑太难看了啊,太扁。而且配合cleartype字号一小笔画都糊在一起了。
这个话题还没有gdi++的年代就被讨论烂了吧,大家还在用lihei pro的时候。 四控大叔 发表于 2017-9-21 12:34
微软雅黑不够好吗?
微软雅黑的问题很多……
专业上对雅黑的批评我不懂,我个人能明显感受到的问题大概有这么几点:
1. 字形过于宽而扁,字间距显得不足;
2. 大概是 hinting 做得不够好的原因,经常出现同一行字高度不一致;
3. 各种细节问题,比如“一一说明”,两个“一”会连在一起;
4. 标点符号不合规范,比如左右单双引号很容易让人搞混,省略号点在底部等等。 boday 发表于 2017-9-20 23:46
https://github.com/m13253/kaigen-fonts
我折腾完这些之后有人给我发了这个……看了下他的脚本,和我弄 ...
我觉得他的懒人包的意思是直接出最后的ttf,哈哈
我…我也想求 烈之斩 发表于 2017-9-21 14:10
我觉得他的懒人包的意思是直接出最后的ttf,哈哈
我…我也想求
链接: https://pan.baidu.com/s/1bP5eJc 密码: xu83
https://drive.google.com/open?id=0B4MqDFY9atvVd0xnYWVXNktLT1E
@clover9017 本帖最后由 clover9017 于 2017-9-21 19:33 编辑
感谢,从头开始吃极限论坛的各种道道太累了
字体的套路太多
什么小字号自动切换点阵字体啊,特殊的简写字形啊之类的以前关注过一直没搞清楚 Source-Han-TrueType —— 来自极限论坛的Pal3love
这个比较全,包括思源宋体
boday 发表于 2017-9-21 15:22
链接: https://pan.baidu.com/s/1bP5eJc 密码: xu83
https://drive.google.com/open?id=0B4MqDFY9atvVd0 ...
非常感谢!直接安装就可以了么? 试了下,效果很不理想。。
我又看了下lz的预览图,确认没用其他的渲染?雅黑和我都不一样
烈之斩 发表于 2017-9-22 10:27
试了下,效果很不理想。。
我又看了下lz的预览图,确认没用其他的渲染?雅黑和我都不一样
firefox 么?把“gfx.font_rendering.directwrite.force-enabled”改成 true,把“gfx.font_rendering.directwrite.use_gdi_table_loading”改成 false 试试?
另外为了效果一致,我把“gfx.font_rendering.cleartype_params.force_gdi_classic_max_size”改成了 0,把“gfx.font_rendering.cleartype_params.force_gdi_classic_for_families”也清空了。
chrome 不知道为什么,在我这里效果比 firefox 要淡很多。不过我现在不用 chrome 做主力,所以没去深究。 boday 发表于 2017-9-21 23:04
firefox 么?把“gfx.font_rendering.directwrite.force-enabled”改成 true,把“gfx.font_rendering.di ...
改了之后好像没看出区别,我再研究下……
Chrome字体偏淡可以参见这个tracking ticket:https://bugs.chromium.org/p/chromium/issues/detail?id=534732 烈之斩 发表于 2017-9-22 13:11
改了之后好像没看出区别,我再研究下……
我应该真的没有什么别的东西会影响渲染……我是最新的 win10,最新的 firefox,没装过 mactype,没改过 cleartype 渲染设置(按道理应该无关),firefox 只装了 ublock origin 和 stylish 两个扩展(stylish 只用来针对某些网站强制制定一下字体,没有任何字体特效,而且维基百科也不在影响之列)。
记事本里的效果和我截图一样么? 本帖最后由 烈之斩 于 2017-9-22 15:51 编辑
boday 发表于 2017-9-22 02:11
我应该真的没有什么别的东西会影响渲染……我是最新的 win10,最新的 firefox,没装过 mactype,没改过 c ...
我用的Win7原来只有Win10用效果才好么
编辑:
换了台win10的电脑试试,效果和LZ的应该一致了
不过个人觉得比起MSYH太虚了还是
烈之斩 发表于 2017-9-23 04:41
我用的Win7原来只有Win10用效果才好么
编辑:
win7 怕是真不行……Time to move on 你为啥不去推荐我做的版本
↓
https://github.com/be5invis/source-han-sans-ttf
↑
这个是有 hint 的 infinte 发表于 2017-9-25 21:56
你为啥不去推荐我做的版本
↓
https://github.com/be5invis/source-han-sans-ttf
原来是做iosevka聚聚
— from OnePlus ONEPLUS A5000, Android 7.1.1 of S1 Next Goose v1.3.1.0-play infinte 发表于 2017-9-25 21:56
你为啥不去推荐我做的版本
↓
https://github.com/be5invis/source-han-sans-ttf
本尊出现了,吓得胆小的我……
我这帖子里写的基本全都是您做的东西,实在是感激不尽。
这个带 hinting 的 ttf 我也看到了,不过我是不想要 hinting 信息的,另外顺便把思源宋体一起做了。 这玩意不知为啥和MacType有冲突,用它的字体替换功能替换默认字体的话,就会让Kindle正文不显示、notepad2及其他一票软件闪退
debug超出了我的知识范围 Scrummble 发表于 2018-9-10 00:39
这玩意不知为啥和MacType有冲突,用它的字体替换功能替换默认字体的话,就会让Kindle正文不显示、notepad2 ...
如果你已经在用 mactype 了的话,好像也没什么必要费这个功夫把 otf 变成 ttf 了吧。 shikkoku 发表于 2017-9-21 12:37
直接用Google的noto sans cjk不好吗? 官方有无hint版本。
https://noto-website.storage.googleapis.com/ ...
下载看了一下,并不是无hint,和普通的有hint发布版没有区别
所谓的unhinted应该只针对CJK以外
boday 发表于 2018-9-10 04:17
如果你已经在用 mactype 了的话,好像也没什么必要费这个功夫把 otf 变成 ttf 了吧。 ...
windows对otf的渲染有问题,会比ttf更粗,和10楼对比的差异类似,只是mactype边缘更细腻而已。
chrome没有bug所以单独设置了kaigen,效果对比还是蛮显著的。
不只是kaigen有bug,别的打包版ttf都有,我是没法得知问题出在哪了。 Scrummble 发表于 2018-9-10 04:22
windows对otf的渲染有问题,会比ttf更粗,和10楼对比的差异类似,只是mactype边缘更细腻而已。
chrome没 ...
原来如此,我以为 mactype 是没有 otf 太粗的问题的。
无根据随便建议,试试这个如何?
https://github.com/be5invis/Sarasa-Gothic
页:
[1]
2