mirror of
https://github.com/mozilla/pdf.js.git
synced 2025-04-26 10:08:06 +02:00
XFA - Support non-embedded fonts without a Widths entry
- some pdf use some fonts which are not embedded or they don't have any width array or don't have any css info (e.g. for standard fonts or Arial). - so add widths arrays for Liberation fonts in order to compute the ones for other fonts in using scale factors array.
This commit is contained in:
parent
ff3a5382ee
commit
70bb672dcd
11 changed files with 464 additions and 59 deletions
|
@ -22,6 +22,10 @@ import { HelveticaBoldFactors } from "./helvetica_bold.js";
|
|||
import { HelveticaBoldItalicFactors } from "./helvetica_bold_italic.js";
|
||||
import { HelveticaItalicFactors } from "./helvetica_italic.js";
|
||||
import { HelveticaRegularFactors } from "./helvetica_regular.js";
|
||||
import { LiberationSansBoldItalicWidths } from "./liberationsans_bold_italic_widths.js";
|
||||
import { LiberationSansBoldWidths } from "./liberationsans_bold_widths.js";
|
||||
import { LiberationSansItalicWidths } from "./liberationsans_italic_widths.js";
|
||||
import { LiberationSansRegularWidths } from "./liberationsans_regular_widths.js";
|
||||
import { MyriadProBoldFactors } from "./myriadpro_bold.js";
|
||||
import { MyriadProBoldItalicFactors } from "./myriadpro_bold_italic.js";
|
||||
import { MyriadProItalicFactors } from "./myriadpro_italic.js";
|
||||
|
@ -36,78 +40,101 @@ const getXFAFontMap = getLookupTableFactory(function (t) {
|
|||
t["MyriadPro-Regular"] = {
|
||||
name: "LiberationSans-Regular",
|
||||
factors: MyriadProRegularFactors,
|
||||
baseWidths: LiberationSansRegularWidths,
|
||||
};
|
||||
t["MyriadPro-Bold"] = {
|
||||
name: "LiberationSans-Bold",
|
||||
factors: MyriadProBoldFactors,
|
||||
baseWidths: LiberationSansBoldWidths,
|
||||
};
|
||||
t["MyriadPro-It"] = {
|
||||
name: "LiberationSans-Italic",
|
||||
factors: MyriadProItalicFactors,
|
||||
baseWidths: LiberationSansItalicWidths,
|
||||
};
|
||||
t["MyriadPro-BoldIt"] = {
|
||||
name: "LiberationSans-BoldItalic",
|
||||
factors: MyriadProBoldItalicFactors,
|
||||
baseWidths: LiberationSansBoldItalicWidths,
|
||||
};
|
||||
t.ArialMT = {
|
||||
name: "LiberationSans-Regular",
|
||||
};
|
||||
t["Arial-BoldMT"] = {
|
||||
t.ArialMT =
|
||||
t.Arial =
|
||||
t["Arial-Regular"] =
|
||||
{
|
||||
name: "LiberationSans-Regular",
|
||||
baseWidths: LiberationSansRegularWidths,
|
||||
};
|
||||
t["Arial-BoldMT"] = t["Arial-Bold"] = {
|
||||
name: "LiberationSans-Bold",
|
||||
baseWidths: LiberationSansBoldWidths,
|
||||
};
|
||||
t["Arial-ItalicMT"] = {
|
||||
t["Arial-ItalicMT"] = t["Arial-Italic"] = {
|
||||
name: "LiberationSans-Italic",
|
||||
baseWidths: LiberationSansItalicWidths,
|
||||
};
|
||||
t["Arial-BoldItalicMT"] = {
|
||||
t["Arial-BoldItalicMT"] = t["Arial-BoldItalic"] = {
|
||||
name: "LiberationSans-BoldItalic",
|
||||
baseWidths: LiberationSansBoldItalicWidths,
|
||||
};
|
||||
t["Calibri-Regular"] = {
|
||||
name: "LiberationSans-Regular",
|
||||
factors: CalibriRegularFactors,
|
||||
baseWidths: LiberationSansRegularWidths,
|
||||
};
|
||||
t["Calibri-Bold"] = {
|
||||
name: "LiberationSans-Bold",
|
||||
factors: CalibriBoldFactors,
|
||||
baseWidths: LiberationSansBoldWidths,
|
||||
};
|
||||
t["Calibri-Italic"] = {
|
||||
name: "LiberationSans-Italic",
|
||||
factors: CalibriItalicFactors,
|
||||
baseWidths: LiberationSansItalicWidths,
|
||||
};
|
||||
t["Calibri-BoldItalic"] = {
|
||||
name: "LiberationSans-BoldItalic",
|
||||
factors: CalibriBoldItalicFactors,
|
||||
baseWidths: LiberationSansBoldItalicWidths,
|
||||
};
|
||||
t["Segoeui-Regular"] = {
|
||||
name: "LiberationSans-Regular",
|
||||
factors: SegoeuiRegularFactors,
|
||||
baseWidths: LiberationSansRegularWidths,
|
||||
};
|
||||
t["Segoeui-Bold"] = {
|
||||
name: "LiberationSans-Bold",
|
||||
factors: SegoeuiBoldFactors,
|
||||
baseWidths: LiberationSansBoldWidths,
|
||||
};
|
||||
t["Segoeui-Italic"] = {
|
||||
name: "LiberationSans-Italic",
|
||||
factors: SegoeuiItalicFactors,
|
||||
baseWidths: LiberationSansItalicWidths,
|
||||
};
|
||||
t["Segoeui-BoldItalic"] = {
|
||||
name: "LiberationSans-BoldItalic",
|
||||
factors: SegoeuiBoldItalicFactors,
|
||||
baseWidths: LiberationSansBoldItalicWidths,
|
||||
};
|
||||
t["Helvetica-Regular"] = {
|
||||
name: "LiberationSans-Regular",
|
||||
factors: HelveticaRegularFactors,
|
||||
baseWidths: LiberationSansRegularWidths,
|
||||
};
|
||||
t["Helvetica-Bold"] = {
|
||||
name: "LiberationSans-Bold",
|
||||
factors: HelveticaBoldFactors,
|
||||
baseWidths: LiberationSansBoldWidths,
|
||||
};
|
||||
t["Helvetica-Italic"] = {
|
||||
name: "LiberationSans-Italic",
|
||||
factors: HelveticaItalicFactors,
|
||||
baseWidths: LiberationSansItalicWidths,
|
||||
};
|
||||
t["Helvetica-BoldItalic"] = {
|
||||
name: "LiberationSans-BoldItalic",
|
||||
factors: HelveticaBoldItalicFactors,
|
||||
baseWidths: LiberationSansBoldItalicWidths,
|
||||
};
|
||||
});
|
||||
|
||||
|
@ -117,4 +144,17 @@ function getXfaFontName(name) {
|
|||
return fontMap[fontName];
|
||||
}
|
||||
|
||||
export { getXfaFontName };
|
||||
function getXfaFontWidths(name) {
|
||||
const info = getXfaFontName(name);
|
||||
if (!info) {
|
||||
return null;
|
||||
}
|
||||
|
||||
const { baseWidths, factors } = info;
|
||||
if (!factors) {
|
||||
return baseWidths;
|
||||
}
|
||||
return baseWidths.map((w, i) => w * factors[i]);
|
||||
}
|
||||
|
||||
export { getXfaFontName, getXfaFontWidths };
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue