Merge pull request #864 from notmasteryet/issue-799
Suppress invisible text (#799)
This commit is contained in:
commit
3c601f012b
@ -6,6 +6,17 @@
|
|||||||
// <canvas> contexts store most of the state we need natively.
|
// <canvas> contexts store most of the state we need natively.
|
||||||
// However, PDF needs a bit more state, which we store here.
|
// However, PDF needs a bit more state, which we store here.
|
||||||
|
|
||||||
|
var TextRenderingMode = {
|
||||||
|
FILL: 0,
|
||||||
|
STROKE: 1,
|
||||||
|
FILL_STROKE: 2,
|
||||||
|
INVISIBLE: 3,
|
||||||
|
FILL_ADD_TO_PATH: 4,
|
||||||
|
STROKE_ADD_TO_PATH: 5,
|
||||||
|
FILL_STROKE_ADD_TO_PATH: 6,
|
||||||
|
ADD_TO_PATH: 7
|
||||||
|
};
|
||||||
|
|
||||||
var CanvasExtraState = (function canvasExtraState() {
|
var CanvasExtraState = (function canvasExtraState() {
|
||||||
function constructor(old) {
|
function constructor(old) {
|
||||||
// Are soft masks and alpha values shapes or opacities?
|
// Are soft masks and alpha values shapes or opacities?
|
||||||
@ -23,6 +34,7 @@ var CanvasExtraState = (function canvasExtraState() {
|
|||||||
this.charSpacing = 0;
|
this.charSpacing = 0;
|
||||||
this.wordSpacing = 0;
|
this.wordSpacing = 0;
|
||||||
this.textHScale = 1;
|
this.textHScale = 1;
|
||||||
|
this.textRenderingMode = TextRenderingMode.FILL;
|
||||||
// Color spaces
|
// Color spaces
|
||||||
this.fillColorSpace = new DeviceGrayCS();
|
this.fillColorSpace = new DeviceGrayCS();
|
||||||
this.fillColorSpaceObj = null;
|
this.fillColorSpaceObj = null;
|
||||||
@ -577,7 +589,9 @@ var CanvasGraphics = (function canvasGraphics() {
|
|||||||
this.ctx.font = rule;
|
this.ctx.font = rule;
|
||||||
},
|
},
|
||||||
setTextRenderingMode: function canvasGraphicsSetTextRenderingMode(mode) {
|
setTextRenderingMode: function canvasGraphicsSetTextRenderingMode(mode) {
|
||||||
TODO('text rendering mode: ' + mode);
|
if (mode >= TextRenderingMode.FILL_ADD_TO_PATH)
|
||||||
|
TODO('unsupported text rendering mode: ' + mode);
|
||||||
|
this.current.textRenderingMode = mode;
|
||||||
},
|
},
|
||||||
setTextRise: function canvasGraphicsSetTextRise(rise) {
|
setTextRise: function canvasGraphicsSetTextRise(rise) {
|
||||||
TODO('text rise: ' + rise);
|
TODO('text rise: ' + rise);
|
||||||
@ -671,6 +685,7 @@ var CanvasGraphics = (function canvasGraphics() {
|
|||||||
var textLayer = this.textLayer;
|
var textLayer = this.textLayer;
|
||||||
var text = {str: '', length: 0, canvasWidth: 0, geom: {}};
|
var text = {str: '', length: 0, canvasWidth: 0, geom: {}};
|
||||||
var textSelection = textLayer && !skipTextSelection ? true : false;
|
var textSelection = textLayer && !skipTextSelection ? true : false;
|
||||||
|
var textRenderingMode = current.textRenderingMode;
|
||||||
|
|
||||||
if (textSelection) {
|
if (textSelection) {
|
||||||
ctx.save();
|
ctx.save();
|
||||||
@ -727,7 +742,26 @@ var CanvasGraphics = (function canvasGraphics() {
|
|||||||
|
|
||||||
var char = glyph.fontChar;
|
var char = glyph.fontChar;
|
||||||
var charWidth = glyph.width * fontSize * 0.001 + charSpacing;
|
var charWidth = glyph.width * fontSize * 0.001 + charSpacing;
|
||||||
ctx.fillText(char, width, 0);
|
|
||||||
|
switch (textRenderingMode) {
|
||||||
|
default: // other unsupported rendering modes
|
||||||
|
case TextRenderingMode.FILL:
|
||||||
|
case TextRenderingMode.FILL_ADD_TO_PATH:
|
||||||
|
ctx.fillText(char, width, 0);
|
||||||
|
break;
|
||||||
|
case TextRenderingMode.STROKE:
|
||||||
|
case TextRenderingMode.STROKE_ADD_TO_PATH:
|
||||||
|
ctx.strokeText(char, width, 0);
|
||||||
|
break;
|
||||||
|
case TextRenderingMode.FILL_STROKE:
|
||||||
|
case TextRenderingMode.FILL_STROKE_ADD_TO_PATH:
|
||||||
|
ctx.fillText(char, width, 0);
|
||||||
|
ctx.strokeText(char, width, 0);
|
||||||
|
break;
|
||||||
|
case TextRenderingMode.INVISIBLE:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
width += charWidth;
|
width += charWidth;
|
||||||
|
|
||||||
text.str += glyph.unicode === ' ' ? ' ' : glyph.unicode;
|
text.str += glyph.unicode === ' ' ? ' ' : glyph.unicode;
|
||||||
|
Loading…
Reference in New Issue
Block a user