iPad上的字体亚像素渲染

7
Sub-pixel字体渲染技术,如ClearType,极大地提高了字体显示分辨率和屏幕可读性。一般情况下,我该如何编写子像素字体渲染程序?在iPad上应该如何实现(在iOS设备上使用C、C++或Objective-C)?iPad的某些大小的字体非常模糊,我知道这种技术可以很好地解决iPad的显示问题……因此,我该如何为iPad开发字体渲染引擎(例如,我该如何获取子像素?我是否需要使用OpenGL?是否有现成的开源字体渲染引擎使用C、C++或Objective-C编写,适用于Mac OS X?)?
1个回答

14

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

但是请考虑这个设备可以轻松从纵向模式切换到横向模式,并且应用程序需要响应该更改。 这将意味着您的子像素字体机制也必须响应该更改,并且您需要为每种字体分别制作两个单独的子像素描述。

现在再考虑一下,开发人员希望能够编写可在平板电脑和手机上以单个购买/下载运行的通用应用程序。 但是看一下下面图片中各种手机的不同像素配置情况。 请记住,每个手机在纵向和横向模式下字体的描述都需要不同。 现在你有了大量的字体描述。

现在请记住,我们正在谈论最珍贵的资源是电池的便携设备,而子像素字体渲染则需要更多的计算资源。

我猜想这与苹果放弃子像素字体渲染并希望显示技术增加像素密度以至于不再需要的思考过程并不相差太远( iPhone 4 的视网膜显示屏是朝着这个方向迈出的第一步。)

我打赌在iPad的某个未来版本中,我们将拥有类似密度的显示屏,到那时就不会再那么重要了。 尝试为您的iPad应用程序发明子像素字体渲染机制所投入的任何努力将立即被废弃,因此我建议不要走这条路。

进入图像描述


如果资源是矢量图(比如文字?字体?),那么亚像素位置的计算不是自动数学计算吗?还是我错了? - Mark Canlas
3
听起来像是一个实现决策。可以在磁盘上有4个表示,或者在安装时计算4个表示并将其存储在磁盘上,或者在字体加载到内存时计算4个表示,或者在设备对重新定向做出响应时懒惰地计算表示。无论选择哪种方法,都只是将成本从一个地方移动到另一个地方,并没有摆脱它。在移动世��中,存储、内存和CPU都应该节俭使用,任何一种方法可能都不是最明智的资源利用方式。 - pohl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接