[CIDFontType2] Map characters missing in toUnicode to the private use area (bug 1028735 and issue 4881)
This commit is contained in:
		
							parent
							
								
									c5f4051a75
								
							
						
					
					
						commit
						a7c786775d
					
				@ -2473,6 +2473,7 @@ var Font = (function FontClosure() {
 | 
			
		||||
    var toUnicode = properties.toUnicode;
 | 
			
		||||
    var isSymbolic = !!(properties.flags & FontFlags.Symbolic);
 | 
			
		||||
    var isIdentityUnicode = properties.isIdentityUnicode;
 | 
			
		||||
    var isCidFontType2 = (properties.type === 'CIDFontType2');
 | 
			
		||||
    var newMap = Object.create(null);
 | 
			
		||||
    var toFontChar = [];
 | 
			
		||||
    var usedFontCharCodes = [];
 | 
			
		||||
@ -2483,11 +2484,17 @@ var Font = (function FontClosure() {
 | 
			
		||||
      var fontCharCode = originalCharCode;
 | 
			
		||||
      // First try to map the value to a unicode position if a non identity map
 | 
			
		||||
      // was created.
 | 
			
		||||
      if (!isIdentityUnicode && toUnicode[originalCharCode] !== undefined) {
 | 
			
		||||
        var unicode = toUnicode[fontCharCode];
 | 
			
		||||
        // TODO: Try to map ligatures to the correct spot.
 | 
			
		||||
        if (unicode.length === 1) {
 | 
			
		||||
          fontCharCode = unicode.charCodeAt(0);
 | 
			
		||||
      if (!isIdentityUnicode) {
 | 
			
		||||
        if (toUnicode[originalCharCode] !== undefined) {
 | 
			
		||||
          var unicode = toUnicode[fontCharCode];
 | 
			
		||||
          // TODO: Try to map ligatures to the correct spot.
 | 
			
		||||
          if (unicode.length === 1) {
 | 
			
		||||
            fontCharCode = unicode.charCodeAt(0);
 | 
			
		||||
          }
 | 
			
		||||
        } else if (isCidFontType2) {
 | 
			
		||||
          // For CIDFontType2, move characters not present in toUnicode
 | 
			
		||||
          // to the private use area (fixes bug 1028735 and issue 4881).
 | 
			
		||||
          fontCharCode = nextAvailableFontCharCode;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
      // Try to move control characters, special characters and already mapped
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										1
									
								
								test/pdfs/.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								test/pdfs/.gitignore
									
									
									
									
										vendored
									
									
								
							@ -56,6 +56,7 @@
 | 
			
		||||
!bug903856.pdf
 | 
			
		||||
!bug850854.pdf
 | 
			
		||||
!bug866395.pdf
 | 
			
		||||
!bug1028735.pdf
 | 
			
		||||
!basicapi.pdf
 | 
			
		||||
!mixedfonts.pdf
 | 
			
		||||
!shading_extend.pdf
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								test/pdfs/bug1028735.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								test/pdfs/bug1028735.pdf
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							@ -176,6 +176,15 @@
 | 
			
		||||
       "rounds": 1,
 | 
			
		||||
       "type": "eq"
 | 
			
		||||
    },
 | 
			
		||||
    {  "id": "bug1028735",
 | 
			
		||||
       "file": "pdfs/bug1028735.pdf",
 | 
			
		||||
       "md5": "5d1a2a87d176ff3b24e66af3cb2365be",
 | 
			
		||||
       "rounds": 1,
 | 
			
		||||
       "link": false,
 | 
			
		||||
       "firstPage": 1,
 | 
			
		||||
       "lastPage": 1,
 | 
			
		||||
       "type": "eq"
 | 
			
		||||
    },
 | 
			
		||||
    {  "id": "issue1512",
 | 
			
		||||
       "file": "pdfs/issue1512.pdf",
 | 
			
		||||
       "md5": "41a19fe03d522346ee3baa732403fca4",
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user