[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[freetype2] apodtele-master-patch-33657 dacbb5543: [type1/MM] Round desi
From: |
Werner Lemberg |
Subject: |
[freetype2] apodtele-master-patch-33657 dacbb5543: [type1/MM] Round design coordinates. |
Date: |
Fri, 10 Feb 2023 08:27:33 -0500 (EST) |
branch: apodtele-master-patch-33657
commit dacbb55433079fb3539163862958a6b9466a0661
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Commit: Alexei Podtelezhnikov <apodtele@gmail.com>
[type1/MM] Round design coordinates.
The design coordinates for MM fonts were not rounded. For example,
`FT_Get_Var_Design_Coordinates` returned values with fractional part.
* src/type1/t1load.c (mm_axis_unmap): Refactor with rounding.
* include/freetype/ftmm.h (FT_Var_Axis, FT_Set_Var_Design_Coordinates,
FT_Get_Var_Design_Coordinates): Reword documentation.
---
include/freetype/ftmm.h | 10 +++++-----
src/type1/t1load.c | 11 ++++++-----
2 files changed, 11 insertions(+), 10 deletions(-)
diff --git a/include/freetype/ftmm.h b/include/freetype/ftmm.h
index e381ef3d3..3eabdd5f2 100644
--- a/include/freetype/ftmm.h
+++ b/include/freetype/ftmm.h
@@ -153,7 +153,7 @@ FT_BEGIN_HEADER
* @note:
* The fields `minimum`, `def`, and `maximum` are 16.16 fractional values
* for TrueType GX and OpenType variation fonts. For Adobe MM fonts, the
- * values are integers.
+ * values are whole numbers (i.e., the fractional part is zero).
*/
typedef struct FT_Var_Axis_
{
@@ -399,8 +399,8 @@ FT_BEGIN_HEADER
*
* @note:
* The design coordinates are 16.16 fractional values for TrueType GX and
- * OpenType variation fonts. For Adobe MM fonts, the values are
- * integers.
+ * OpenType variation fonts. For Adobe MM fonts, the values are supposed
+ * to be whole numbers (i.e., the fractional part is zero).
*
* [Since 2.8.1] To reset all axes to the default values, call the
* function with `num_coords` set to zero and `coords` set to `NULL`.
@@ -446,8 +446,8 @@ FT_BEGIN_HEADER
*
* @note:
* The design coordinates are 16.16 fractional values for TrueType GX and
- * OpenType variation fonts. For Adobe MM fonts, the values are
- * integers.
+ * OpenType variation fonts. For Adobe MM fonts, the values are whole
+ * numbers (i.e., the fractional part is zero).
*
* @since:
* 2.7.1
diff --git a/src/type1/t1load.c b/src/type1/t1load.c
index 5a1afd8d9..3ec9ffa16 100644
--- a/src/type1/t1load.c
+++ b/src/type1/t1load.c
@@ -225,11 +225,12 @@
for ( j = 1; j < axismap->num_points; j++ )
{
if ( ncv <= axismap->blend_points[j] )
- return INT_TO_FIXED( axismap->design_points[j - 1] ) +
- ( axismap->design_points[j] - axismap->design_points[j - 1] ) *
- FT_DivFix( ncv - axismap->blend_points[j - 1],
- axismap->blend_points[j] -
- axismap->blend_points[j - 1] );
+ return INT_TO_FIXED( axismap->design_points[j - 1] +
+ FT_MulDiv( ncv - axismap->blend_points[j - 1],
+ axismap->design_points[j] -
+ axismap->design_points[j - 1],
+ axismap->blend_points[j] -
+ axismap->blend_points[j - 1] ) );
}
return INT_TO_FIXED( axismap->design_points[axismap->num_points - 1] );
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [freetype2] apodtele-master-patch-33657 dacbb5543: [type1/MM] Round design coordinates.,
Werner Lemberg <=