Merge pull request #420 from vingtetun/master
Workaround for issue #319
This commit is contained in:
commit
ae2297aa99
14
fonts.js
14
fonts.js
@ -14,6 +14,14 @@ var kMaxWaitForFontFace = 1000;
|
|||||||
* fonts and their acronyms.
|
* fonts and their acronyms.
|
||||||
*/
|
*/
|
||||||
var stdFontMap = {
|
var stdFontMap = {
|
||||||
|
'ArialNarrow': 'Helvetica',
|
||||||
|
'ArialNarrow_Bold': 'Helvetica-Bold',
|
||||||
|
'ArialNarrow_BoldItalic': 'Helvetica-BoldOblique',
|
||||||
|
'ArialNarrow_Italic': 'Helvetica-Oblique',
|
||||||
|
'ArialBlack': 'Helvetica',
|
||||||
|
'ArialBlack_Bold': 'Helvetica-Bold',
|
||||||
|
'ArialBlack_BoldItalic': 'Helvetica-BoldOblique',
|
||||||
|
'ArialBlack_Italic': 'Helvetica-Oblique',
|
||||||
'Arial': 'Helvetica',
|
'Arial': 'Helvetica',
|
||||||
'Arial_Bold': 'Helvetica-Bold',
|
'Arial_Bold': 'Helvetica-Bold',
|
||||||
'Arial_BoldItalic': 'Helvetica-BoldOblique',
|
'Arial_BoldItalic': 'Helvetica-BoldOblique',
|
||||||
@ -404,6 +412,12 @@ var Font = (function Font() {
|
|||||||
this.bold = (fontName.indexOf('Bold') != -1);
|
this.bold = (fontName.indexOf('Bold') != -1);
|
||||||
this.italic = (fontName.indexOf('Oblique') != -1) ||
|
this.italic = (fontName.indexOf('Oblique') != -1) ||
|
||||||
(fontName.indexOf('Italic') != -1);
|
(fontName.indexOf('Italic') != -1);
|
||||||
|
|
||||||
|
// Use 'name' instead of 'fontName' here because the original
|
||||||
|
// name ArialNarrow for example will be replaced by Helvetica.
|
||||||
|
this.narrow = (name.indexOf("Narrow") != -1)
|
||||||
|
this.black = (name.indexOf("Black") != -1)
|
||||||
|
|
||||||
this.loadedName = fontName.split('-')[0];
|
this.loadedName = fontName.split('-')[0];
|
||||||
this.loading = false;
|
this.loading = false;
|
||||||
return;
|
return;
|
||||||
|
21
pdf.js
21
pdf.js
@ -4417,9 +4417,7 @@ var PartialEvaluator = (function() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var descriptor = xref.fetch(fd);
|
var descriptor = xref.fetch(fd);
|
||||||
var fontName = fontDict.get('Name');
|
var fontName = xref.fetchIfRef(descriptor.get('FontName'));
|
||||||
if (!fontName)
|
|
||||||
fontName = xref.fetchIfRef(descriptor.get('FontName'));
|
|
||||||
assertWellFormed(IsName(fontName), 'invalid font name');
|
assertWellFormed(IsName(fontName), 'invalid font name');
|
||||||
fontName = fontName.name.replace(/[\+,\-]/g, '_');
|
fontName = fontName.name.replace(/[\+,\-]/g, '_');
|
||||||
|
|
||||||
@ -4805,7 +4803,9 @@ var CanvasGraphics = (function() {
|
|||||||
|
|
||||||
size = (size <= kRasterizerMin) ? size * kScalePrecision : size;
|
size = (size <= kRasterizerMin) ? size * kScalePrecision : size;
|
||||||
|
|
||||||
var bold = fontObj.bold ? 'bold' : 'normal';
|
var bold = fontObj.black ? (fontObj.bold ? 'bolder' : 'bold')
|
||||||
|
: (fontObj.bold ? 'bold' : 'normal');
|
||||||
|
|
||||||
var italic = fontObj.italic ? 'italic' : 'normal';
|
var italic = fontObj.italic ? 'italic' : 'normal';
|
||||||
var rule = italic + ' ' + bold + ' ' + size + 'px "' + name + '"';
|
var rule = italic + ' ' + bold + ' ' + size + 'px "' + name + '"';
|
||||||
this.ctx.font = rule;
|
this.ctx.font = rule;
|
||||||
@ -4841,8 +4841,6 @@ var CanvasGraphics = (function() {
|
|||||||
this.moveText(0, this.current.leading);
|
this.moveText(0, this.current.leading);
|
||||||
},
|
},
|
||||||
showText: function(text) {
|
showText: function(text) {
|
||||||
// TODO: apply charSpacing, wordSpacing, textHScale
|
|
||||||
|
|
||||||
var ctx = this.ctx;
|
var ctx = this.ctx;
|
||||||
var current = this.current;
|
var current = this.current;
|
||||||
|
|
||||||
@ -4853,9 +4851,9 @@ var CanvasGraphics = (function() {
|
|||||||
ctx.translate(current.x, -1 * current.y);
|
ctx.translate(current.x, -1 * current.y);
|
||||||
|
|
||||||
var scaleFactorX = 1, scaleFactorY = 1;
|
var scaleFactorX = 1, scaleFactorY = 1;
|
||||||
var font = this.current.font;
|
var font = current.font;
|
||||||
if (font) {
|
if (font) {
|
||||||
if (this.current.fontSize <= kRasterizerMin) {
|
if (current.fontSize <= kRasterizerMin) {
|
||||||
scaleFactorX = scaleFactorY = kScalePrecision;
|
scaleFactorX = scaleFactorY = kScalePrecision;
|
||||||
ctx.scale(1 / scaleFactorX, 1 / scaleFactorY);
|
ctx.scale(1 / scaleFactorX, 1 / scaleFactorY);
|
||||||
}
|
}
|
||||||
@ -4867,6 +4865,13 @@ var CanvasGraphics = (function() {
|
|||||||
var wordSpacing = current.wordSpacing;
|
var wordSpacing = current.wordSpacing;
|
||||||
var textHScale = current.textHScale;
|
var textHScale = current.textHScale;
|
||||||
|
|
||||||
|
// This is a poor simulation for Arial Narrow while font-stretch
|
||||||
|
// is not implemented (bug 3512)
|
||||||
|
if (current.font.narrow) {
|
||||||
|
textHScale += 0.2;
|
||||||
|
charSpacing -= (0.09 * current.fontSize);
|
||||||
|
}
|
||||||
|
|
||||||
if (charSpacing != 0 || wordSpacing != 0 || textHScale != 1) {
|
if (charSpacing != 0 || wordSpacing != 0 || textHScale != 1) {
|
||||||
scaleFactorX *= textHScale;
|
scaleFactorX *= textHScale;
|
||||||
ctx.scale(1 / textHScale, 1);
|
ctx.scale(1 / textHScale, 1);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user