Merge pull request #322 from notmasteryet/basefont

BaseFont and misc fonts fixes
This commit is contained in:
Andreas Gal 2011-08-14 09:19:02 -07:00
commit 52ac2122b4
4 changed files with 30 additions and 8 deletions

View File

@ -7,7 +7,7 @@ var isWorker = (typeof window == 'undefined');
/** /**
* Maximum file size of the font. * Maximum file size of the font.
*/ */
var kMaxFontFileSize = 200000; var kMaxFontFileSize = 300000;
/** /**
* Maximum time to wait for a font to be loaded by font-face rules. * Maximum time to wait for a font to be loaded by font-face rules.
@ -83,7 +83,7 @@ var FontMeasure = (function FontMeasure() {
var bold = font.bold ? 'bold' : 'normal'; var bold = font.bold ? 'bold' : 'normal';
var italic = font.italic ? 'italic' : 'normal'; var italic = font.italic ? 'italic' : 'normal';
size *= kScalePrecision; size *= kScalePrecision;
var rule = bold + ' ' + italic + ' ' + size + 'px "' + name + '"'; var rule = italic + ' ' + bold + ' ' + size + 'px "' + name + '"';
ctx.font = rule; ctx.font = rule;
}, },
measureText: function fonts_measureText(text) { measureText: function fonts_measureText(text) {
@ -395,17 +395,23 @@ var Font = (function Font() {
// If the font is to be ignored, register it like an already loaded font // If the font is to be ignored, register it like an already loaded font
// to avoid the cost of waiting for it be be loaded by the platform. // to avoid the cost of waiting for it be be loaded by the platform.
if (properties.ignore) { if (properties.ignore) {
this.loadedName = 'Arial'; this.loadedName = 'sans-serif';
this.loading = false; this.loading = false;
return; return;
} }
if (!file) { if (!file) {
var fontName = stdFontMap[name]; // The file data is not specified. Trying to mingle the font name
// to be used with the canvas.font.
var fontName = stdFontMap[name] || name.replace('_', '-');
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);
this.loadedName = fontName.split('-')[0]; this.loadedName = fontName.split('-')[0];
this.loading = false; this.loading = false;
this.charsToUnicode = function(s) {
return s;
};
return; return;
} }

15
pdf.js
View File

@ -3758,8 +3758,17 @@ var PartialEvaluator = (function() {
fd = fontDict.get('FontDescriptor'); fd = fontDict.get('FontDescriptor');
} }
if (!fd) if (!fd) {
return null; var baseFontName = fontDict.get('BaseFont');
if (!IsName(baseFontName))
return null;
// Using base font name as a font name.
return {
name: baseFontName.name.replace(/[\+,\-]/g, '_'),
fontDict: fontDict,
properties: {}
};
}
var descriptor = xref.fetch(fd); var descriptor = xref.fetch(fd);
@ -4298,7 +4307,7 @@ var CanvasGraphics = (function() {
var bold = fontObj.bold ? 'bold' : 'normal'; var bold = fontObj.bold ? 'bold' : 'normal';
var italic = fontObj.italic ? 'italic' : 'normal'; var italic = fontObj.italic ? 'italic' : 'normal';
var rule = bold + ' ' + italic + ' ' + size + 'px "' + name + '"'; var rule = italic + ' ' + bold + ' ' + size + 'px "' + name + '"';
this.ctx.font = rule; this.ctx.font = rule;
} }
}, },

View File

@ -0,0 +1 @@
http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf

View File

@ -80,5 +80,11 @@
"file": "pdfs/rotation.pdf", "file": "pdfs/rotation.pdf",
"rounds": 1, "rounds": 1,
"type": "load" "type": "load"
},
{ "id": "ecma262-pdf",
"file": "pdfs/ecma262.pdf",
"link": true,
"rounds": 1,
"type": "load"
} }
] ]