Fix seac regression.
This commit is contained in:
		
							parent
							
								
									c88696cf5f
								
							
						
					
					
						commit
						b242826d29
					
				| @ -2471,7 +2471,8 @@ var Font = (function FontClosure() { | ||||
|     } | ||||
|     return { | ||||
|       toFontChar: toFontChar, | ||||
|       charCodeToGlyphId: newMap | ||||
|       charCodeToGlyphId: newMap, | ||||
|       nextAvailableFontCharCode: nextAvailableFontCharCode | ||||
|     }; | ||||
|   } | ||||
| 
 | ||||
| @ -4046,18 +4047,25 @@ var Font = (function FontClosure() { | ||||
|       this.toFontChar = newMapping.toFontChar; | ||||
|       var numGlyphs = font.numGlyphs; | ||||
| 
 | ||||
|       function getCharCode(charCodeToGlyphId, glyphId, addMap) { | ||||
|         for (var charCode in charCodeToGlyphId) { | ||||
|           if (glyphId === charCodeToGlyphId[charCode]) { | ||||
|             return charCode | 0; | ||||
|           } | ||||
|         } | ||||
|         if (addMap) { | ||||
|           newMapping.charCodeToGlyphId[newMapping.nextAvailableFontCharCode] = | ||||
|               glyphId; | ||||
|           return newMapping.nextAvailableFontCharCode++; | ||||
|         } | ||||
|         return null; | ||||
|       } | ||||
| 
 | ||||
|       var seacs = font.seacs; | ||||
|       var charCode; | ||||
|       if (SEAC_ANALYSIS_ENABLED && seacs && seacs.length) { | ||||
|         var matrix = properties.fontMatrix || FONT_IDENTITY_MATRIX; | ||||
|         var charset = font.getCharset(); | ||||
|         var charCodeToGlyphId = mapping; | ||||
|         var toFontChar = newMapping.toFontChar; | ||||
|         var seacMap = Object.create(null); | ||||
|         var glyphIdToCharCode = Object.create(null); | ||||
|         for (charCode in charCodeToGlyphId) { | ||||
|           glyphIdToCharCode[charCodeToGlyphId[charCode]] = charCode | 0; | ||||
|         } | ||||
|         for (var glyphId in seacs) { | ||||
|           glyphId |= 0; | ||||
|           var seac = seacs[glyphId]; | ||||
| @ -4072,10 +4080,23 @@ var Font = (function FontClosure() { | ||||
|             x: seac[0] * matrix[0] + seac[1] * matrix[2] + matrix[4], | ||||
|             y: seac[0] * matrix[1] + seac[1] * matrix[3] + matrix[5] | ||||
|           }; | ||||
|           charCode = glyphIdToCharCode[glyphId]; | ||||
| 
 | ||||
|           var charCode = getCharCode(mapping, glyphId); | ||||
|           if (charCode === null) { | ||||
|             // There's no point in mapping it if the char code was never mapped
 | ||||
|             // to begin with.
 | ||||
|             continue; | ||||
|           } | ||||
|           // Find a fontCharCode that maps to the base and accent glyphs. If one
 | ||||
|           // doesn't exists, create it.
 | ||||
|           var charCodeToGlyphId = newMapping.charCodeToGlyphId; | ||||
|           var baseFontCharCode = getCharCode(charCodeToGlyphId, baseGlyphId, | ||||
|                                              true); | ||||
|           var accentFontCharCode = getCharCode(charCodeToGlyphId, accentGlyphId, | ||||
|                                                true); | ||||
|           seacMap[charCode] = { | ||||
|             baseFontCharCode: toFontChar[glyphIdToCharCode[baseGlyphId]], | ||||
|             accentFontCharCode: toFontChar[glyphIdToCharCode[accentGlyphId]], | ||||
|             baseFontCharCode: baseFontCharCode, | ||||
|             accentFontCharCode: accentFontCharCode, | ||||
|             accentOffset: accentOffset | ||||
|           }; | ||||
|         } | ||||
|  | ||||
							
								
								
									
										1
									
								
								test/pdfs/.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								test/pdfs/.gitignore
									
									
									
									
										vendored
									
									
								
							| @ -71,3 +71,4 @@ | ||||
| !bug859204.pdf | ||||
| !issue4246.pdf | ||||
| !issue4461.pdf | ||||
| !issue4573.pdf | ||||
|  | ||||
							
								
								
									
										
											BIN
										
									
								
								test/pdfs/issue4573.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								test/pdfs/issue4573.pdf
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| @ -665,6 +665,16 @@ | ||||
|       "rounds": 1, | ||||
|       "type": "eq" | ||||
|     }, | ||||
|     {  "id": "issue4573", | ||||
|        "file": "pdfs/issue4573.pdf", | ||||
|        "md5": "34b0c4fdee19e57033275b766c5f57a3", | ||||
|        "rounds": 1, | ||||
|        "link": false, | ||||
|        "firstPage": 1, | ||||
|        "lastPage": 1, | ||||
|        "type": "eq", | ||||
|        "about": "Seac with differences array that messes up mapping." | ||||
|     }, | ||||
|     {  "id": "ocs", | ||||
|       "file": "pdfs/ocs.pdf", | ||||
|       "md5": "2ade57e954ae7632749cf328daeaa7a8", | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user