diff options
author | bors-servo <lbergstrom+bors@mozilla.com> | 2016-02-18 17:48:15 +0530 |
---|---|---|
committer | bors-servo <lbergstrom+bors@mozilla.com> | 2016-02-18 17:48:15 +0530 |
commit | 83be388f59b1bb4dfccc6ccd89022caa13b37a94 (patch) | |
tree | 1b7d2e903ff23eeabf6ebb8ce20e1157665a8d42 | |
parent | 9778e5e84d95af1d1dadf71ad8a28701762bf8fc (diff) | |
parent | 286130b051430045d43d8a5917cb36f2f8f9b8cf (diff) | |
download | servo-83be388f59b1bb4dfccc6ccd89022caa13b37a94.tar.gz servo-83be388f59b1bb4dfccc6ccd89022caa13b37a94.zip |
Auto merge of #9668 - glennw:inline-accuracy, r=pcwalton
Ensure when calculating font metrics that the total line height matches requested line height.
This fixes rounding accuracy issues that could result in layout producing results off by a small number of Au.
<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.svg" height="40" alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/9668)
<!-- Reviewable:end -->
4 files changed, 13 insertions, 9 deletions
diff --git a/components/layout/inline.rs b/components/layout/inline.rs index c95012a6f2a..3e3e6506cb7 100644 --- a/components/layout/inline.rs +++ b/components/layout/inline.rs @@ -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, } } diff --git a/tests/wpt/metadata-css/css-transforms-1_dev/html/transform-input-017.htm.ini b/tests/wpt/metadata-css/css-transforms-1_dev/html/transform-input-017.htm.ini deleted file mode 100644 index 2fbc2d5d73d..00000000000 --- a/tests/wpt/metadata-css/css-transforms-1_dev/html/transform-input-017.htm.ini +++ /dev/null @@ -1,5 +0,0 @@ -[transform-input-017.htm] - type: reftest - expected: - if os == "linux": PASS - FAIL diff --git a/tests/wpt/metadata-css/css-transforms-1_dev/html/transform-input-018.htm.ini b/tests/wpt/metadata-css/css-transforms-1_dev/html/transform-input-018.htm.ini index 23299ad9e96..1c005ae8a57 100644 --- a/tests/wpt/metadata-css/css-transforms-1_dev/html/transform-input-018.htm.ini +++ b/tests/wpt/metadata-css/css-transforms-1_dev/html/transform-input-018.htm.ini @@ -1,3 +1,5 @@ [transform-input-018.htm] type: reftest - expected: FAIL + expected: + if os == "mac": PASS + FAIL diff --git a/tests/wpt/metadata-css/css21_dev/html4/position-relative-035.htm.ini b/tests/wpt/metadata-css/css21_dev/html4/position-relative-035.htm.ini index 9cb4b4c28f7..5587e47e1bc 100644 --- a/tests/wpt/metadata-css/css21_dev/html4/position-relative-035.htm.ini +++ b/tests/wpt/metadata-css/css21_dev/html4/position-relative-035.htm.ini @@ -1,3 +1,5 @@ [position-relative-035.htm] type: reftest - expected: FAIL + expected: + if os == "linux": PASS + FAIL |