normal, semibold, and bold.Why no custom CJK font? A complete Chinese font weighs 5–10 MB per weight. Loading it on every page would add 15–30 MB of font data, severely impacting Core Web Vitals (LCP, FCP) and mobile data usage. System fonts like PingFang SC, Microsoft YaHei, or Noto Sans CJK are excellent and pre-installed — using them is the right trade-off for a global, performance-conscious design system.
lang attribute. Set it once on <html> (and override on a subtree
only when the language actually changes) so the :lang() selectors can pick the right CJK font stack — this also
satisfies WCAG 3.1.1 (Language of Page) for assistive technologies.<html lang="zh-Hans">
<!-- … -->
</html>
:lang() swap on --p-font-porsche-next@theme block → cascades to the whole document:lang() swap on --font-porsche-nextcjk-font-family mixin; the prose-heading-*() and prose-text-*() mixins already apply :lang() selectors to auto-detect CJK contentgetCJKFontFamilyStyle() helper; the proseHeading* and proseText* style objects already apply :lang() selectors to auto-detect CJK content:lang()
rule placed once at the document root is enough to switch the font for the entire app — so these flavors expose one
logical font variable and handle CJK automatically. The PDS Stylesheets are loaded automatically by the PDS
components, but they're also a fully supported standalone option: you can use --p-font-porsche-next and the other
--p-* design tokens in any project, with or without the web components.font-family rule — easy to forget, impossible to enforce at build time, and unable to
express legitimate cases like a Japanese pull-quote inside an English document. These flavors therefore expose the
four CJK families as first-class tokens (fontPorscheNextZhHans, fontPorscheNextZhHant, fontPorscheNextJa,
fontPorscheNextKo) and provide an opt-in :lang() helper for the common case.lang on <html> and use --p-font-porsche-next,
.font-porsche-next, <p-text> and/or <p-heading>.cjk-font-family mixin /
getCJKFontFamilyStyle() helper on any rule that sets font-family. Reach for the per-language tokens only when you
intentionally need to pin a specific CJK family regardless of the document's language. If you're using the
prose-heading-*() / prose-text-*() mixins or the proseHeading* / proseText* helpers, you can skip this step —
they already include the :lang() logic to auto-detect CJK content and apply the right font.Known limitations
semibold weight — it is aliased to bold.
– Simplified & Traditional Chinese system fonts on macOS (
PingFang SC / PingFang TC) have no dedicated
semibold weight — they are aliased to bold.
– Thai Porsche Next (
DB Heavent) is not perfectly aligned with the Latin version in terms of geometry (cap
height, x-height, vertical metrics).macOS/iOS, Windows, Linux/Android/ChromeOS:
Porsche Next
macOS/iOS, Windows, Linux/Android/ChromeOS:
Porsche Next
macOS/iOS, Windows, Linux/Android/ChromeOS:
Porsche Next
macOS/iOS, Windows, Linux/Android/ChromeOS:
Porsche Next
macOS/iOS, Windows, Linux/Android/ChromeOS:
Porsche Next
macOS/iOS:
PingFang SC, Windows:Microsoft YaHei, Linux/Android/ChromeOS:Noto Sans SC
macOS/iOS:
PingFang TC, Windows:Microsoft JhengHei, Linux/Android/ChromeOS:Noto Sans TC
macOS/iOS:
Hiragino Sans, Windows:Yu Gothic, Linux/Android/ChromeOS:Noto Sans JP
macOS/iOS:
Apple SD Gothic Neo, Windows:Malgun Gothic, Linux/Android/ChromeOS:Noto Sans KR
macOS/iOS, Windows, Linux/Android/ChromeOS:
Porsche Next (DB Heavent)
