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

Fonts 裸体x11如何绘制truetype或其他抗锯齿字体?,fonts,x11,Fonts,X11,如何在套接字上使用裸体X11连接绘制文本 我通过套接字连接到x11服务器,并手动处理协议。我不使用Xlib或XCB,更不用说Qt、GTK甚至Freetype了。我有一个未解决的问题,除了古老的位图字体,我无法绘制其他字体。我想用LCD亚像素渲染绘制FreeSans或其他支持Unicode的字体,但只使用内置的x11功能。可能使用了一些x11扩展。但是哪一个呢?使用什么功能?如何在本地或服务器上选择字体?X11是否可以使用提供的样式信息(包括颜色、背景色、字体名称、大小和装饰)为我呈现字体?否,X

如何在套接字上使用裸体X11连接绘制文本


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

否,X不为您呈现字体,但它可以呈现抗锯齿像素贴图“Glyphs”序列。如果您只想使用CoreX协议,则必须在客户端呈现所有内容(大多数库都是这样做的,通常使用cairo库)

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

您还必须处理其他复杂性(从右到左、垂直等)。要做到100%正确,这是一项非常复杂的任务,但sans edge案例确实是可行的,而且是一个很好的教育项目


您可以查看我的javascript x客户端库中的原始套接字+xrender通信示例:

既然您正在重新发明轮子,为什么不使用钝石?:-)尝试使用WireShark捕获“hello,world!”样式的应用程序在某个工具包中发送/接收的X11消息,该工具包允许您轻松使用UniCode字体进行亚像素渲染。(问一个愚蠢的问题,得到一个愚蠢的建议)但许多应用程序会在客户端使用freetype或类似的库呈现字体,我很想解码数据包如果我知道某个应用程序确实在做我想要的事情,你能推荐这样一个应用程序吗?自己在(Unicode,支持亚像素)工具包中编写一个。然后从中捕获流量。如果您不能/不会这样做,那么您就没有必要编写一个使用裸X11协议的应用程序。@David SkyMesh,我可以这样做,但我要捕获的只是freetype在客户端准备的位图发送到服务器。我想使用服务器端文本呈现。@exebook,否,Xft在客户端使用freetype来呈现文本,并使用呈现扩展插件来上载图示符,或使用核心X11 PutImage请求来上载整个文本图像。将X11绑定到节点做得很好。您是否一直在考虑实现Xft扩展(服务器端freetype)?我在某处也看到了协议PDF。我正在考虑“服务器端javascript”扩展,以便您可以将脚本上载到X11。对于freetype扩展不太确定-您可以通过XRender和本地glyph生成实现它所做的一切。我想将字体功能添加到node-x11(或其上的-to),但我可能会有类似于web字体的API