Fonts
This article explains how fonts are handled in UI5 Web Components and the options available for customization.
Default Font Loading
During boot, the UI5 Web Components framework automatically loads the necessary fonts to achieve the SAP Fiori design. The fonts are fetched from a CDN (cdn.jsdelivr.net) via network requests.
This default behavior requires no configuration - fonts are loaded automatically when you use UI5 Web Components.
Custom (Manual) Font Loading
There are several reasons why you might need to customize fonts:
- To specify different paths for fonts (e.g., due to restrictions on public internet access)
- To include additional declarations within
@font-face(e.g.,font-display) - To download additional fonts, such as
72-Light - To prevent the default fonts from being fetched
1. Disable Default Fonts
You can disable the default fonts by either creating a style tag with data-ui5-font-face attribute, or via the defaultFontLoading configuration option.
- via
<style data-ui5-font-face>
The framework checks for the presense of this element with this specific attribute and skips the font loading when present.
<style type="text/css" data-ui5-font-face>
@font-face {
font-family: "72";
font-style: normal;
font-weight: 200;
font-display: swap;
src: local("72-Light"),
url({path_to_your_font});
}
</style>
- via
defaultFontLoadingin your HTML
<script data-ui5-config type="application/json">
{
"defaultFontLoading": false
}
</script>
- via
setDefaultFontLoadingJS API
import { setDefaultFontLoading } from "@ui5/webcomponents-base/dist/config/Fonts.js";
setDefaultFontLoading(false);
When the UI5 Web Components framework initializes, it will refrain from fetching default fonts and instead use the ones you have provided.
2. Provide Custom Font Definitions
After disabling the default fonts, specify the custom fonts you intend to use.
For example, to use the 72-Light font with a custom font-display setting:
<style type="text/css" data-ui5-font-face>
@font-face {
font-family: "72";
font-style: normal;
font-weight: 200;
font-display: swap;
src: local("72-Light"),
url(https://sdk.openui5.org/resources/sap/ui/core/themes/sap_fiori_3/fonts/72-Light.woff2?ui5-webcomponents) format("woff2");
}
</style>
3. Host Fonts Locally
If your application cannot reach the public CDN, you can serve the SAP 72 font family from your own infrastructure. The framework ships a ready-made stylesheet at @ui5/webcomponents-base/dist/FontFace.css whose @font-face URLs point at the @sap-theming/theming-base-content npm package, so a modern bundler (Vite, webpack, Rollup, esbuild, …) can resolve them from node_modules and emit the font files alongside your build output — no CDN call at runtime.
Note (experimental): @ui5/webcomponents-base/dist/FontFace.css is provided as a convenience and its location, contents, and hosting package are subject to change — it may be relocated to a different package or restructured in a future release. If you depend on it, pin your @ui5/webcomponents version and re-verify the import path when upgrading.
After disabling default font loading (see step 1), import the stylesheet at your application entry point:
// In your main.ts / main.js
import "@ui5/webcomponents-base/dist/FontFace.css";
or from CSS:
/* In your main.css */
@import "@ui5/webcomponents-base/dist/FontFace.css";
Your bundler resolves the @sap-theming/theming-base-content/... URLs inside the stylesheet, copies the .woff2 files into the build output, and rewrites the references to your asset paths.
Without a bundler. If you don't have a build step, copy the font files manually. They live under @sap-theming/theming-base-content/content/Base/baseLib/baseTheme/fonts/ in the npm package — install the package or download them directly. The full set is:
Copy the fonts/ directory to a location served by your web server (e.g. /static/fonts/), then copy FontFace.css into your project and replace the @sap-theming/theming-base-content/content/Base/baseLib/baseTheme/fonts/ URL prefix with that location. Load the rewritten CSS using one of the methods from step 1.
Keep the fonts in sync. The font files rarely change. When you upgrade @ui5/webcomponents to a new minor version, check the version of @sap-theming/theming-base-content it depends on, and re-copy the fonts/ directory if it has been updated.