[已解决]请问可以修正下 opensuse_zh: 下的 infinality 包么?

对字体的怨念很深啊,opensuse_zh: 下的包是我唯一满意的了,只是在有些字上面有些多余的边线:


图里面的互“联”网,“输”入法和桌面“环境” ,尤其是偏旁部首里带一横一竖的都会多条边线出来…

2017.04.21 更新: 做个总结,给不想往后翻的人,其实,如果耐心往后看的话啊,能知道不少东西…

2017.05.04 更新: ,提醒一下在 05.04 之前安装方案一的用户,该方案有版本更新,修正 CFF 字体渲染引擎的问题,请使用方案一的用户及时更新…

首先是 freetype 相关技术发展的一个历史回顾,请看这篇:(只想要方案的往最下看)

INFINALITY 补丁的“终极”进化…: [INFINALITY 补丁的“终极”进化:在 Linux 中启用字体微调和次像素渲染的正确姿势(一))

如上所述,infinality 相关渲染技术已经进入了 freetype 主线,只是默认因为专利问题等各项原因默认没有开启,需要在编译时打开。

第一种方案 ,使用 stecue 编译的打开了 v38 解释器,但是略过雅黑等字体的处理,因为 v38 解释器在渲染雅黑较小号字体时会造成笔画错误,这个再配合从 Windows 中取出的雅黑字体,可以实现良好的阅读效果,这里要注意的问题是雅黑字体的版本,Win 8.1 以后微软对雅黑进行了调整,对于现在普遍 1080 24 寸以上的显示器,网页缩放到某个程度时,字体会变得过细,当然不缩放区别不大,想要在页面缩放的情况下获得和 win 平台下相近效果的,可以使用 win 7 自带的雅黑 6.02 版本。

链接在此: software.opensuse.org//download.html?project=home%3Astecue&package=freetype2

已修正链接为一键安装源,但是除了方案三,都需要你进入页面后点击 openSUSE 图标,在出来的选项中手动选择 Leap 或者 Tumbleweed , 不直接上 ymp 是为了避免连说明都不想看就直接点安装的人… 起先我提供项目首页的本意是为了给想研究的人先看看 spec , 不过,我觉得想看的人应该也知道在哪里的对吧?

第二种方案 , 针对喜欢默认字体,以及从其他平台转过来习惯了它们显示效果的人,可以使用以下的原装引擎,用下面的配合思源,基本上就和 ubuntu 默认,以及 Fedora 的 Freetype Freeworld 同等的效果,两个任选其一就好。

v38: software.opensuse.org//download.html?project=home%3Astecue%3ATTv38&package=freetype2
v40: software.opensuse.org//download.html?project=home%3Astecue%3ATTv40&package=freetype2

关于两个解释器的差别在这里: freetype.org/freetype2/docs/reference/ft2-tt_driver.html ,简单的说 v40 用简化的方式实现了 infinality , 据说是速度比 v38 快。另外,据 stecue 本人说明,v40 解释器也可以配合微软雅黑,不会像 v38 那样,不加补丁会导致雅黑的笔画缺失的问题。

第三种方案 ,infinality ultimate 。老实说,这个因为已经不维护了,所以并不是很推荐,提供给那些因为各种原因就想用 infinality 的人吧,这个也加上了 bypass 雅黑的补丁,雅黑思源效果都不错。当然,如果一定要装这个,fretype 被降级是理所当然的事。另外说下,由于 ultimate 作者现已处于不活跃状态,Arch 论坛上那个帖子已经被关闭…

INFINALITY-ULTIMATE_YaHei: (ymp 是因为链接原因…)

Leap 42.2 : software.opensuse.org/ymp/home:stecue:INFINALITY-ULTIMATE_YaHei/openSUSE_Leap_42.2/libfreetype6.ymp?base=openSUSE%3ALeap%3A42.2&query=libfreetype6

Tumbleweed: software.opensuse.org/ymp/home:stecue:INFINALITY-ULTIMATE_YaHei/openSUSE_Tumbleweed/libfreetype6.ymp?base=openSUSE%3AFactory&query=libfreetype6

第四 ,这也是一种方案吧,因为字体这东西,每个人感受不同,有些人要清晰,另外一些人要好看,这就导致了差异化的形成。有人可能注意到了,42.2 Leap 官方源的 freetype 是打开了次级像素和微调的,但是,风滚草和 M17N 源里的就没有开,并且它同时编译了 v38 和 v40 引擎(当然它们都有“对齐到整像素”的经典 v35 引擎。雅黑需要这个引擎来获得最清晰和没有笔画错误的 hinting)。

TTall: software.opensuse.org//download.html?project=home%3Astecue%3ATTall&package=freetype2

FreeType 2.7 之后,理论上在可以用 FREETYPE_PROPERTIES 环境变量在运行时选择 truetype 渲染引擎。比如在~/.bashrc 里写上

export FREETYPE_PROPERTIES="truetype:interpreter-version=38"

就可以启用 v38 引擎。

FREETYPE_PROPERTIES="truetype:interpreter-version=35" firefox

则可以启用 v35 引擎的方式启动 firefox。

由于连接数量限制的关系,针对 chrome 的解决方案可以参考本贴页 7 首帖。

安装以上的包后,可以根据自己的喜好使用 fontconfig 进行细节调整。

再次感谢 @stecue 的辛勤研究和工作!

2赞

换一个字体不就行了,我这里就没有这样的问题,我的 firefox 的字体是 sans-serif。

我觉得没那么简单就能搞定,字体的显示效果主要在渲染上面吧。不用 infinality 的话,字体的边缘有 毛边, 一些人可能不在意,但我看着就很难受,我更喜欢微软那种方式,破坏字形得到的清晰度…

不是说 infinality 不维护了吗?

从我的 iPhone 发送,使用 Tapatalk

有个后续项目叫 infinality ultimate , 不过我喜欢 opensuse_zh: 这个包的原因是它不光打了 infinality 补丁,里面还写了些其他的配置 比如小于 xx 号的字用点阵字(我猜的),这样它整个页面环境下的字看起来就很舒服。如果只安装 ultimate 包的话,页面遇到小号字看起来就难受了,还有就是 ultimate 包有个 [INFINALITY 补丁的“终极”进化:在 Linux 中启用字体微调和次像素渲染的正确姿势(一)) 7 楼的那种问题。

我看了下,opensuse_zh: 打的包好像用了部分 ultimate 的补丁,但是它又避开了 ultimate 包以上的问题…


sans-serif 就是默认无衬线字体,不是真是字体名称。

Infinality 补丁的主要部分已经进入主线,现在 infinality ultimate 也不维护了。至于小于 xx 号用点阵,直接配置 fontconfig 就可以了。

实际上 Infinality 补丁并不能让字体更加清晰,因为它是“subpixel hinting”,微调到“次像素”。它所追求的是平滑和清晰的平衡,以及可定制性。如果要尽量清晰,应该直接微调到像素而不是次像素。你看我下图的效果怎么样?


用的是微软雅黑。要不你就试试呗?而且也没有你另外一个帖子里的“字形闪烁”的问题,当然,FreeType 要关闭 subpixel hinting 并打上专门的雅黑补丁,就如我在那个帖子( [INFINALITY 补丁的“终极”进化:在 Linux 中启用字体微调和次像素渲染的正确姿势(一)) )里说的。

这效果具体是直接安装你源里的包,然后装雅黑字体就行了么?我试下…

其实我想尽可能的想使用合法的默认字体,想看看思源在当前的系统上最终能配出怎样的效果。

对啊。雅黑从 Win7 拷一份不就行了么。正版 Windows 系统也不难找吧,买笔记本不都带的么?

这是 Noto Sans CJK SC (等价于思源黑体)在我这里的效果:
首先不启用微调:

pango-view --hinting=none --waterfall --font="Noto Sans CJK SC" -t " 中文字体测试"


然后微调全开

pango-view --hinting=full --waterfall --font="Noto Sans CJK SC" -t " 中文字体测试"


Noto Sans CJK 的微调都是 Fontforge 自动生成的,所以效果显然不如微软雅黑。fontconfig 里调成 hintslight 就差不多了。

我订阅得有 MSDN,微软的所有软件我都有许可证, 但这种使用方式并不合法,方正的字体只授权给随 windows 使用, 不能脱机… 钻空子的方法是做链接… 所以不到万不得已我尽量避免用它…

我使用了 stecue:的源加上雅黑字体后出来的是这个样子:


然后用思源是这样:


infinality + 思源:


前两张图没在 fontconfig 中开次像素平滑嘛。

infinality 算是基本禁止了竖直方向的 hinting,从“美”这个字可以看出来。对于像思源这样全靠 autohinting 的,确实禁止 hinting 效果可能反而更好。

不知道为什么附图直接在浏览器中点击会被放大到一定程度,你把图 1 下载到本地打开,就能看出来了,它字体平滑大致上没问题,但是字形渲染的太细了,如果我把字体换成雅黑 UI 会更细,换成雅黑 Bold 会变得很粗,要是能接近下面就好了:


你的图一确实没开次像素平滑嘛。等有空我给你上个放大图看看。

如果不嫌麻烦的话,截个浏览器最大化,完整的图来看看吧,别裁剪了,就保留原始接下来的图,裁剪了看不出比例啊

另外,第一图你把它放大看,我在意的问题是字太细了,如果是缩略图那种效果我完全能接受了
这个应该是 hint 太重了的原因多些吧,次像素平滑能解决么? 最近驻扎办公室,能回家搞的时间不是太多…

放大到一定程度是因为你的浏览器用 Ctrl+ 滚轮设置了页面 zoom。你的 kkj.cn 的页面字体也比正常的大。

次像素平滑是让字形更“平滑”,不会 更粗……觉得太细可以在 fontconfig 里配置。


如果 2K 以上的显示器肯定要缩放的,要不太费眼了,就是 1080 我起码也要 125 左右…

显示器分辨率高的话,hinting 就没必要了……