FreeType中FT_Face.units_per_EM的值怎么来的

Posted 柳鲲鹏

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FreeType中FT_Face.units_per_EM的值怎么来的相关的知识,希望对你有一定的参考价值。

这个值不是算出来的,是直接从文件中读取的。

  • 赋值语句

sfobjs.c/sfnt_load_face()

大约1309行:

        root->units_per_EM = face->header.Units_Per_EM;
  • TT_Header.Units_Per_EM的赋值(1)

sfnt_load_face()

约875行:

    if ( !has_outline && sfnt->load_bhed )
    
      LOAD_( bhed );
      is_apple_sbit = FT_BOOL( !error );
    
  •  TT_Header.Units_Per_EM的赋值(2)

ttload.c/tt_face_load_generic_header

大约671行:

    header = &face->header;

    if ( FT_STREAM_READ_FIELDS( header_fields, header ) )
      goto Exit;
  • Units_Per_EM的赋值(3)

ftstream.c/FT_Stream_ReadFields

在这里直接读入一段数据,转换为结构体。

以上是关于FreeType中FT_Face.units_per_EM的值怎么来的的主要内容,如果未能解决你的问题,请参考以下文章

使用freetype来显示中文汉字和英文字符

FreeType2 - 字体更小

Freetype 和 OpenGL 的问题

通过 Harfbuzz 和 FreeType 在文本编辑器中显示混合复杂脚本

如何在 cmake 中使用 emscripten 端口(SDL2 和 Freetype)

尝试在 Docker 官方镜像中添加 freetype 到 php-gd