• FreeType库是一个完全免费(开源)的、高质量的且可移植的字体引擎,它提供统一的接口来访问多种字体格式文件,包括TrueType, OpenType, Type1, CID, CFF, Windows FON/FNT, X11 PCF等。
    • FreeType的用户可以灵活地对它进行裁剪
    • FreeType 2 为访问字体文件提供了一套统一的、独立于字体文件类型的、简单而易用的API。另外,一些特别类型的API可以用来访问字体文件里的特殊数据。
    • FreeType 2 的设计是基于模块的,这些模块可以在编译时被静态链接到库中或者在运行时根据需要加载
    • FreeType 2 特意使用嵌入式系统编写,这意味着它不使用静态可写数据(也就是说,它可以直接从ROM中运行),这样客户程序就可以只为他们自己提供内存管理和输入/输出流的实现
    • freetype内部是一般根据Unicode编码索引的,可能不支持GBK编码

    https://wenku.baidu.com/view/2d24be10cc7931b765ce155b.html
    image.png
    image.png

    • 一个点等于1/72英寸
    • 像素数 = 点数*分辨率/72
    • 分辨率/72表示:1/72英寸的像素数
    • 点数*(分辨率/72)就表示N个点数又多少个像素

    image.png
    image.png

    Image3.png
    image.png
    image.png
    image.png
    image.png

    • bbox可以用来计算一行显示的高度,从而计算下一行显示的原点

    image.png

    FT轮廓
    image.png
    image.png
    image.png

    image.png

    FT位图和像素图描述符
    image.png
    image.png

    • FT_Bitmap结构体

    Freetype2设计
    image.png
    image.png

    image.png
    image.png

    • 一般使用glyph
    • image.png

    FT中的面向对象
    image.png
    image.png

    • 初始化freetype
    • image.png

    • FT_Face类

    • image.png

    image.png

    image.png

    • 一般定义一个slot变量,然后直接从face->glyph获得字形槽

    image.png

    • 初始化库
    • image.png
    • 装载一个字体face
      • 从一个字体文件
      • image.png
      • image.png
    • 访问face内容
    • image.png
    • image.png
    • image.png
    • 设置当前像素尺寸
    • image.png
    • image.png
    • image.png
    • image.png

    • 从face中装载一个字形

    • image.png
    • image.png
    • image.png
    • 使用其他字符表
    • image.png

    • 字形变换

    • image.png
    • image.png

    image.png
    image.png