diff options
author | RazrFalcon <razrfalcon@gmail.com> | 2019-01-02 22:10:57 +0200 |
---|---|---|
committer | RazrFalcon <razrfalcon@gmail.com> | 2019-01-02 22:14:10 +0200 |
commit | 3afab96590fe632c7912b3748c37d25e47c2db3d (patch) | |
tree | 1073e9b74b1f1ecb76378cb2b2ece7568cf09eee | |
parent | 28b166f1cda30bd9cb2b9f4dc70c49e223e42aae (diff) |
(cairo-backend) Fixed font ascent calculation.
Closes #102
-rw-r--r-- | CHANGELOG.md | 1 | ||||
-rw-r--r-- | src/backend_cairo/text.rs | 3 | ||||
-rw-r--r-- | src/backend_qt/text.rs | 2 | ||||
-rw-r--r-- | src/backend_utils/text.rs | 4 | ||||
-rw-r--r-- | testing_tools/regression/allow-cairo.txt | 4 |
5 files changed, 10 insertions, 4 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 07dd80c..5d1abc3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -30,6 +30,7 @@ This changelog also contains important changes in dependencies. - (usvg) Style attributes resolving on the root `svg` element. - (usvg) `SmoothCurveTo` and `SmoothQuadratic` conversion. - (usvg) `symbol` resolving. +- (cairo-backend) Font ascent calculation. - (qt-backend) Stroking of LineTo specified as CurveTo. - (svgdom) `stroke-miterlimit` attribute parsing. - (svgdom) `length` and `number` attribute types parsing. diff --git a/src/backend_cairo/text.rs b/src/backend_cairo/text.rs index 1c55f7c..7c34cb5 100644 --- a/src/backend_cairo/text.rs +++ b/src/backend_cairo/text.rs @@ -75,7 +75,8 @@ impl FontMetrics<pango::FontDescription> for PangoFontMetrics { self.layout.get_size().0.from_pango() } - fn ascent(&self) -> f64 { + fn ascent(&self, text: &str) -> f64 { + self.layout.set_text(text); let mut layout_iter = self.layout.get_iter().unwrap(); layout_iter.get_baseline().from_pango() } diff --git a/src/backend_qt/text.rs b/src/backend_qt/text.rs index 319de7c..6c86888 100644 --- a/src/backend_qt/text.rs +++ b/src/backend_qt/text.rs @@ -41,7 +41,7 @@ impl<'a> FontMetrics<qt::Font> for QtFontMetrics<'a> { self.p.font_metrics().width(text) } - fn ascent(&self) -> f64 { + fn ascent(&self, _: &str) -> f64 { self.p.font_metrics().ascent() } diff --git a/src/backend_utils/text.rs b/src/backend_utils/text.rs index 894d62f..c62c67a 100644 --- a/src/backend_utils/text.rs +++ b/src/backend_utils/text.rs @@ -27,7 +27,7 @@ pub trait FontMetrics<Font> { fn set_font(&mut self, font: &usvg::Font); fn font(&self) -> Font; fn width(&self, text: &str) -> f64; - fn ascent(&self) -> f64; + fn ascent(&self, text: &str) -> f64; fn height(&self) -> f64; } @@ -123,7 +123,7 @@ pub fn prepare_blocks<Font>( usvg::BaselineShift::Number(n) => -n, }; - let font_ascent = font_metrics.ascent(); + let font_ascent = font_metrics.ascent(c); let width = font_metrics.width(c); let yy = y - font_ascent + baseline_shift; let height = font_metrics.height(); diff --git a/testing_tools/regression/allow-cairo.txt b/testing_tools/regression/allow-cairo.txt index e69de29..81cd3c5 100644 --- a/testing_tools/regression/allow-cairo.txt +++ b/testing_tools/regression/allow-cairo.txt @@ -0,0 +1,4 @@ +e-text-025.svg +e-text-026.svg +e-text-031.svg +e-text-034.svg |