防止TrueType字体的抗锯齿(或子像素渲染)

时间:2017-05-16 11:12:15

标签: true-type-fonts fontforge cleartype

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

How the font is rendered

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

在某些颜色方案中,Windows执行此子像素渲染会使字体完全无法读取。大多数ttf字体都会出现这种效果,但对于像我这样的像素完美边缘的字体来说效果要强得多。

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

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

2 个答案:

答案 0 :(得分:5)

工作解决方案

感谢 Brian Nixon 发布解决方案网址,以及 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.   
  3. 使用< ISO 106046-1' (Unicode,UCS-2)编码。
  4.   
  5. 包含以下看似随机的平假名字符的字形:      
        
    • い - U + 3044
    •   
    • う - U + 3046
    •   
    • か - U + 304B
    •   
    • ひ - U + 3057
    •   
    • の - U + 306E
    •   
    • ん - U + 3093
    •   
  6.   

此列表不是笑话

答案 1 :(得分:0)

  

在某些颜色方案中,Windows执行此子像素渲染会使字体完全无法读取。

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

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

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

具有高精度配准的印刷介质是您在没有任何偏移的情况下最接近多个颜色平面的。

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

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

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

The LOGFONT documentation对ClearType有以下评论:

  

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

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

此外,TTF格式中的gasp表指定了几个影响ClearType用法的字段。

enter image description here

https://www.microsoft.com/typography/otspec/gasp.htm处的文档 和https://fontforge.github.io/fontinfo.html#gasp

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