Skip to content


Browse files Browse the repository at this point in the history
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 286130b
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 9 deletions.
9 changes: 7 additions & 2 deletions components/layout/
Expand Up @@ -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,
Expand Down

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.