忘掉MacType吧,TtfAutoHint手工删除ttc、ttf字体的hinting,微软雅黑字体更显平滑

这篇具有很好参考价值的文章主要介绍了忘掉MacType吧,TtfAutoHint手工删除ttc、ttf字体的hinting,微软雅黑字体更显平滑。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Windows的ClearType渲染字体方式,结合臭名昭著的hinting技术使微软雅黑字体备受争议,正所谓:成也hinting,败也hinting。

首先什么是hinting?

Hinting 这个词一直都没有中文名称,我用粤语将它音译为“牵挺”。

个人解释: "牵" 可以理解为引导和调整,而 "挺" 则可以解释为挺拔、优雅。

按照官方的解释,Hinting的目的是为了确保在低分辨率屏幕上,小字号字体也能够清晰可读。然而,在追求清晰的同时,hinting可能会导致笔画的位置偏移和错位,从而损害了字体的整体设计美感。

在我看来,hinting是一种动态模拟点阵字体效果的技术

因此,微软雅黑字体在小字号下会出现各种奇怪的笔画位置不正确的现象,主要是因为hinting为了在狭小的点阵像素空间内实现清晰展示,牺牲了原本中文字体的设计意图。

相比之下,Mac OS采用的平滑渲染字体效果一直受到许多用户的喜爱,Windows用户只有眼馋的份。为了追求模拟Mac OS的平滑渲染字体效果,摆脱Windows hinting的影响,字体爱好者追捧先后出现的GDI++和MacType等外挂式字体渲染工具,使得Win系统的字体显示更加“所见即所印”。(GDI++是MacType的先驱。我是从2008年开始在WinXP系统使用GDI++,2012年后Win7系统使用MacType。)

Windows 10之后引入了DirectWrite渲染方式,但在系统缩放比例200%以下,DirectWrite仍无法完全解决微软雅黑字体显示不平滑的问题。那就继续用MacType呗……更糟糕的是,越来越多的生产力应用(如Chrome浏览器、WPS、Photoshop等)已经我行我素,强行使用Hinting渲染,完全无视MacType,导致MacType可渲染的对象越来越少,MacType的地位变得越来越不重要。

因此,干脆直接干掉字体的hinting吧!尽管这样会导致在小字号下显示比较模糊。在只要把系统的字体缩放比例设为125%以上,微软雅黑的观感将显著提升。

早在2008年坊间就有流传过“无hinting的微软雅黑”字体,字体名称为 iYahei,文件大约8M。可惜在WinXP、Win7系统默认的渲染模式下显示发虚,笔画的粗细不一,远远达不到MacType的效果。

然而我把 iYahei 存入手机代替默认字体却能完美展现。从2008年我使用的诺基亚手机,到后来的安卓系统的手机,我都替换手机的默认字体为 iYahei。除了 iYahei,也有其他人制作的无hinting字体,受多人推崇。

为什么不直接把有hinting的微软雅黑替换安卓手机的默认字体?我早已尝试过,带有hinting的微软雅黑在安卓系统里也会按照hinting信息渲染字体,跟Windows的默认渲染效果一样不好看。唯有去除hinting,才能真正再现字体设计的本色。

多年以来,我都在寻找一款能够删除hinting的工具,现在终于找到了,并将其记录如下:

需要用到的利器: TtfAutoHint (度盘链接:https://pan.baidu.com/s/1Mv-hpb7mqxzLf22Z1lDGbA?pwd=ttj5 提取码: ttj5)

另外,需要 WinPE环境(U盘或者本地硬盘安装)。

在Windows的命令提示符使用以下命令来删除hinting:

d:\downloads\ttfautohint -d c:\windows\fonts\msyh.ttc c:\msyh.ttc

微软雅黑常规体文件msyh.ttc原先体积是22.5M,经过这样去除hinting之后,生成的新字体文件大大缩小到8M,这跟多年前的 iYahei 字体差不多大了,可见微软每次升级Windows系统和微软雅黑字体,为了讨好眼球,都是制造更多的 hinting。在我看来,这些 hinting 都是垃圾,真正有效的矢量字体信息就是8M够了。

如果要批量转换Windows系统的字体,可以在命令行下可以使用下面命令:

cd /d %windir%\fonts
for %a in (*.tt?) do d:\downloads\ttfautohint -d %a c:\%a

这样就一次性把系统所有.ttc和.ttf的字体都去掉hinting,输出到C盘根目录。

在重启后切换到WinPE环境,把C盘根目录处理后的字体文件复制粘贴到C:\windows\fonts目录并替换,再重启进入正常的Windows环境,这样微软雅黑字体的渲染效果变得更加平滑。虽然与MacType的效果相比还有少许差距,但至少不再担心MacType占用系统内存的问题。

需要注意的是:

1、不是所有删掉hinting的字体都令人满意。

如:宋体(simsun.ttc),我觉得保留hinting反而比删掉的更好。

常用的英文字体(Arial、TImes New Roman、Tohama、Verdana、Calibri等)也没必要去掉hinting,反正去不去掉hinting视觉上的影响没那么明显。

2、显示器分辨率不超过1440x900,而且系统字体缩放比例是100%的话,劝你别试了。用默认的带hinting的字体反而使小字号字体显示更清楚。

附图1:去除hinting之前的微软雅黑(系统缩放比例100%)

忘掉MacType吧,TtfAutoHint手工删除ttc、ttf字体的hinting,微软雅黑字体更显平滑,Windows优化,hinting,directwrite,cleartype,微软雅黑,字体

 附图2:去除hinting之后的微软雅黑(系统缩放比例100%)

忘掉MacType吧,TtfAutoHint手工删除ttc、ttf字体的hinting,微软雅黑字体更显平滑,Windows优化,hinting,directwrite,cleartype,微软雅黑,字体

附图3:去除hinting之后的微软雅黑(系统缩放比例125%)

忘掉MacType吧,TtfAutoHint手工删除ttc、ttf字体的hinting,微软雅黑字体更显平滑,Windows优化,hinting,directwrite,cleartype,微软雅黑,字体

附图4:有无hinting的微软雅黑小五、五号、小四、四号字体的表现:

以“重量”为例,去除hinting之前,在hinting的作用下各个笔画都在有限像素的空间内尽可能清晰呈现,可以看出hinting的实质是在各个字号里模拟点阵字,但牺牲了原来字体的设计,如“重”的第一笔是撇,但hinting的作用下全部变成横线。删掉hinting之后的字虽然在小字号情况下显得模糊,但笔画是正确的,忠实还原字体设计的本来面目。

忘掉MacType吧,TtfAutoHint手工删除ttc、ttf字体的hinting,微软雅黑字体更显平滑,Windows优化,hinting,directwrite,cleartype,微软雅黑,字体文章来源地址https://www.toymoban.com/news/detail-633212.html

到了这里,关于忘掉MacType吧,TtfAutoHint手工删除ttc、ttf字体的hinting,微软雅黑字体更显平滑的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 解决 element ui 本地使用 引入 图标不显示 .ttf和.woff 报错问题

    解决 element ui 引入在线地址更换为本地地址后 .ttf和.woff 报错问题 原因 因为文件内缺少两个文件 根据控制台提示 发现少了.ttf和.woff两个文件 1)element-icons.ttf 2)element-icons.woff 下载地址如下 : 4.下载地址element-icons.ttf 5.下载地址element-icons.woff 下载完毕后放入文件夹内后修改

    2024年02月07日
    浏览(37)
  • Downloading https://ultralytics.com/assets/Arial.ttf to ...... yolov5报错解决

    yolov5模型用的是github上YOLOv5官方的, 在autodl服务器上训练时,Arial.ttf字体会自动下载,但是无法下载。(当然在自己电脑上pycharm跑不会报这个错,可以下载) 解决方法: 将第3,4行注释掉, 改为: 重新训练即可正常训练。

    2024年02月11日
    浏览(36)
  • Oracle之hint介绍

    CREATE  VIEW stock_item      AS      SELECT /*+ leading(s) use_merge(i) */      i_price, i_name, i_data, s_i_id, s_w_id, s_order_cnt, s_ytd, s_remote_cnt, s_quantity, s_data, s_dist_01, s_dist_02, s_dist_03, s_dist_04, s_dist_05, s_dist_06, s_dist_07, s_dist_08, s_dist_09, s_dist_10      FROM stok s, item i      WHERE s.s_i_id = i.i_id; Query

    2024年02月13日
    浏览(36)
  • openGauss学习笔记-259 openGauss性能调优-使用Plan Hint进行调优-指定不使用全局计划缓存的Hint

    259.1 功能描述 全局计划缓存打开时,可以通过no_gpc Hint来强制单个查询语句不在全局共享计划缓存,只保留会话生命周期的计划缓存。 259.2 语法格式 说明: 本参数仅在enable_global_plancache=on时对PBE执行的语句生效。 259.3 示例 dbe_perf.global_plancache_status视图中无结果即没有计划被

    2024年04月13日
    浏览(27)
  • 手工测试没有前途,自动化测试会取代手工测试?

    在测试行业,一个一直被讨论的问题就是:手工测试没有前途,自动化测试会取代手工测试? 首先说结论:自动化测试不会取代手工测试,这完全是两个维度的事情。为什么不会呢?我们需要从本源上说起。 什么是自动化 世界上有很多职业,比如艺术家、维修人员、销售等

    2024年02月08日
    浏览(34)
  • 达梦sql执行计划、HINT、索引简单应用

    目录 收集统计信息. 3 1. 通过DBMS_STATS包中的方法. 3 2、删除指定表的统计信息. 3 执行计划. 3 常用执行计划操作符. 4 统计指定sql 执行号的所有操作符的执行时间 . 5 HINT 5 并行操作:. 6 查询计划重用、结果集重用. 7 示例. 8 1、收集统计信息:. 8 3、对sql搜集统计信息. 9 2、添加

    2024年02月15日
    浏览(22)
  • git [fatal] hint: Pulling is not possible because you have unmerged files.hint: Fix them up in ...

    error: Pulling is not possible because you have unmerged files. 错误:无法提取,因为您有未合并的文件。 hint: Fix them up in the work tree, and then use ‘git add/rm ’ 提示:在工作树中修改它们,然后使用’git add/rm ’ hint: as appropriate to mark resolution and make a commit. 提示:根据需要标记解决方案并提交。

    2024年04月10日
    浏览(36)
  • 解决gitpush时报错:hint: Updates were rejected because the remote contains work that you do hint: not have

    当我新建了一个git仓库,依次执行 却报错 报这个错是因为远程仓库和本地仓库文件不同步,解决方法是先执行git pull将远程仓库文件拉下来使得远程与本地同步。 解决步骤 1.执行 这里的webbrowser换成你的远程仓库名 执行后会有如下输出 2.再试试重新推送行不行 发现还是报错

    2024年02月16日
    浏览(43)
  • Spark Rebalance hint的倾斜的处理(OptimizeSkewInRebalancePartitions)

    本文基于Spark 3.5.0 目前公司在做小文件合并的时候用到了 Spark Rebalance 这个算子,这个算子的主要作用是在AQE阶段的最后写文件的阶段进行小文件的合并,使得最后落盘的文件不会太大也不会太小,从而达到小文件合并的作用,这其中的主要原理是在于三个规则: OptimizeSkewIn

    2024年04月14日
    浏览(20)
  • SQL手工注入

    用户能够控制输入的内容 web应用把用户输入的内容,在没有经过过滤或者严格过滤的情况下带入到数据库中执行 GET和POST 整数型,字符型,搜索型 ’1 or 1 = 1# 1 or 1 = 1# -- (后面有空格) --+ %23 判断是否有注入信息 获取数据库基本信息 获取数据库名 获取表名 获取列名 获取用

    2024年02月19日
    浏览(22)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包