裸骨x11如何绘制truetype或其他抗锯齿字体?

时间:2014-01-19 09:44:15

标签: fonts x11

如何使用socket上的准系统X11连接绘制文本?

我通过套接字连接到x11服务器并手动处理协议。我不使用Xlib或XCB,单独留下Qt,GTK甚至Freetype。我有一个未解决的问题,我不能绘制古代位图字体以外的字体。我想用FreeSans或其他支持Unicode的字体绘制LCD子像素渲染,但只使用内置的x11功能。可能使用一些x11扩展。但是哪一个?使用什么功能?如何在本地或服务器上选择字体? X11可以使用提供的样式信息为我渲染字体,包括颜色,背景颜色,字体名称,大小和装饰吗?

1 个答案:

答案 0 :(得分:4)

不,X不为您渲染字体,但它可以渲染消除锯齿像素序列“Glyphs”的序列。如果您只想使用核心X协议,则必须在客户端呈现所有内容(大多数库无论如何都要这样做,通常使用cairo库)。

我建议尝试:1)使用FreeType在本地预渲染字体的所有字形; 2)使用CreateGlyphSet Xrender请求上传字体; 3)使用CompositeGlyphs8 / 16/32请求绘制字符串。阅读第12节 - XRender documentation的“雕文渲染”。每个字形都有自己的偏移值,但无法定义字距调整对。

你还必须处理其他复杂问题(从右到左,垂直等)。这是一项非常复杂的任务,100%正确,但没有边缘情况是可行的肯定和一个良好的教育项目。

您可以在我的javascript x客户端库中查看原始套接字+ xrender通信的示例:https://github.com/sidorares/node-x11

相关问题