summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRazrFalcon <razrfalcon@gmail.com>2019-01-02 22:10:57 +0200
committerRazrFalcon <razrfalcon@gmail.com>2019-01-02 22:14:10 +0200
commit3afab96590fe632c7912b3748c37d25e47c2db3d (patch)
tree1073e9b74b1f1ecb76378cb2b2ece7568cf09eee
parent28b166f1cda30bd9cb2b9f4dc70c49e223e42aae (diff)
(cairo-backend) Fixed font ascent calculation.
Closes #102
-rw-r--r--CHANGELOG.md1
-rw-r--r--src/backend_cairo/text.rs3
-rw-r--r--src/backend_qt/text.rs2
-rw-r--r--src/backend_utils/text.rs4
-rw-r--r--testing_tools/regression/allow-cairo.txt4
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