Skip to content
Browse files

Ensure when calculating font metrics that the total line height match…

…es requested line height.

This fixes rounding accuracy issues that could result in layout producing results off by a small number of Au.
  • Loading branch information
gw3583 committed Feb 18, 2016
1 parent 7aedb9c commit 286130b051430045d43d8a5917cb36f2f8f9b8cf
@@ -1928,9 +1928,14 @@ impl InlineMetrics {
pub fn from_font_metrics(font_metrics: &FontMetrics, line_height: Au) -> InlineMetrics {
let leading = line_height - (font_metrics.ascent + font_metrics.descent);
// Calculating the half leading here and then using leading - half_leading
// below ensure that we don't introduce any rounding accuracy issues here.
// The invariant is that the resulting total line height must exactly
// equal the requested line_height.
let half_leading = leading.scale_by(0.5);
InlineMetrics {
block_size_above_baseline: font_metrics.ascent + leading.scale_by(0.5),
depth_below_baseline: font_metrics.descent + leading.scale_by(0.5),
block_size_above_baseline: font_metrics.ascent + half_leading,
depth_below_baseline: font_metrics.descent + leading - half_leading,
ascent: font_metrics.ascent,

This file was deleted.

@@ -1,3 +1,5 @@
type: reftest
expected: FAIL
if os == "mac": PASS
@@ -1,3 +1,5 @@
type: reftest
expected: FAIL
if os == "linux": PASS

0 comments on commit 286130b

Please sign in to comment.
You can’t perform that action at this time.