gpt4 book ai didi

android - roboto-android 和 roboto-unhinted 之间有什么区别?

转载 作者:太空宇宙 更新时间:2023-11-03 13:14:46 25 4
gpt4 key购买 nike

我正在开发一个需要使用 Roboto 字体来呈现 UI 的 Android 应用。

根据 https://github.com/google/roboto/releases , Roboto字体一共有三种:

enter image description here

Google说:

Hinted fonts

Hints are the instructions embedded in a font on how to modify (distort) a glyph to look better on low-resolution displays. As a tradeoff, a hinted font consumes more space than the unhinted version.

Both Roboto and Noto have hinted and unhinted versions. Google recommends:

  • Use the unhinted versions on Android and on Mac OS X, which doesn’t implement hints.
  • Use hinted fonts on Chrome OS, Windows, and Linux.

roboto-androidroboto-unhinted 有什么区别?

最佳答案

传统屏幕是低分辨率显示器。

如此低的分辨率,事实上,只是缩放字体字形在常见的文本大小下会出现可怕的像素化。因此,文本渲染系统不仅会缩放文本,还会扭曲字形形状以使其尽可能匹配像素限制(网格拟合)。

Microsoft 历来通过字体提示(智能字体 → TTF)实现这一点:字体文件本身包含有关如何在特定大小下扭曲每个字形形式的说明(代码)。优点是您的文本渲染器不需要非常智能。缺点是只有有人花很多时间编写提示规则的字体才能在屏幕上显示良好,而且只有在这个人所针对的特定像素密度下(这就是为什么微软这么长时间试图强制制造商只生产 96 dpi 屏幕的原因).

Apple 选择专注于哑字体(postscript 和子字体 → CFF 字体),使用智能渲染引擎(对所有字体应用相同的规则)。

字体格式现在合并到 opentype (TTF + OTF) 中,但字体仍然可以在哑模式(文本渲染器控制失真)、智能模式(字体提示控制失真)或两者的混合模式下渲染.

由于法律禁止 Linux 访问 Windows 字体,但仍然托管许多为 TTF 字体编写的应用程序,因此 Linux 文本渲染器能够为未提示的 TTF 字体计算即时合成提示。

对于智能手机和 hidpi 屏幕等高分辨率显示器而言,网格拟合并不重要。像素在缩放期间的舍入误差足够小,像素对齐不匹配可以忽略不计。

因此:

– Android:不需要提示字体,因为它在高分辨率显示器上使用,并且无论如何可能会自动计算提示,因为它是 Linux 变体

– Apple:从不以 TTF 或提示为导向,现在使用高分辨率显示器

– Windows:通常与低分辨率显示器一起使用,许多应用程序仍在使用旧的哑渲染堆栈,如果没有提示,它们将无法正确适应网格

– ChromeOS 和 Linux:可以在低分辨率显示器上使用,可以自动计算提示,不一定需要提示字体,但谷歌可能花钱请人手动提示字体,所以它认为内置提示更好(提示这些天处理:使用 Linux 引擎自动计算提示,然后手动检查它是否工作正常,在需要时更正,将更正的计算添加到字体文件中。最好的自动提示生成干净的形状,但有时扭曲太多意味着字形词干,那是对齐,不再对齐,因为算法将一个形状移动到上部像素线,将下一个形状移动到下部像素线。人类确实更擅长识别和修复这种情况。

现代字体格式是遗留元数据的可怕巴别塔,可以取悦各种软件(通常:Microsoft 使用 A、Apple B、OS/2 C 和 Adob​​e D,让我们将 A B C 和 D 放入新格式中,这样每个人都满意. 除了 A B C 和 D 都有自己的缺点,让我们添加更适合下一代软件的 E)。 android 版本比 unhinted 版本小一点,谷歌可能从这个版本中删除了所有 Android 不使用的元数据。只要您只在 Android 上使用它,它就可以像未提示的版本一样工作,并且可以节省存储空间。

关于android - roboto-android 和 roboto-unhinted 之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38118283/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com