当前位置: 首页 > news >正文

FreeType 2.7 – 卓越的 Linux 字体质量

大家好!我是大聪明-PLUS

FreeType 2.7 版本悄无声息地发布,这无疑是 Linux、FreeBSD、NetBSD、ReactOS 和其他用户的一次盛大庆典。让我们来探究一下这一切喧嚣的真正原因。FreeType是一个用于字体光栅化和操作的开源 C 库。新版本TrueType默认使用 v40 指令处理算法。

这允许使用类似于微软的高质量子像素字体抗锯齿技术,DirectWrite/ClearType实际上并未使用子像素抗锯齿技术。此外,v40 算法Infinality比之前的 v38 算法渲染速度更快,而最终结果却丝毫不差。

Infinity、专利和SHG

从历史上看,Linux 上的字体存在两个问题。首先,微软和苹果的专利雷区,迫使开发人员费力地寻找变通方案。一系列补丁Infinality部分解决了这个问题,但却以性能下降和代码过于复杂为代价。此外,据维护者称,FreeType开发人员Infinality对该项目失去了兴趣。

这些专利可分为三类有条件的类别:

  • 显示图像时,信息显示在单个 LCD 子像素级别,而不是整个像素级别
  • 应用各种滤镜后显示相同的图像,例如抑制彩色边纹伪影
  • 在丰富多彩的亚像素世界中处理尺寸和距离

不仅如此,还有其他专利。这种情况的妙处在于,微软和苹果签署了交叉许可协议,而开发者FreeType和其他开源软件开发者则必须勇敢地克服SG带来的障碍。

这些专利的价值备受质疑。微软获得 ClearType 专利后,其有效性和新颖性立即引发质疑,而这这并非出现在某个冷门论坛,而是《纽约时报》的报道。史蒂夫·吉布森 (Steve Gibson) 是其中一位积极反驳 ClearType 的人士,他在自己的网站上写道,ClearType 是一项早已被遗忘的技术,由史蒂夫·沃兹尼亚克 (Steve Wozniak) 于 20 年前为 Apple II 申请专利。它并没有任何重大的技术突破,因此也算不上知识产权。

微软的“ClearType”子像素文本渲染应用并不代表他们所声称的重大突破,因此它不能成为知识产权收购的有效主题。

不幸的是,美国专利法的结构使得所有这些都只是个空谈。无论好坏,专利都存在,这意味着其他人必须为使用专利付费。



请允许我稍微感慨一下。微软并不急于将其 ClearType 专利移交给开源社区,就像 Adob​​e 将其引擎专利移交给开源社区一样。下次我们看到微软的“Linux 之心”OpenType/CFF口号时,不妨记住这一点。效仿美国总统里根,人们或许会惊呼:“纳德拉先生,如果微软热爱 Linux,那就推倒那些专利墙吧!”

TrueType 的新渲染

Linux 字体的第二个问题是 20 世纪 90 年代 CRT 显示器软件字体渲染算法的遗留问题。该TrueType字体家族诞生于 CRT 显示器颗粒感强烈的时代。在 Windows 95 的屏幕截图中,文本是像素化的。每个单独的字形都被固定在像素网格内。微软为此投入了无数的人力,计算和优化所有可能尺寸的字形,以便所谓的核心网络字体(Arial, Times New Roman, Courier New等等)在屏幕上看起来能够令人满意。

然而,这种徒劳无功的劳动也带来了后果。液晶显示器的新时代来临了,原来旧的TrueType指令必须重新编程才能利用这些新功能,或者至少要正确显示字体。没有必要将每个字形映射到一个全像素网格;相反,他们可以将它们映射到三个子像素中的一个,甚至只是一个子像素,通过子像素抗锯齿实现更高质量的图像TrueType。微软合理地认为重写整个遗留指令集是不现实的,因此提出了非对称过采样和兼容模式,利用了旧字体指令中的许多巧妙技巧和变通方法。这使得即使是较旧的字体也可以在一定程度上利用增加的水平分辨率。

开发人员FreeType决定不去管这个问题,直接忽略了兼容模式。这当然带来了一些后果。新字体在适应了这种蹩脚的兼容模式和异步过采样之后,看起来非常尴尬。


然而,一位英雄走了这条艰难的道路,实现了Infinality上述所有新旧指令的混乱局面。FreeType它一度包含 v38 解释器(一组补丁Infinality),但后来代码被移除,取而代之的是 v35 解释器。这位开发人员Infinality真正承担了一项不可能完成的任务:让字体看起来比 Windows 更好,并使其完全可自定义。

让字体像在 Windows 上通过 DirectWrite/ClearType 渲染一样,其核心秘诀在于:这里实际上没有进行子像素提示。震惊!代码只是忽略了所有水平提示指令。

最终,通过删除Infinality[ ...​FreeType TrueType

如何使用 FreeType 2.7 实现字体和谐

好消息是,您无需执行任何操作;更新将自动出现在您的 Linux 或 BSD 发行版的软件仓库中。只需更新到新版本并重新启动 X.Org 服务器即可。您可以根据自己的喜好进行配置。坏消息是,您现在就需要它,等待几天甚至几周可能会很麻烦。特别不耐烦的用户可以从源代码FontConfig自行编译新版本,也可以使用内置的软件包安装程序进行安装。我的 Gentoo 安装尚未稳定。FreeType 2.7

$ eix freetype
$ [I] media-libs/freetypeДоступные версии:      (2) 2.5.5^d 2.6.3-r1^d ~2.6.5^d ~2.7-r1^d{X +adobe-cff auto-hinter bindist bzip2 (+)cleartype_hinting debug doc fontforge harfbuzz infinality png static-libs utils ABI_MIPS="n32 n64 o32" ABI_PPC="32 64" ABI_S390="32 64" ABI_X86="32 64 x32"}

对于保守的 Debian,我们可能要等待下一个版本,但 Ubuntu 用户已经很好地使用了字体,所以没有必要着急。

http://www.dtcms.com/a/466117.html

相关文章:

  • 龙江建站技术wordpress 管理 主题
  • 企业网站建设 制作网站建设基本流程流程图
  • 【Homebrew安装 MySQL 】macOS 用 Homebrew 安装 MySQL 完整教程
  • 【图像处理基石】暗光增强算法入门:从原理到实战(Python+OpenCV)
  • Asp.net core Kestrel服务器详解
  • OpenFeign使用
  • 如何在鸿蒙中实现毫秒级数据检索?哈希表与二分查找的双引擎优化方案
  • 实现支持链式调用的 JavaScript 类
  • 中文wordpress模板免费seo教程分享
  • 如何用ps做网站顺德网站建设7starry
  • 京东agent之joyagent解读
  • 【第五章:计算机视觉-项目实战之生成式算法实战:扩散模型】3.生成式算法实战:扩散模型-(2)DDPM数据读取
  • UCC21530-Q1 隔离栅极驱动器完全解析:从原理到实战应用
  • 企业网站的网络营销功能wordpress 发视频
  • 创作纪念日
  • 直接找高校研究生做网站行吗公众号开发单位
  • 怎么看网站开发语言是哪种律所网站建设建议
  • Docker:公有仓库和私有仓库的搭建
  • 有专门做牙膏的网站吗网站footer设计
  • 零基础从头教学Linux(Day 47)
  • libevent输出缓存区的数据
  • 宋红康 JVM 笔记 Day18|class文件结构
  • 网站源代码购买荆州 网站建设
  • ws2_32.dll文件丢失或损坏怎么办?4种有效修复方案分享
  • Rust程序语言设计(5-8)
  • 三合一网站建设公司杭州科技公司排名
  • 温州建设监理协会网站录入客户信息的软件
  • 38.Shell脚本编程2
  • ETLCloud-重塑制造业数据处理新范式
  • 【JavaSE】JVM