diff --git a/src/display/text_layer.js b/src/display/text_layer.js index 2f72b712ef71f..4bcfde930174c 100644 --- a/src/display/text_layer.js +++ b/src/display/text_layer.js @@ -16,7 +16,13 @@ /** @typedef {import("./display_utils").PageViewport} PageViewport */ /** @typedef {import("./api").TextContent} TextContent */ -import { AbortException, Util, warn } from "../shared/util.js"; +import { + AbortException, + FeatureTest, + shadow, + Util, + warn, +} from "../shared/util.js"; import { setLayerDimensions } from "./display_utils.js"; /** @@ -152,6 +158,24 @@ class TextLayer { } } + static get fontFamilyMap() { + const { isWindows, isFirefox } = FeatureTest.platform; + return shadow( + this, + "fontFamilyMap", + new Map([ + [ + "sans-serif", + `${isWindows && isFirefox ? "Calibri, " : ""}sans-serif`, + ], + [ + "monospace", + `${isWindows && isFirefox ? "Lucida Console, " : ""}monospace`, + ], + ]) + ); + } + /** * Render the textLayer. * @returns {Promise} @@ -300,9 +324,12 @@ class TextLayer { angle += Math.PI / 2; } - const fontFamily = + let fontFamily = (this.#fontInspectorEnabled && style.fontSubstitution) || style.fontFamily; + + // Workaround for bug 1922063. + fontFamily = TextLayer.fontFamilyMap.get(fontFamily) || fontFamily; const fontHeight = Math.hypot(tx[2], tx[3]); const fontAscent = fontHeight * TextLayer.#getAscent(fontFamily, this.#lang); diff --git a/src/shared/util.js b/src/shared/util.js index 19be8031ec8b1..de0abe5796e4a 100644 --- a/src/shared/util.js +++ b/src/shared/util.js @@ -636,9 +636,18 @@ class FeatureTest { ) { return shadow(this, "platform", { isMac: navigator.platform.includes("Mac"), + isWindows: navigator.platform.includes("Win"), + isFirefox: + (typeof PDFJSDev !== "undefined" && PDFJSDev.test("MOZCENTRAL")) || + (typeof navigator?.userAgent === "string" && + navigator.userAgent.includes("Firefox")), }); } - return shadow(this, "platform", { isMac: false }); + return shadow(this, "platform", { + isMac: false, + isWindows: false, + isFirefox: false, + }); } static get isCSSRoundSupported() {