[truetype] Actually scale varied CVT values.
Up to now, only the unscaled CVT values were varied; in other words, the `CVAR' data was never used for bytecode hinting. * src/truetype/ttgxvar.c (tt_cvt_ready_iterator): New auxiliary function. (tt_face_vary_cvt): Use it to trigger rescaling of CVT values.
This commit is contained in:
parent
37580053b4
commit
b0522701f8
11
ChangeLog
11
ChangeLog
|
@ -1,3 +1,14 @@
|
||||||
|
2019-05-16 Werner Lemberg <wl@gnu.org>
|
||||||
|
|
||||||
|
[truetype] Actually scale varied CVT values.
|
||||||
|
|
||||||
|
Up to now, only the unscaled CVT values were varied; in other words,
|
||||||
|
the `CVAR' data was never used for bytecode hinting.
|
||||||
|
|
||||||
|
* src/truetype/ttgxvar.c (tt_cvt_ready_iterator): New auxiliary
|
||||||
|
function.
|
||||||
|
(tt_face_vary_cvt): Use it to trigger rescaling of CVT values.
|
||||||
|
|
||||||
2019-05-16 Werner Lemberg <wl@gnu.org>
|
2019-05-16 Werner Lemberg <wl@gnu.org>
|
||||||
|
|
||||||
[truetype] Use 26.6 format for storing unscaled CVT values.
|
[truetype] Use 26.6 format for storing unscaled CVT values.
|
||||||
|
|
|
@ -3,6 +3,9 @@ CHANGES BETWEEN 2.10.0 and 2.10.1
|
||||||
|
|
||||||
I. IMPORTANT BUG FIXES
|
I. IMPORTANT BUG FIXES
|
||||||
|
|
||||||
|
- The bytecode hinting of OpenType variation fonts was flawed, since
|
||||||
|
the data in the `CVAR' table wasn't correctly applied.
|
||||||
|
|
||||||
|
|
||||||
II. MISCELLANEOUS
|
II. MISCELLANEOUS
|
||||||
|
|
||||||
|
@ -19,6 +22,9 @@ CHANGES BETWEEN 2.10.0 and 2.10.1
|
||||||
twice in a row, the function returned an incorrect error code the
|
twice in a row, the function returned an incorrect error code the
|
||||||
second time.
|
second time.
|
||||||
|
|
||||||
|
- Increased precision while computing OpenType font variation
|
||||||
|
instances.
|
||||||
|
|
||||||
|
|
||||||
======================================================================
|
======================================================================
|
||||||
|
|
||||||
|
|
|
@ -3113,6 +3113,21 @@
|
||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
static FT_Error
|
||||||
|
tt_cvt_ready_iterator( FT_ListNode node,
|
||||||
|
void* user )
|
||||||
|
{
|
||||||
|
TT_Size size = (TT_Size)node->data;
|
||||||
|
|
||||||
|
FT_UNUSED( user );
|
||||||
|
|
||||||
|
|
||||||
|
size->cvt_ready = -1;
|
||||||
|
|
||||||
|
return FT_Err_Ok;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
*
|
*
|
||||||
* @Function:
|
* @Function:
|
||||||
|
@ -3143,6 +3158,8 @@
|
||||||
FT_Error error;
|
FT_Error error;
|
||||||
FT_Memory memory = stream->memory;
|
FT_Memory memory = stream->memory;
|
||||||
|
|
||||||
|
FT_Face root = &face->root;
|
||||||
|
|
||||||
FT_ULong table_start;
|
FT_ULong table_start;
|
||||||
FT_ULong table_len;
|
FT_ULong table_len;
|
||||||
|
|
||||||
|
@ -3451,6 +3468,12 @@
|
||||||
FT_FREE( im_end_coords );
|
FT_FREE( im_end_coords );
|
||||||
FT_FREE( cvt_deltas );
|
FT_FREE( cvt_deltas );
|
||||||
|
|
||||||
|
/* iterate over all FT_Size objects and set `cvt_ready' to -1 */
|
||||||
|
/* to trigger rescaling of all CVT values */
|
||||||
|
FT_List_Iterate( &root->sizes_list,
|
||||||
|
tt_cvt_ready_iterator,
|
||||||
|
NULL );
|
||||||
|
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue