Fonts 什么是CHAR2B类型?

Fonts 什么是CHAR2B类型?,fonts,character-encoding,x11,Fonts,Character Encoding,X11,在中,定义了一个名为CHAR2B的类型,它只是一个由两个字节组成的结构:byte1和byte2。该类型仅在两个请求中使用,querytextents和ImageText16,这两个请求都用于指定字体名称 我的问题是:CHAR2B的意义是什么?它是如何使用的?这种类型对我来说似乎毫无意义,因为: 有一个名为ImageText8的请求,它只使用字节字符串作为字体名称,而不是ImageText16中的CHAR2B字符串 许多其他请求将常用的“字节字符串”作为输入,而不是“字符字符串”,例如Query

在中,定义了一个名为
CHAR2B
的类型,它只是一个由两个字节组成的结构:
byte1
byte2
。该类型仅在两个请求中使用,
querytextents
ImageText16
,这两个请求都用于指定字体名称

我的问题是:
CHAR2B
的意义是什么?它是如何使用的?这种类型对我来说似乎毫无意义,因为:

  • 有一个名为
    ImageText8
    的请求,它只使用字节字符串作为字体名称,而不是
    ImageText16
    中的
    CHAR2B
    字符串
  • 许多其他请求将常用的“字节字符串”作为输入,而不是“字符字符串”,例如
    QueryExtension
    InternAtom
    OpenFont
    ,等等
  • CHAR2B
    仅用于2个请求
既然
CHAR2B
是X11协议的一部分,那么如何使用它呢?编码是什么?UTF16?其他类型的双字节编码?

  • 它用于指定要显示的文本,而不是任何字体名称
  • 它用于3个请求(PolyText16)。这些请求及其8位对应的请求是处理显示文本的唯一请求
  • CHAR2B
    s是用于显示文本的字体索引。您链接的文档非常清楚地说明

    STRING16中大字符的主要解释是,它们由两个字节组成,用于索引二维矩阵,因此使用CHAR2B而不是CARD16。这与索引2字节字符的JIS/ISO方法相对应。预计大多数大字体将使用2字节矩阵索引进行定义。对于使用线性索引构造的大字体,通过将字节1视为最高有效字节,可以将CHAR2B解释为16位数字。这意味着客户端应始终首先传输16位字符值的最高有效字节,因为服务器永远不会交换字节数量


    谢谢你的回答,所以这是我的误解。你有没有我可以为那些想了解更多关于X11字体的人阅读的资源?现在大多数应用程序都在客户端处理字体。我的家用电脑甚至没有任何服务器端字体,除了两种必需的丑陋固定字体。因此,坦率地说,了解真正的X11字体是浪费时间(除非您支持传统产品)。您想要学习的库是libxft