Supported Fonts in Designer

Posted by: sdorner on 23 April 2026, 1:56 pm EST

  • Posted 23 April 2026, 1:56 pm EST

    On a Windows 11 PC in the Chrome browser.

    I need help understanding how Fonts are supported. If I paste from Excel a cell with a Font of Webdings, it pastes properly with the Font set to Webdings (even though Webdings is not on the Font Drop Down). I assume this works as the PC has that font installed (in Windows).

    If I paste Aptos Black from Excel it does not work, it appears to be just Aptos font.

    I then tried Wandohope (a font that has a Cloud next to it in Excel) and it did not work and seems to default to some type of default times new roman. The default font for the spreadsheet is Calibri 11, so why did it not default to that? What font is it actually defaulting to?

    Is there documentation that describes how fonts work in SpreadJS?

  • Posted 24 April 2026, 5:28 am EST

    Hi,

    Thank you for the detailed description of what you’re seeing.

    The Core Principle: SpreadJS Delegates Font Rendering to the Browser

    SpreadJS uses a declarative font system — it assigns the font name to the cell and the browser’s own rendering policy determines whether and how that font is displayed. SpreadJS does not bundle, manage, or validate font availability. This single principle explains all three of your cases.

    Case 1: Webdings — Why It Works

    When you paste a cell with Webdings from Excel, SpreadJS records the font name and passes it directly to Chrome. Since Webdings ships pre-installed with Windows, Chrome resolves and renders it without issue. The fact that it doesn’t appear in the font dropdown is irrelevant — any font the browser can find will render correctly, regardless of whether it’s listed in the UI. Your assumption was exactly right.

    Case 2: Aptos Black Appears as Regular Aptos

    When pasting from Excel, SpreadJS correctly captures and passes the “Aptos Black” font name to Chrome. However, since the Aptos Black font file is not installed on the system, Chrome cannot find it and silently falls back to whichever Aptos variant it can resolve — typically the regular weight. You can register the Aptos-Black.ttf file as a web font in your application before SpreadJS initializes, and pasted cells will render exactly as expected.

    You can see this working in the following sample, which loads Aptos Black and correctly applies it on paste from Excel:

    Aptos Black Font Sample: https://jscodemine.mescius.io/share/4rfilplkfkmrufo9tieg-w/?IsEmbed=false&Theme=Unset&PreviewDirection=0&IsEditorShow=true&IsExplorerShow=true&IsPreviewShow=true&IsConsoleShow=true&IsRunBTNShow=false&IsResetBTNShow=false&IsOpenInCodemineBTNShow=false&PanelWidth=20&PanelWidth=50&PanelWidth=30&defaultOpen={"OpenedFileName"%3A["%2Findex.html"%2C"%2Fpackage.json"%2C"%2Fsrc%2Fapp.js"%2C"%2FFonts%2FAptos-Black.ttf"]%2C"ActiveFile"%3A"%2Findex.html"}

    Case 3: Wandohope Falls Back to Times New Roman

    Two separate reasons explain this:

    Aptos variants: Unlike Calibri, which ships with Windows as a system font, Aptos is delivered exclusively through the Microsoft 365 Office application and is never installed into the OS itself. When Chrome encounters an Aptos font name it cannot locate, it falls back to the browser’s default serif font — typically Times New Roman.

    Wandohope and other cloud fonts: Any font displaying a cloud icon in Excel is a Microsoft 365 cloud-streamed font. Excel downloads and renders these on demand from Microsoft’s servers, but they are never installed locally on your machine. Chrome has no way to access them, so the same browser fallback applies.

    Why Times New Roman Instead of Your Calibri Default?

    Your spreadsheet’s default font (Calibri 11) is a SpreadJS application-level setting that applies only to cells with no explicit font assigned. Pasted cells from Excel already carry an explicit font assignment (Aptos, Wandohope, etc.), so SpreadJS correctly stores and applies those names. When the browser cannot resolve them, it applies its own internal fallback — the generic serif font, which in Chrome is Times New Roman. SpreadJS’s default font setting has no influence over this browser-level fallback chain.

    The Workaround: Register Missing Fonts as Web Fonts

    The solution is to host the required .ttf files and register them using @font-face in your application so the browser can find them. The sample linked above in Case 2 demonstrates the complete approach for Aptos Black and can be adapted for any other font using the same pattern.

    Kind regards,

    Priyam

Need extra support?

Upgrade your support plan and get personal unlimited phone support with our customer engagement team

Learn More

Forum Channels