Browser minimal font adjustment
This commit is contained in:
		
							parent
							
								
									51d831ed03
								
							
						
					
					
						commit
						34e2aa5d21
					
				| @ -17,11 +17,14 @@ var TextRenderingMode = { | ||||
|   ADD_TO_PATH: 7 | ||||
| }; | ||||
| 
 | ||||
| var MIN_FONT_SIZE = 8; | ||||
| 
 | ||||
| var CanvasExtraState = (function CanvasExtraStateClosure() { | ||||
|   function CanvasExtraState(old) { | ||||
|     // Are soft masks and alpha values shapes or opacities?
 | ||||
|     this.alphaIsShape = false; | ||||
|     this.fontSize = 0; | ||||
|     this.fontSizeScale = 1; | ||||
|     this.textMatrix = IDENTITY_MATRIX; | ||||
|     this.fontMatrix = IDENTITY_MATRIX; | ||||
|     this.leading = 0; | ||||
| @ -577,6 +580,9 @@ var CanvasGraphics = (function CanvasGraphicsClosure() { | ||||
|       this.current.font = fontObj; | ||||
|       this.current.fontSize = size; | ||||
| 
 | ||||
|       if (fontObj.coded) | ||||
|         return; // we don't need ctx.font for Type3 fonts
 | ||||
| 
 | ||||
|       var name = fontObj.loadedName || 'sans-serif'; | ||||
|       var bold = fontObj.black ? (fontObj.bold ? 'bolder' : 'bold') : | ||||
|                                  (fontObj.bold ? 'bold' : 'normal'); | ||||
| @ -584,7 +590,12 @@ var CanvasGraphics = (function CanvasGraphicsClosure() { | ||||
|       var italic = fontObj.italic ? 'italic' : 'normal'; | ||||
|       var serif = fontObj.isSerifFont ? 'serif' : 'sans-serif'; | ||||
|       var typeface = '"' + name + '", ' + serif; | ||||
|       var rule = italic + ' ' + bold + ' ' + size + 'px ' + typeface; | ||||
| 
 | ||||
|       var browserFontSize = size >= MIN_FONT_SIZE ? size : MIN_FONT_SIZE; | ||||
|       this.current.fontSizeScale = browserFontSize != MIN_FONT_SIZE ? 1.0 : | ||||
|                                    size / MIN_FONT_SIZE; | ||||
| 
 | ||||
|       var rule = italic + ' ' + bold + ' ' + browserFontSize + 'px ' + typeface; | ||||
|       this.ctx.font = rule; | ||||
|     }, | ||||
|     setTextRenderingMode: function canvasGraphicsSetTextRenderingMode(mode) { | ||||
| @ -647,6 +658,7 @@ var CanvasGraphics = (function CanvasGraphicsClosure() { | ||||
|       var font = current.font; | ||||
|       var glyphs = font.charsToGlyphs(str); | ||||
|       var fontSize = current.fontSize; | ||||
|       var fontSizeScale = current.fontSizeScale; | ||||
|       var charSpacing = current.charSpacing; | ||||
|       var wordSpacing = current.wordSpacing; | ||||
|       var textHScale = current.textHScale; | ||||
| @ -715,6 +727,8 @@ var CanvasGraphics = (function CanvasGraphicsClosure() { | ||||
|         if (textSelection) | ||||
|           text.geom = this.getTextGeometry(); | ||||
| 
 | ||||
|         ctx.scale(fontSizeScale, fontSizeScale); | ||||
| 
 | ||||
|         var x = 0; | ||||
|         for (var i = 0; i < glyphsLength; ++i) { | ||||
|           var glyph = glyphs[i]; | ||||
| @ -728,20 +742,21 @@ var CanvasGraphics = (function CanvasGraphicsClosure() { | ||||
|           var charWidth = glyph.width * fontSize * 0.001 + | ||||
|               Util.sign(current.fontMatrix[0]) * charSpacing; | ||||
| 
 | ||||
|           var scaledX = x / fontSizeScale; | ||||
|           switch (textRenderingMode) { | ||||
|             default: // other unsupported rendering modes
 | ||||
|             case TextRenderingMode.FILL: | ||||
|             case TextRenderingMode.FILL_ADD_TO_PATH: | ||||
|               ctx.fillText(char, x, 0); | ||||
|               ctx.fillText(char, scaledX, 0); | ||||
|               break; | ||||
|             case TextRenderingMode.STROKE: | ||||
|             case TextRenderingMode.STROKE_ADD_TO_PATH: | ||||
|               ctx.strokeText(char, x, 0); | ||||
|               ctx.strokeText(char, scaledX, 0); | ||||
|               break; | ||||
|             case TextRenderingMode.FILL_STROKE: | ||||
|             case TextRenderingMode.FILL_STROKE_ADD_TO_PATH: | ||||
|               ctx.fillText(char, x, 0); | ||||
|               ctx.strokeText(char, x, 0); | ||||
|               ctx.fillText(char, scaledX, 0); | ||||
|               ctx.strokeText(char, scaledX, 0); | ||||
|               break; | ||||
|             case TextRenderingMode.INVISIBLE: | ||||
|               break; | ||||
|  | ||||
							
								
								
									
										1
									
								
								test/pdfs/issue1169.pdf.link
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								test/pdfs/issue1169.pdf.link
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | ||||
| http://www.cs.txstate.edu/~mb92/papers/gpgpu11.pdf | ||||
| @ -438,6 +438,13 @@ | ||||
|       "link": true, | ||||
|       "type": "eq" | ||||
|     }, | ||||
|     {  "id": "issue1169", | ||||
|       "file": "pdfs/issue1169.pdf", | ||||
|       "md5": "3df3ed21fd43ac7fdb21e2015c8a7809", | ||||
|       "rounds": 1, | ||||
|       "link": true, | ||||
|       "type": "eq" | ||||
|     }, | ||||
|     {  "id": "zerowidthline", | ||||
|       "file": "pdfs/zerowidthline.pdf", | ||||
|       "md5": "295d26e61a85635433f8e4b768953f60", | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user