6961732: FontMetrics.getLeading() may be negative in freetype-based OpenJDK builds
Fix premature integer roundings to preserve correct height, width and descent values for fonts Reviewed-by: prr
This commit is contained in:
parent
599d2d5eaf
commit
cb437cbfe4
@ -490,22 +490,23 @@ Java_sun_font_FreetypeFontScaler_getFontMetricsNative(
|
||||
|
||||
/* ascent */
|
||||
ax = 0;
|
||||
ay = -(jfloat) FT26Dot6ToFloat(
|
||||
scalerInfo->face->size->metrics.ascender +
|
||||
bmodifier/2);
|
||||
ay = -(jfloat) FT26Dot6ToFloat(FT_MulFix(
|
||||
((jlong) scalerInfo->face->ascender + bmodifier/2),
|
||||
(jlong) scalerInfo->face->size->metrics.y_scale));
|
||||
/* descent */
|
||||
dx = 0;
|
||||
dy = -(jfloat) FT26Dot6ToFloat(
|
||||
scalerInfo->face->size->metrics.descender +
|
||||
bmodifier/2);
|
||||
dy = -(jfloat) FT26Dot6ToFloat(FT_MulFix(
|
||||
((jlong) scalerInfo->face->descender + bmodifier/2),
|
||||
(jlong) scalerInfo->face->size->metrics.y_scale));
|
||||
/* baseline */
|
||||
bx = by = 0;
|
||||
|
||||
/* leading */
|
||||
lx = 0;
|
||||
ly = (jfloat) FT26Dot6ToFloat(
|
||||
scalerInfo->face->size->metrics.height +
|
||||
bmodifier) + ay - dy;
|
||||
ly = (jfloat) FT26Dot6ToFloat(FT_MulFix(
|
||||
(jlong) scalerInfo->face->height + bmodifier,
|
||||
(jlong) scalerInfo->face->size->metrics.y_scale))
|
||||
+ ay - dy;
|
||||
/* max advance */
|
||||
mx = (jfloat) FT26Dot6ToFloat(
|
||||
scalerInfo->face->size->metrics.max_advance +
|
||||
|
Loading…
Reference in New Issue
Block a user