Dynamic Fonts
Apply this policy to every client, including panels, sites, themes, and mobile apps, and all shared client components and their source, public, and asset directories, in development and production. No font file may exist anywhere inside client repositories, source trees, public or asset directories, or packaged application bundles. Fonts downloaded at runtime may be stored in browser-managed caches or an application cache on the device; these caches must never become source assets or bundled files. Never bundle, commit, copy, generate, or embed fonts in a client, including base64 or data URLs and icon fonts. Fonts must be served dynamically over HTTPS from the statics subdomain of the current tenant, resolved through tenant runtime configuration. Do not hardcode a tenant domain or load fonts directly from third-party font services or repository URLs. Before a font is used, its files must be committed and pushed to the holizm/fonts repository in the correct directory structure: use the established language group, or common only for fonts designed to support multiple languages, and the font-family directory, with camelCase directory and file names. Reuse an existing family directory and its naming conventions; place new families under <group>/<fontFamily>/<fontVariant>.<extension>. Font definition CSS files, including every @font-face rule and its source, weight, style, and display descriptors, must also reside in holizm/fonts alongside the relevant font family and be served from tenant statics. Never define @font-face rules or keep font definition stylesheets in a panel, site, theme, app, or shared client source. Clients may declare font-family usage and load the remote definition stylesheet through shared infrastructure. Deploy those repository files to the tenant's statics service while preserving their paths. Shared client infrastructure must resolve and load the configured font families, weights, styles, and URLs; panels, sites, themes, and mobile apps only declare short font names through shared infrastructure. Keep these declarations in their existing composition files; never create separate font path configuration files in clients. Font repository paths, language groups, definition stylesheet filenames, and asset URLs must remain inside core infrastructure and must not leak into themes or sites. Qwik clients use reusable SVG icons; do not include or load icon fonts unless a future customer requirement explicitly authorizes them. Mobile client infrastructure must download fonts from the configured tenant statics URLs and register them with the native runtime before use. Reuse downloaded fonts through the device application cache and use a system-font fallback while fonts are loading or unavailable.
Correct
Font repository: common/roboto/regular.woff2
Font repository: persian/bYekan/bYekan.woff2
Runtime font URL: https://statics.<tenantDomain>/fonts/common/roboto/regular.woff2
Incorrect
src: url('./assets/regular.woff2') format('woff2');
src: url('/themes/51/assets/inter400.ttf') format('truetype');
src: url('data:font/woff2;base64,...') format('woff2');
@import url('https://fonts.googleapis.com/css2?family=Roboto');
Fix
Commit and push font files to their correct family directory in holizm/fonts, move their font definition CSS files and @font-face rules into the same repository, publish both fonts and definition stylesheets through the tenant statics service, configure the resulting runtime font references, and remove every source or bundled font file and embedded font from all clients, including panels, sites, themes, and mobile apps. Use shared runtime font loading and native registration for mobile apps.