@ -83,16 +83,23 @@ var TextLayerBuilder = (function TextLayerBuilderClosure() {
var width = ctx . measureText ( textDiv . textContent ) . width ;
var width = ctx . measureText ( textDiv . textContent ) . width ;
if ( width > 0 ) {
if ( width > 0 ) {
textLayerFrag . appendChild ( textDiv ) ;
textLayerFrag . appendChild ( textDiv ) ;
var transform ;
if ( textDiv . dataset . canvasWidth !== undefined ) {
// Dataset values come of type string.
// Dataset values come of type string.
var textScale = textDiv . dataset . canvasWidth / width ;
var textScale = textDiv . dataset . canvasWidth / width ;
transform = 'scaleX(' + textScale + ')' ;
} else {
transform = '' ;
}
var rotation = textDiv . dataset . angle ;
var rotation = textDiv . dataset . angle ;
var transform = 'scale(' + textScale + ', 1)' ;
if ( rotation ) {
if ( rotation ) {
transform = 'rotate(' + rotation + 'deg) ' + transform ;
transform = 'rotate(' + rotation + 'deg) ' + transform ;
}
}
if ( transform ) {
CustomStyle . setProp ( 'transform' , textDiv , transform ) ;
CustomStyle . setProp ( 'transform' , textDiv , transform ) ;
}
}
}
}
}
this . textLayerDiv . appendChild ( textLayerFrag ) ;
this . textLayerDiv . appendChild ( textLayerFrag ) ;
this . renderingDone = true ;
this . renderingDone = true ;
@ -165,11 +172,16 @@ var TextLayerBuilder = (function TextLayerBuilderClosure() {
if ( angle !== 0 ) {
if ( angle !== 0 ) {
textDiv . dataset . angle = angle * ( 180 / Math . PI ) ;
textDiv . dataset . angle = angle * ( 180 / Math . PI ) ;
}
}
// We don't bother scaling single-char text divs, because it has very
// little effect on text highlighting. This makes scrolling on docs with
// lots of such divs a lot faster.
if ( textDiv . textContent . length > 1 ) {
if ( style . vertical ) {
if ( style . vertical ) {
textDiv . dataset . canvasWidth = geom . height * this . viewport . scale ;
textDiv . dataset . canvasWidth = geom . height * this . viewport . scale ;
} else {
} else {
textDiv . dataset . canvasWidth = geom . width * this . viewport . scale ;
textDiv . dataset . canvasWidth = geom . width * this . viewport . scale ;
}
}
}
} ,
} ,
setTextContent : function TextLayerBuilder _setTextContent ( textContent ) {
setTextContent : function TextLayerBuilder _setTextContent ( textContent ) {