exe*_*ook 7 text-rendering sublimetext
我注意到,与基于Scintilla的编辑器相比,Sublime Text对某些字体和大小的渲染要好得多.这是如何实现的?它下面是否有一些着名的文字渲染器或者它们自己开发了?
Sublime Text 在特定于平台的库上使用高度调整的设置来呈现文本。多年来,它实际上使用了几个不同的库。我找不到任何关于 OSX 的细节,但在论坛和发行说明中有一些关于 Windows/Linux 的细节。
在 ST3 build 3034 中,注意到图形渲染引擎是“从开罗移植到 Skia”的。但是,不清楚是否进行了自定义文本渲染,或者是否仅用于 UI 元素。
我找不到版本 1 的良好参考,但通过论坛对话的点点滴滴,它看起来可能是在 OpenGL 之上编写的自定义渲染引擎。其他论坛帖子指出,所有未来的渲染都将是纯软件的,因为 GPU 渲染会导致很多跨平台问题。
我能找到的最好的报价是这样的:
Sublime Text 2 仅使用软件渲染。最终,它在 1.x 中导致了太多的兼容性问题,并且随着版本 2 的跨平台,这只会增加。尽管如此,我还是会稍微谈谈 Sublime Text 1.x。
基本的文本渲染本身是相当标准的:纹理四边形绘制到屏幕上,每个字符一个。但是,有一些细节值得注意:
* 字符被缓冲,并按颜色排序,以减少状态变化。
* 大多数 OpenGL 应用程序将具有用于字符的单通道纹理,并在顶部混合所需的颜色。Sublime Text 使用 RGB 纹理,文本预先组合了正确的前景色和背景色。这会占用更多内存,但允许使用 ClearType,这对于文本编辑器很重要。
Windows 使用 GDI,在 build 2081 中添加了一个选项以使用 DirectWrite。
在 build 2170 中,添加了 Pango 作为 Linux 上的渲染,以改进对cjk 文本的支持。
DirectWrite 在 build 3127 中取代 GDI 作为 Windows 上的默认渲染器,除非您使用字体 Consolas 或 Courier New。GDI 被保留为设置中的渲染选项。
| 归档时间: |
|
| 查看次数: |
1313 次 |
| 最近记录: |