忘掉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%)

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

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/21518.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据管理基础知识

数据管理原则 数据管理与其他形式的资产管理的共同特征,涉及了解组织拥有哪些数据以及可以使用这些数据完成哪些工作,然后确定如何最好的使用数据资产来实现组织目标与其他流程一样,他必须平衡战略和运营需求,通过遵循一套原则&a…

四、Unity中颜色空间

Unity中的设置 通过点击菜单Edit->Project Settings->Player页签->Other Settings下的Rendering部分进行修改,参数Color Space可以选择Gamma或Linear。 当选择Gamma Space时,Unity不会做任何处理。当选择Linear Space时,引擎的渲染…

华为云CTS 使用场景

云审计服务 CTS 云审计服务(Cloud Trace Service),帮助您监控并记录华为云账号的活动,包括通过控制台、API、开发者工具对云上产品和服务的访问和使用行为,提供对各种云资源操作记录的收集、存储和查询功能&#xff0…

【Linux 网络】 传输层协议之UDP协议

UDP协议 UDP协议的位置UDP协议的特点UDP协议的格式UDP使用注意事项 UDP协议的位置 在网络套接字编程时用到的各种接口,是位于应用层和传输层之间的一层系统调用接口,这些接口是由系统提供的。我们可以通过这些接口来搭建上层应用,比如HTTP协议…

jenkins pipeline项目

回到目录 将练习jenkins使用pipeline项目,结合k8s发布一个简单的springboot项目 前提:jenkins的环境和k8s环境都已经安装完成,提前准备了gitlab和一个简单的springboot项目 创建一个流水线项目 流水线中选择git,并选择gitlab的…

Linux系统jenkins+newman+postman持续集成环境搭建

1、首先安装nodejs 下载nodejs压缩包,下载地址:nodejs官网下载 建议不用下载最新的,我这里用的是推荐的v12.18版本 下载和解压命令 wget https://nodejs.org/dist/v12.18.3/node-v12.18.3-linux-x64.tar.xz解压安装包(记得没有z&…

rv1109/1126 rknn 模型部署过程

rv1109/1126是瑞芯微出的嵌入式AI芯片,带有npu, 可以用于嵌入式人工智能应用。算法工程师训练出的算法要部署到芯片上,需要经过模型转换和量化,下面记录一下整个过程。 量化环境 模型量化需要安装rk的工具包: rockchip-linux/rk…

【Mybatis】Mybatis架构简介

文章目录 1.整体架构图2. 基础支撑层2.1 类型转换模块2.2 日志模块2.3 反射工具模块2.4 Binding 模块2.5 数据源模块2.6缓存模块2.7 解析器模块2.8 事务管理模块 3. 核心处理层3.1 配置解析3.2 SQL 解析与 scripting 模块3.3 SQL 执行3.4 插件 4. 接口层 1.整体架构图 MyBatis…

爬虫008_流程控制语句_if_if else_elif_for---python工作笔记026

然后我们再来看一下这里的,判断,可以看到 再看一个判断,这里的布尔类型 第二行有4个空格,python的格式 注意这里,输入的age是字符串,需要转一下才行 int可以写到int(intput("阿斯顿法师打发地方")) 这样也可以

集中/本地转发、AC、AP

1.ADSL ADSL MODEM(ADSL 强制解调器)俗称ADSL猫 ADSL是一种异步传输模式(ATM)。ADSL是指使用电话线上网,需要专用的猫(Modem),在上网的时候高频和低频分离,所以上网电话两不耽误,速…

LBP特征笔记

LBP,局部二值模式(Local Binary Pattern),是一种描述图像局部纹理特征的方式,具有旋转不变性和灰度不变性。首先由T. Ojala, M.Pietikinen, 和 D. Harwood 在1994年提出。 LBP特征描述 基础LBP算子 基础的LBP算子定义…

分布式ID性能评测:CosId VS 美团 Leaf

环境 MacBook Pro (M1)JDK 17JMH 1.36运行在本机 Docker 内的 mariadb:10.6.4 运行 CosId SegmentChainId 模式,基准测试代码: Benchmarkpublic long generate() {return segmentChainId.generate();}Leaf 基准测试代码: Benchmarkpublic l…

使用正则表达式 移除 HTML 标签后得到字符串

需求分析 后台返回的数据是 这样式的 需要讲html 标签替换 high_light_text: "<span stylecolor:red>OPPO</span> <span stylecolor:red>OPPO</span> 白色 01"使用正则表达式 function stripHTMLTags(htmlString) {return htmlString.rep…

stm32 舵机 cubemx

文章目录 前言一、cubemx配置二、代码1.serve.c2.serve.h3.主函数 总结 前言 stm32对舵机进行控制&#xff0c;很简单直接一个pwm就可以实现 pwm的周期是50HZ占空比分别对应 一个0.5ms的高电平对应于0度 一个1.5ms的高电平对应于90度 一个2.5ms的高电平对应于180度 因此&#…

音视频--DTMF信号发送及检测

参考资料 https://zh.wikipedia.org/wiki/%E5%8F%8C%E9%9F%B3%E5%A4%9A%E9%A2%91https://www.cnblogs.com/lijingcheng/p/4454932.html 1. DTMF是什么 1.1 DTMF定义 双音多频信号&#xff08;英语&#xff1a;Dual-Tone Multi-Frequency&#xff0c;简称&#xff1a;DTMF&a…

mac 下用brew快速安装CommandLineTools

有时候用git 就会提示安装CommandLineTools &#xff0c;xcode太大又不想安装&#xff0c;怎么办呢我们可以试下下面的方式 什么是Brew&#xff1a; Brew是Mac OS X下的一个包管理器&#xff0c;可以方便地安装、升级和卸载很多常用的软件包 在mac下如何安装呢&#xff1a; …

爆肝整理,Postman接口测试-参数关联实战(详细步骤)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 接口测试什么时候…

AlexNet卷积神经网络-笔记

AlexNet卷积神经网络-笔记 AlexNet卷积神经网络2012年提出 测试结果为&#xff1a; 通过运行结果可以发现&#xff0c; 在眼疾筛查数据集iChallenge-PM上使用AlexNet&#xff0c;loss能有效下降&#xff0c; 经过5个epoch的训练&#xff0c;在验证集上的准确率可以达到94%左右…

leetcode 738. 单调递增的数字

2023.8.4 这题用暴力法会超时&#xff0c;我就没试了&#xff0c;采用了个挺巧的方法&#xff0c;为了方便需要先将整数n转换为字符串的形式&#xff0c;然后从后向前遍历&#xff0c;当两个数字非递增时&#xff0c;将前一个数字--&#xff0c;后一个数字的位置记录在index中&…

以技术驱动反欺诈,Riskified 为企业出海保驾护航

如今&#xff0c;全球对于线上消费的需求日益增长&#xff0c;各类新型支付方式也层出不穷。在国内&#xff0c;线上支付有着较为完善的法律及监管条例&#xff0c;格局基本已定型。但对于出海商家而言&#xff0c;由于不同国家和地区的支付规则和监管机制不同&#xff0c;跨境…