Sublime Text使用哪种底层图形库来输出文本?

8
我注意到Sublime Text在某些字体和大小方面的呈现要比基于Scintilla的编辑器更好。这是如何实现的?它是使用了一些著名的文本渲染器还是它们自己开发的?
1个回答

6
Sublime Text使用高度调整的设置覆盖平台特定库来渲染文本。它实际上在多年中使用了几个不同的库。我找不到任何关于OSX的具体信息,但是在论坛和发布说明中有一些关于Windows / Linux的细节。
在ST3版本3034中,noted图形渲染引擎被“从Cairo移植到Skia”。然而,目前不清楚是否进行了自定义文本渲染,还是仅用于UI元素。
Sublime Text 1
我找不到版本1的好参考资料,但通过论坛交谈的碎片,看起来可能是基于OpenGL编写的自定义渲染引擎。其他论坛帖子指出,由于GPU渲染引起了许多跨平台问题,所有未来的渲染都将是纯软件。
我能找到的最好的引文是这个
Sublime Text 2仅使用软件渲染。这在1.x中导致了太多的兼容性问题,而随着跨平台版本2的发布,这些问题只会增加。尽管如此,我将简单谈一下Sublime Text 1.x。基本文本渲染本身相当标准:每个字符都绘制为纹理四边形到屏幕上。但是,有一些值得注意的细节:
* 字符被缓冲并按颜色排序以减少状态更改。
* 大多数OpenGL应用程序将具有单通道纹理用于字符,并在其上混合所需的颜色。 Sublime Text使用带有正确前景和背景颜色预组合的RGB纹理来进行文本渲染。这需要更多的内存,但允许使用ClearType,这对于文本编辑器非常重要。

Sublime Text 2 (发布说明)

Windows使用GDI,从构建2081开始添加了使用DirectWrite的选项。
在构建2170中,Pango已添加为Linux上的渲染,以改善cjk文本的支持。

Sublime Text 3 (发行说明)

在3127版本中,Windows上的默认渲染器从GDI更换为DirectWrite,除非您使用Consolas或Courier New字体。 GDI仍可以作为设置选项之一


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