15

这是 .ttf 字体的呈现方式:

字体是如何呈现的

我使用 FontForge 创建了这个纯矢量 TrueType 字体。我想在需要基于矢量的字形的应用程序上使用这种字体,并且不支持加载 .ttf 嵌入式位图(似乎没有这个问题)

在某些配色方案中,Windows 所做的这种子像素渲染使字体完全不可读。这种效果存在于大多数 ttf 字体中,但在像我这样具有像素完美边缘的字体上要强得多。

有没有人知道任何可编程的提示技巧或字体设置,可以让字体完美呈现像素而不是这个红色/蓝色光环?我希望字体在不修改操作系统以禁用 ClearType 或类似的情况下正常工作。

澄清一下,这是一个关于利用 TrueType 指令集或更改我可能忽略正确设置的 TrueType 字体设置(不是系统/应用程序设置)以使字体清晰呈现(如果可能)的问题。

4

2 回答 2

11

工作解决方案

感谢Brian Nixon发布解决方案 URL,感谢Erik Olofsson研究并在他的博客上发布解决方案。

Erik Olofsson 提供了一种解决方案,该解决方案强制 Windows 字体 API 优先使用 .ttf 嵌入位图,以便在渲染时优先于字形使用。

可以在http://www.electronicdissonance.com/2010/01/raster-fonts-in-visual-studio-2010.html找到详细的解决方案


解决方案总结

  1. 将“繁体中文”代码页添加到 OS/2 Panpose 表。
  2. 使用“ISO 106046-1”(Unicode、UCS-2)编码。
  3. 包括以下看似随机的平假名字符的字形:
    • い - U+3044
    • う - U+3046
    • か - U+304B
    • ひ - U+3057
    • の - U+306E
    • ん - U+3093

这份名单不是玩笑

于 2017-05-26T05:20:42.043 回答
0

在某些配色方案中,Windows 所做的这种子像素渲染使字体完全不可读。

听起来好像 ClearType 没有正确校准。

仅当文本颜色与显示器的颜色平面匹配时,才可能显示“像素完美”。对于黑色或灰度文本,这意味着灰度显示(例如,高分辨率和昂贵的数字单色显示器在医学成像领域很流行)。

否则,您会遇到一个基本事实,即颜色分量在显示器上是物理分离的。ClearType 的概念是调整图像以补偿颜色平面之间的实际物理偏移。

具有高精度套准的印刷媒体最接近多色平面而没有任何偏移。

现在,在某些情况下禁用 ClearType 仍然有意义——当图像打算保存在文件中而不是在本地显示器上显示时,禁用 ClearType 可以产生在更广泛的显示器上清晰易读的结果,并且更好地压缩。(但为了获得最佳效果,请发送矢量并让最终用户显示补偿其特定的子像素结构)

在 GDI 中,ClearType 的控制是通过LOGFONT命令文本绘图函数的结构设置的,该函数使用哪些字体系列、大小和属性。在 GDI+ 中,SetTextRenderingHintGraphics实例上使用。

因为 ClearType 的使用是由应用程序与大小、重量和其他属性同时设置的,所以无论有无请求,您的字体都会受到请求。但是,ClearType 并非与所有字体兼容,通过强制不兼容,您将避免单独为您的字体使用 ClearType。

LOGFONT文档对 ClearType 有以下注释:

以下情况不支持 ClearType 抗锯齿:

  • 文本在打印机上呈现。
  • 显示设置为 256 色或更少。
  • 文本呈现给终端服务器客户端。
  • 该字体不是 TrueType 字体或带有 TrueType 轮廓的 OpenType 字体。例如,以下不支持 ClearType 抗锯齿:Type 1 字体、没有 TrueType 轮廓的 Postscript OpenType 字体、位图字体、矢量字体和设备字体。
  • 该字体已调整嵌入位图,适用于包含嵌入位图的任何字体大小。例如,这通常出现在东亚字体中。

此外,gaspTTF 格式的表格有几个指定的字段来影响 ClearType 的使用。

在此处输入图像描述

https://www.microsoft.com/typography/otspec/gasp.htmhttps://fontforge.github.io/fontinfo.html#gasp上的文档

当然,请确保head未设置表中的“针对 ClearType 优化”位。

于 2017-05-20T00:33:25.427 回答