typograph-editor-documentation
    Preparing search index...

    Release Notes - Version 1.0.0-20261016

    A manifest passed through host now reaches every document you open, in the editor and the viewer, so a theme's FONT_n fonts apply, and POD settings gives a document's font families those handles. And text in a font the document does not have is no longer set in its paragraph style's font without a word: the document check now reports the missing font.

    • Font handles in POD settings. File ▸ POD settings is for hosts that drive documents from their own theme manifests. It has a new Font handles section, beside Document colours, with one row for each font family your document's text uses. Give a family a handle, such as FONT_1, and every piece of text in that family carries it: frames, paragraphs, table cells and styles, and the family's entries in the manifest. A theme manifest that binds FONT_1 to a family of its own then sets all that text in its family. Each row's popup offers FONT_1 … FONT_10, leaving out the handles other families already have, and you can type another handle. Two families cannot share a handle; swapping two is fine. The dialog's lists now scroll, so it keeps its size however many colours and fonts a document has.
      • The "replace with…" column for fonts is gone from POD settings. It changed the typeface for every customer alike, which is what the handles exist to avoid. A host can still call typograph.substitute_font(). See Theme fonts: FONT_n handles.
    • The document check warns about text that would be left out of the print. When the PDF has no font file for a family and style the text uses, it leaves that text out without failing the job. This typically happens after a theme rebinds FONT_n, while the document still holds a layout in the old family. typograph.validate() now reports it beforehand as font_not_printed, naming the family, the style and the frames.
    • Undo after replacing a font or a colour in POD settings restores everything. It used to leave text runs, table cells and styles changed. Replacing a font also reaches text in tables now; it used to skip it.

    • The host's manifest is applied to every document you open. A manifest passed through host.manifest or host.manifest_data — for example a theme manifest that binds FONT_1, FONT_2 … to a customer's font families — used to be applied only when the Images panel loaded a document without images of its own. A converted template always has images, so its FONT_n text kept its placeholder font; in the viewer the manifest was never applied at all. It is now applied after every document opens, in both, on top of the document's own manifest. A pull provider is called once per document opened. See Templates, images, the manifest and clips.

    • A missing font is reported instead of silently swapped. Text whose font was missing — typically a converted InDesign document whose package did not include every font — was set in its paragraph style's font instead (for example Minion Pro where the document asked for Barlow Semi Condensed), and nothing said so. It now asks for its own font: where that font is installed on your computer it shows correctly, otherwise the browser's fallback stands in. Either way typograph.validate() now reports it as font_missing, naming the font and style, so it can be supplied before printing.

      • Converted templates follow: a package missing a font is no longer laid out in the wrong font; the conversion comes back without text layout and its message names the font (with the converter service's own update).
    • TYP-909 (editor-ui fix/TYP-909-host-manifest-on-open): apply_host_manifest() (new hostmanifest.ts) runs on typograph_document_opened in editorapp.ts and viewer.ts, after canvas's OpenDocument() has replaced the manifest with the document's own; set_manifest_data() merges, loads the fonts, binds their uuids and re-resolves the text. The Images panel uses the same function; php/get_manifest.php is still tried only there. Part of epic TYP-908.

    • TYP-907 (canvas fix/TYP-907-missing-font-family): story_style_to_font() let a font uuid INHERITED from the paragraph style chain (the root $ID/[No paragraph style] carries one) outrank a family the run states itself. A uuid now outranks a family only when the run or its character style states it. A run whose own family is not loaded is recorded as not_loaded (FontManager.note_missing_family()), not for a frame's cached default font (a converted frame's "Arial" placeholder sets no text) nor canvas's default. reset_to_default_fonts() clears the font issues on every document open: on canvas-service's shared page they carried over. Browser suite run_font_uuid_tests(): 81 passed. A missing family is noted once per document, not per run.

    • TYP-912 (editor-ui feat/TYP-912-font-handles): the Font handles section of PodSettingsDialog; the rules live in the new fonthandles.ts. These are what a handle may look like, which handles to suggest, and the ORDER of the assign_font_handle() calls. canvas refuses a handle another family still carries, so a handle passed on goes after the family giving it up, and a swap goes through a temporary handle. Vitest fonthandles.test.ts. Part of epic TYP-908.

    • TYP-911 (canvas feat/TYP-911-font-handles): typograph.assign_font_handle(family, handle) and typograph.font_handles(). Along the way, substitute_font() now reaches table cells. Every substitution also used to write into property bags the undo snapshot shares (run overrides, styles and manifest entries, which the snapshot keeps by slot), so undo left them changed; they are now replaced in their slot. Browser suite run_font_handles_tests().

    • TYP-913 (canvas feat/TYP-913-font-not-printed): the font_not_printed check, an error. It covers the manifest's fonts plus the document's active font_data files, .ttf only, compared the way TcPdfGenerator::getFontNameByFamily() compares (TYP-910). Browser suite run_font_not_printed_tests().

    • Canvas pin 4313af8: TYP-913 (PR #188), on top of TYP-911 (PR #187) and TYP-907 (PR #186, 1291bf8).