Do not rasterize below 14px

This commit is contained in:
Vivien Nicolas 2011-07-19 14:22:51 +02:00
parent 9b45870d9a
commit c6c72291d9
2 changed files with 10 additions and 2 deletions

View File

@ -22,7 +22,7 @@ var kMaxWaitForFontFace = 1000;
*/ */
var Fonts = (function Fonts() { var Fonts = (function Fonts() {
var kScalePrecision = 40; var kScalePrecision = 50;
var fonts = []; var fonts = [];
if (!isWorker) { if (!isWorker) {
@ -404,6 +404,7 @@ var Font = (function Font() {
// Repair the TrueType file if it is can be damaged in the point of // Repair the TrueType file if it is can be damaged in the point of
// view of the sanitizer // view of the sanitizer
data = this.checkAndRepair(name, file, properties); data = this.checkAndRepair(name, file, properties);
writeToFile(data, "/tmp/file." + this.name + ".ttf");
break; break;
default: default:

9
pdf.js
View File

@ -3898,6 +3898,9 @@ function ScratchCanvas(width, height) {
} }
var CanvasGraphics = (function() { var CanvasGraphics = (function() {
var kScalePrecision = 50;
var kRasterizerMin = 14;
function constructor(canvasCtx, imageCanvas) { function constructor(canvasCtx, imageCanvas) {
this.ctx = canvasCtx; this.ctx = canvasCtx;
this.current = new CanvasExtraState(); this.current = new CanvasExtraState();
@ -4113,8 +4116,10 @@ var CanvasGraphics = (function() {
if (this.ctx.$setFont) { if (this.ctx.$setFont) {
this.ctx.$setFont(fontName, size); this.ctx.$setFont(fontName, size);
} else { } else {
this.ctx.font = size + 'px "' + fontName + '"';
Fonts.setActive(fontName, fontObj, size); Fonts.setActive(fontName, fontObj, size);
size = (size <= kRasterizerMin) ? size * kScalePrecision : size;
this.ctx.font = size + 'px "' + fontName + '"';
} }
}, },
setTextRenderingMode: function(mode) { setTextRenderingMode: function(mode) {
@ -4162,6 +4167,8 @@ var CanvasGraphics = (function() {
ctx.translate(current.x, -1 * current.y); ctx.translate(current.x, -1 * current.y);
var font = this.current.font; var font = this.current.font;
if (font) { if (font) {
if (this.current.fontSize < kRasterizerMin)
ctx.transform(1 / kScalePrecision, 0, 0, 1 / kScalePrecision, 0, 0);
ctx.transform.apply(ctx, font.textMatrix); ctx.transform.apply(ctx, font.textMatrix);
text = font.charsToUnicode(text); text = font.charsToUnicode(text);
} }