From cfc052a515c62be1df0401d5c6fd4f5388fbb012 Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Sat, 19 Aug 2017 17:21:08 +0200 Subject: [PATCH] Implement text rise for the SVG back-end The property and the setter for text rise were already present, but they were never used or called. This patch completes the implementation by calling the setter when the operator is encountered and by using the text rise value when rendering text. --- src/display/svg.js | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/display/svg.js b/src/display/svg.js index 0ab555391..9f9bad7f7 100644 --- a/src/display/svg.js +++ b/src/display/svg.js @@ -562,6 +562,9 @@ SVGGraphics = (function SVGGraphicsClosure() { this.setTextMatrix(args[0], args[1], args[2], args[3], args[4], args[5]); break; + case OPS.setTextRise: + this.setTextRise(args[0]); + break; case OPS.setLineWidth: this.setLineWidth(args[0]); break; @@ -782,9 +785,17 @@ SVGGraphics = (function SVGGraphicsClosure() { current.tspan.setAttributeNS(null, 'fill', current.fillColor); } + // Include the text rise in the text matrix since the `pm` function + // creates the SVG element's `translate` entry (work on a copy to avoid + // altering the original text matrix). + let textMatrix = current.textMatrix; + if (current.textRise !== 0) { + textMatrix = textMatrix.slice(); + textMatrix[5] += current.textRise; + } + current.txtElement.setAttributeNS(null, 'transform', - pm(current.textMatrix) + - ' scale(1, -1)'); + pm(textMatrix) + ' scale(1, -1)'); current.txtElement.setAttributeNS(XML_NS, 'xml:space', 'preserve'); current.txtElement.appendChild(current.tspan); current.txtgrp.appendChild(current.txtElement);