diff --git a/src/core/title.js b/src/core/title.js index 15ef44b683..d94043e73a 100644 --- a/src/core/title.js +++ b/src/core/title.js @@ -60,8 +60,12 @@ function setDocumentTitle(conf, h1Elem) { if (!h1Elem.isConnected) { h1Elem.textContent = document.title || `${l10n.default_title}`; } - - let documentTitle = norm(h1Elem.textContent); + // We replace ":
" with ":", and "
" with "-", as appropriate. + const tempElem = document.createElement("h1"); + tempElem.innerHTML = h1Elem.innerHTML + .replace(/:
/g, ": ") + .replace(/
/g, " - "); + let documentTitle = norm(tempElem.textContent); if (conf.isPreview && conf.prNumber) { const prUrl = conf.prUrl || `${conf.github.repoURL}pull/${conf.prNumber}`; diff --git a/tests/spec/w3c/headers-spec.js b/tests/spec/w3c/headers-spec.js index fafd151eea..c305438802 100644 --- a/tests/spec/w3c/headers-spec.js +++ b/tests/spec/w3c/headers-spec.js @@ -722,6 +722,18 @@ describe("W3C — Headers", () => { expect(h1).toBeTruthy(); expect(h1.textContent.trim()).toBe("override!!!"); }); + + it("handles special case of localized spec title by doing replacement of
elements", async () => { + const body = ` + hi +

Requirements for Chinese Text:
Layout
中文排版需求

+ ${makeDefaultBody()}`; + const ops = makeStandardOps({}, body); + const doc = await makeRSDoc(ops); + expect(doc.title).toBe( + "Requirements for Chinese Text: Layout - 中文排版需求" + ); + }); }); describe("precedence rules for h1#title is present and is absent", () => {