Fix some `FT_Fixed` vs. `FT_Long` confusion.

`FT_Fixed` and `FT_Long` are both typedef'ed to be `signed long`.  However,
`FT_Fixed` implies that the lower 16 bits are being used to express
fractional values and so these two types should not be confused.

* include/freetype/internal/services/svmm.h (FT_Set_MM_Blend_Func): Use
`FT_Fixed` for `coords`.  Users are passing `FT_Fixed` and implementations
are taking `FT_Fixed`.
(FT_Get_MM_Blend_Func): Ditto.

* src/autofit/afcjk.c (af_cjk_metrics_check_digits): Use `FT_Long` for
`advance` and `old_advance`.  `advance`'s address is passed as `FT_Long*` to
`af_shaper_get_elem`, which writes the advance in em units (not fixed).  The
exact value is not important here as it is only compared to check whether it
has changed.

* src/autofit/aflatin.c (af_latin_metrics_check_digits): Ditto.
This commit is contained in:
Ben Wagner 2023-06-01 21:05:32 -04:00 committed by Werner Lemberg
parent 2fb8eda5d6
commit 7bed7a02f4
3 changed files with 10 additions and 10 deletions

View File

@ -62,7 +62,7 @@ FT_BEGIN_HEADER
typedef FT_Error
(*FT_Set_MM_Blend_Func)( FT_Face face,
FT_UInt num_coords,
FT_Long* coords );
FT_Fixed* coords );
typedef FT_Error
(*FT_Get_Var_Design_Func)( FT_Face face,
@ -80,7 +80,7 @@ FT_BEGIN_HEADER
typedef FT_Error
(*FT_Get_MM_Blend_Func)( FT_Face face,
FT_UInt num_coords,
FT_Long* coords );
FT_Fixed* coords );
typedef FT_Error
(*FT_Get_Var_Blend_Func)( FT_Face face,

View File

@ -568,7 +568,7 @@
FT_Face face )
{
FT_Bool started = 0, same_width = 1;
FT_Fixed advance = 0, old_advance = 0;
FT_Long advance = 0, old_advance = 0;
/* If HarfBuzz is not available, we need a pointer to a single */
/* unsigned long value. */

View File

@ -1066,7 +1066,7 @@
FT_Face face )
{
FT_Bool started = 0, same_width = 1;
FT_Fixed advance = 0, old_advance = 0;
FT_Long advance = 0, old_advance = 0;
/* If HarfBuzz is not available, we need a pointer to a single */
/* unsigned long value. */