zoukankan      html  css  js  c++  java
  • X Window研究笔记(18)

    X Window研究笔记(18)

    转载时请注明出处和作者联系方式
    作者联系方式:李先静 <xianjimli at hotmail dot com>

    18.X Window 字体处理

    X Window支持多种字体,即支持点阵字体,也支持矢量字体。最初,对字体的管理和渲染都是由X Server来做的。但是X Server管理和渲染字体有诸多不便,现在一般都由客户端的fontconfig/freetype来做这部分工作了。

    服务器端字体处理

    与字体相关的服务有:
    • ProcOpenFont : 打开客户端指定的字体。
    • ProcQueryFont: 查询的字体信息。
    • ProcCloseFont : 关闭客户端指定的字体。
    • ProcListFonts :枚举服务端支持的字体。
    • ProcSetFontPath :设置字体搜索路径。
    • ProcGetFontPath : 查询服务器上字体搜索路径。

    在这里,有人可能有点疑惑:打开、查询和关闭字体都有相应的函数,为什么没有看到使用字体的函数呢。原因是这样的,字体是与GC相关联的,设置字体是通过ChangeGC函数来实现的,在客户端的库里,提供了XSetFont函数,它对ChangeGC进行了封装,使其意义直观一点。

    int        
    ProcChangeGC(client)
    register ClientPtr client;


    客户字体处理:

    客户端处理字体的基本流程如下:
    1. 使用Fontconfig匹配到相应的字体。
    2. 使用用freetype绘制字体成glyph。
    3. 使用Xrender扩展模块把字体glyph画到屏幕上。
    Xft对前面两步进行了封装,用起来会方便一点。前面两步是在客户端执行的,后面一步是在服务上执行的。

    相应的函数有:

    • XftFontOpenName: 打开指定的字体。
    • XftDrawString8: 使用指定的字体绘制文字。void         

    (待续)
     
  • 相关阅读:
    基于Python的人脸动漫转换
    let 与 var的区别
    【LeetCode】汇总
    【HDU】4632 Palindrome subsequence(回文子串的个数)
    【算法】均匀的生成圆内的随机点
    【LeetCode】725. Split Linked List in Parts
    【LeetCode】445. Add Two Numbers II
    【LeetCode】437. Path Sum III
    【LeetCode】222. Count Complete Tree Nodes
    【LeetCode】124. Binary Tree Maximum Path Sum
  • 原文地址:https://www.cnblogs.com/zhangyunlin/p/6167669.html
Copyright © 2011-2022 走看看