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.
This commit is contained in:
Tim van der Meij 2017-08-19 17:21:08 +02:00
parent 7969802739
commit cfc052a515
No known key found for this signature in database
GPG Key ID: 8C3FD2925A5F2762

View File

@ -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);