1
0
Fork 0
mirror of https://github.com/mozilla/pdf.js.git synced 2025-04-19 22:58:07 +02:00

Simplify the compileType3Glyph function to just return the Path2D objects

Originally this function would "manually" invoke the rendering commands for Type3-glyphs, however that was changed some time ago:
 - Initial `Path2D` support was added in PR 14858, but the old code kept for Node.js compatibility.
 - Since PR 15951 we've been using a `Path2D` polyfill in Node.js environments.

Hence, after the previous commit, we can further simplify this function by *directly* returning/using the `Path2D` object when rendering Type3-glyphs; see also https://github.com/mozilla/pdf.js/pull/19731#discussion_r2018712695
While this won't improve performance significantly, when compared to the introduction of `Path2D`, it definately cannot hurt.
This commit is contained in:
Jonas Jenwald 2025-03-28 15:02:16 +01:00
parent 852b7e407a
commit f577271908
3 changed files with 15 additions and 16 deletions

View file

@ -308,13 +308,13 @@ function compileType3Glyph(imgData) {
]);
const width1 = width + 1;
let points = new Uint8Array(width1 * (height + 1));
const points = new Uint8Array(width1 * (height + 1));
let i, j, j0;
// decodes bit-packed mask data
const lineSize = (width + 7) & ~7;
let data = new Uint8Array(lineSize * height),
pos = 0;
const data = new Uint8Array(lineSize * height);
let pos = 0;
for (const elem of imgData.data) {
let mask = 128;
while (mask > 0) {
@ -456,18 +456,7 @@ function compileType3Glyph(imgData) {
--i;
}
// Immediately release the, potentially large, `Uint8Array`s after parsing.
data = null;
points = null;
const drawOutline = function (ctx) {
ctx.save();
ctx.fill(path);
ctx.beginPath();
ctx.restore();
};
return drawOutline;
return path;
}
class CanvasExtraState {
@ -2726,7 +2715,7 @@ class CanvasGraphics {
}
if (glyph.compiled) {
glyph.compiled(ctx);
ctx.fill(glyph.compiled);
return;
}
}