[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[ft-devel] Wrong metric initialization in 2.3.4
From: |
Sam Pfeisen |
Subject: |
[ft-devel] Wrong metric initialization in 2.3.4 |
Date: |
Sun, 20 May 2007 01:18:43 +0900 |
In 2.2.1 tt_size_init is called during FT_New_Face and it calls
tt_size_run_fpgm and metrics are initialized.
Since version 2.3.4 tt_size_init and tt_size_init_bytecode are separated.
In 2.3.4 bytecode-related init functions are not called until FT_Load_Glyph.
tt_size_init_bytecode and tt_size_run_fpgm are called during
FT_Load_Glyph, and it's usually after FT_Set_Char_Size.
One of the side effects is that some of the metrics set by
FT_Set_Char_Size are reset to zeroes again after FT_Load_Glyph.
Testing sample code (based on ttdebug in ftdemo) is attached.
============
% metrictest 1 16 myfont.ttf
## freetype-2.2.1
1. After FT_New_Face()
size->root.metrics.x_ppem=0
size->metrics.x_ppem=0
exec->metrics.x_ppem=0
2. After FT_Set_Char_Size()
size->root.metrics.x_ppem=16
size->metrics.x_ppem=16
exec->metrics.x_ppem=16
3. After FT_Load_Glyph()
size->root.metrics.x_ppem=16
size->metrics.x_ppem=16
exec->metrics.x_ppem=16
## freetype-2.3.4
1. After FT_New_Face()
size->root.metrics.x_ppem=0
size->metrics.x_ppem=0
exec->metrics.x_ppem=0
2. After FT_Set_Char_Size()
size->root.metrics.x_ppem=16
size->metrics.x_ppem=16
exec->metrics.x_ppem=0
3. After FT_Load_Glyph()
size->root.metrics.x_ppem=16
size->metrics.x_ppem=0
exec->metrics.x_ppem=0
----------------
metrictest.c
Description: Text document
- [ft-devel] Wrong metric initialization in 2.3.4,
Sam Pfeisen <=