* fonts and their acronyms.
*/
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_Bold': 'Helvetica-Bold',
'Arial_BoldItalic': 'Helvetica-BoldOblique',
this.bold = (fontName.indexOf('Bold') != -1);
this.italic = (fontName.indexOf('Oblique') != -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.loading = false;
return;
}
var descriptor = xref.fetch(fd);
- var fontName = fontDict.get('Name');
- if (!fontName)
- fontName = xref.fetchIfRef(descriptor.get('FontName'));
+ var fontName = xref.fetchIfRef(descriptor.get('FontName'));
assertWellFormed(IsName(fontName), 'invalid font name');
fontName = fontName.name.replace(/[\+,\-]/g, '_');
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 rule = italic + ' ' + bold + ' ' + size + 'px "' + name + '"';
this.ctx.font = rule;
this.moveText(0, this.current.leading);
},
showText: function(text) {
- // TODO: apply charSpacing, wordSpacing, textHScale
-
var ctx = this.ctx;
var current = this.current;
ctx.translate(current.x, -1 * current.y);
var scaleFactorX = 1, scaleFactorY = 1;
- var font = this.current.font;
+ var font = current.font;
if (font) {
- if (this.current.fontSize <= kRasterizerMin) {
+ if (current.fontSize <= kRasterizerMin) {
scaleFactorX = scaleFactorY = kScalePrecision;
ctx.scale(1 / scaleFactorX, 1 / scaleFactorY);
}
var wordSpacing = current.wordSpacing;
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) {
scaleFactorX *= textHScale;
ctx.scale(1 / textHScale, 1);