mirror of
https://github.com/servo/servo.git
synced 2025-06-06 16:45:39 +00:00
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.
This commit is contained in:
parent
7aedb9c7cd
commit
286130b051
4 changed files with 13 additions and 9 deletions
|
@ -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,
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue