iPad上字体的亚像素渲染

Posted

技术标签:

【中文标题】iPad上字体的亚像素渲染【英文标题】:Sub-pixel rendering of fonts on the iPad 【发布时间】:2011-08-02 14:11:48 【问题描述】:

像ClearType 这样的亚像素字体渲染显着提高了字体显示分辨率并提高了屏幕可读性。我将如何编程字体的子像素渲染(通常),以及如何在 iPad(ios 设备上的 C、C++ 或 Objective-C)上实现? iPad 上某些尺寸的字体非常模糊,我知道 iPad 的显示屏可以很好地使用这种技术...

那么,我将如何为 iPad 开发字体渲染引擎(例如,我如何访问子像素?我是否使用 OpenGL?是否有现有的开源字体渲染引擎编写使用 C、C++ 或 Objective-C for Mac OS X?)?

【问题讨论】:

【参考方案1】:

iPad 上的每个像素都是一个由红色、绿色和蓝色分量组成的矩形,因此人们可能会认为亚像素字体渲染对于设备来说是一个不错的选择。

但请注意,此设备可以轻松地从纵向模式更改为横向模式,并且应用程序有望响应这种变化。这意味着您的子像素字体机制也必须响应该更改,并且您需要为每种字体提供两个单独的子像素描述。

现在考虑到这样一个事实,即开发人员希望能够编写在一次购买/下载中运行在平板电脑和手机上的通用应用程序。但请看下图中各代手机的不同像素配置。回想一下,这些中的每一个都需要在纵向模式和横向模式下以不同的方式描述字体。现在你有大量的字体描述。

现在回想一下,我们说的是便携式设备,其中最宝贵的资源是电池,而亚像素字体渲染的计算量更大。

我猜这与导致 Apple 避开亚像素字体渲染,转而希望显示技术将像素密度提高到不再需要的程度(视网膜显示iPhone 4 是朝这个方向迈出的第一步。)

我敢打赌,在 iPad 的某些未来版本中,我们将拥有类似密度的显示器,这并不重要。您为 iPad 应用程序发明亚像素字体渲染机制所付出的任何努力都将在那时立即付诸东流,因此我建议您不要走这条路。

【讨论】:

如果资产是矢量(如文本?字体?)是不是自动/数学计算亚像素位置?还是我弄错了? 这听起来像是一个实施决策。可以在磁盘上有 4 个表示,或者在安装时计算 4 个表示(并将其存储在磁盘上),或者在字体加载到内存时计算 4 个表示,或者在设备响应重新定向时延迟计算表示。不管你选择什么,你只是将成本从一个地方转移到另一个地方,而不是摆脱它。在存储、内存和 cpu 都应该节俭使用的移动世界中,任何这些都可能不是最明智的资源使用方式。

以上是关于iPad上字体的亚像素渲染的主要内容,如果未能解决你的问题,请参考以下文章

为小视频渲染像素完美的字幕

iOS 移动设备上的字体渲染问题

什么是字体渲染(Font Rendering)?

基于SDF渲染字体

TTF字体的渲染曲线

如何在 Windows 上的 CSS 3 中更流畅地渲染细字体?