Skip to content

Commit

Permalink
Ensure when calculating font metrics that the total line height match…
Browse files Browse the repository at this point in the history
…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/inline.rs
Expand Up @@ -1928,9 +1928,14 @@ impl InlineMetrics {
#[inline]
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 @@
[transform-input-018.htm]
type: reftest
expected: FAIL
expected:
if os == "mac": PASS
FAIL
@@ -1,3 +1,5 @@
[position-relative-035.htm]
type: reftest
expected: FAIL
expected:
if os == "linux": PASS
FAIL

0 comments on commit 286130b

Please sign in to comment.