From c19edb8f5794950e13ebac396398a3db79321e36 Mon Sep 17 00:00:00 2001 From: Zach Bjornson Date: Thu, 7 Sep 2017 12:24:36 -0700 Subject: [PATCH] Minimal backport of #985 (rotated text baselines) --- src/CanvasRenderingContext2d.cc | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/CanvasRenderingContext2d.cc b/src/CanvasRenderingContext2d.cc index 8751c2372..6bf756c31 100755 --- a/src/CanvasRenderingContext2d.cc +++ b/src/CanvasRenderingContext2d.cc @@ -1794,18 +1794,20 @@ Context2d::setTextPath(const char *str, double x, double y) { break; } + double yScale = sqrt(matrix.yx * matrix.yx + matrix.yy * matrix.yy); + switch (state->textBaseline) { case TEXT_BASELINE_ALPHABETIC: metrics = PANGO_LAYOUT_GET_METRICS(_layout); - y -= (pango_font_metrics_get_ascent(metrics) / PANGO_SCALE) * matrix.yy; + y -= (pango_font_metrics_get_ascent(metrics) / PANGO_SCALE) * yScale; break; case TEXT_BASELINE_MIDDLE: metrics = PANGO_LAYOUT_GET_METRICS(_layout); - y -= ((pango_font_metrics_get_ascent(metrics) + pango_font_metrics_get_descent(metrics))/(2.0 * PANGO_SCALE)) * matrix.yy; + y -= ((pango_font_metrics_get_ascent(metrics) + pango_font_metrics_get_descent(metrics))/(2.0 * PANGO_SCALE)) * yScale; break; case TEXT_BASELINE_BOTTOM: metrics = PANGO_LAYOUT_GET_METRICS(_layout); - y -= ((pango_font_metrics_get_ascent(metrics) + pango_font_metrics_get_descent(metrics)) / PANGO_SCALE) * matrix.yy; + y -= ((pango_font_metrics_get_ascent(metrics) + pango_font_metrics_get_descent(metrics)) / PANGO_SCALE) * yScale; break; }