如何在Linux上为LCD(cleartype在windows)上进行子像素渲染?

时间:2009-09-29 21:02:17

标签: linux fonts freetype cleartype freetype2

我正在研究嵌入式系统,具有自己的窗口系统和渲染库。有一天,当我安装Ubuntu时,令我惊讶的是它有LCD子像素渲染。将它放在我的设备上真的很酷。因为它非常易读。

目前我要求freetype中的特定字形,freetype给我一个值为alpha的内存缓冲区,因此不可能有子像素渲染。我所拥有的是正常的反字体字体。在子像素渲染中,左边的大部分字体像素用红色反对,最右边用蓝色(假设屏幕是RGB)。

是否有任何方法可以为freetype提供有关当前像素是左还是右或中心的信息?

谢谢,Sunny。

3 个答案:

答案 0 :(得分:1)

freetype可以做到

答案 1 :(得分:1)

正如您所指出的,您正在使用的桌面环境(GNOME,KDE,无论如何)都可以实现这一点。它的设置因环境而异。

至于如何在自己的代码中执行此操作,您可以使用窗口管理器执行的相同例程(GNOME上的Gtk +,KDE上的Qt等),或者您可以使用单独的库,如FreeTypeSDL_ttf。抗锯齿 - 通用术语,因为ClearType是Microsoft专用的专利算法 - 在这些库中通常是可选的,默认情况下禁用速度。

答案 2 :(得分:1)

我认为libcairo是Ubuntu中大多数执行抗锯齿的GTK应用程序的底层。我认为是否专门为LCD屏幕完成子像素渲染是用户选择的,而不是应用程序作者。用户通过系统中的“外观首选项”的“字体”选项卡控制它 - >偏好 - >外观(可以作为二进制“gnome-appearance-properties”手动运行)并单击“子像素平滑(LCD)”选项。

也许应用程序可以为自己覆盖此设置?但是,不确定他们为什么要这么做,因为应用程序无法控制用户使用的是什么类型的显示器。