Trivalent version: 150.0.7871.128 (Official Build)
secureblue image: kinoite-nvidia-open-hardened:latest, version 44.20260719.0
Troubleshooted and written up with Claude; commands run and output verified by me.
Summary
Trivalent does not render CJK text on pages that rely on system font fallback. Latin renders normally and embedded webfonts render, but any glyph needing fallback to the system's Noto CJK fonts shows as tofu (.notdef boxes). Every other application on the system renders CJK correctly and fc-match resolves the CJK fonts fine, so this is specific to Trivalent's font handling.
The system's CJK fonts are Fedora's variable-font builds (google-noto-sans-cjk-vf-fonts, NotoSansCJK-VF.ttc). Trivalent does not appear to enumerate these variable-font .ttc collections, in either the font picker or the character-fallback path. Installing a static (non-variable) Noto CJK font resolves the problem completely and immediately.
What the user sees
CJK renders as empty boxes while Latin renders normally (DuckDuckGo search for a CJK term):
Evidence
The fallback resolves to a Latin font with no CJK coverage. DevTools > Computed > Rendered Fonts on tofu text shows Liberation Sans, 30 glyphs, i.e. no CJK fallback occurs:
The system side is healthy, this is not a missing-font problem. fc-match sans-serif:lang=zh-tw returns Noto Sans CJK TC, and fc-list shows the VF CJK families installed:
chrome://settings/fonts lists static families (Liberation, Cantarell, static Noto Sans/Serif) but not the variable Noto CJK collections, showing the enumeration gap directly:
Steps to reproduce
- On a stock secureblue image (variable-font Noto CJK installed by default), open any page with CJK content that relies on generic
sans-serif fallback, e.g. a DuckDuckGo search for a CJK term, or https://www.104.com.tw.
- CJK characters render as empty boxes; Latin renders normally.
- Reproduces in a clean profile (
trivalent --user-data-dir=/tmp/triv-cjk-test), so it is not profile-related.
Workaround (if you just want CJK working now)
Download a static (non-variable) Noto CJK family, e.g. Noto Sans TC/SC/JP/KR from Google Fonts, and install only the static/*.ttf files (not the *-VariableFont*.ttf):
# adjust the source path to wherever you unzipped the download
mkdir -p ~/.local/share/fonts/NotoSansCJK-static
cp ~/Downloads/Noto_Sans_TC/static/*.ttf ~/.local/share/fonts/NotoSansCJK-static/
fc-cache -f
restorecon -Rv ~/.local/share/fonts
pkill -i trivalent # fully quit, then relaunch
Repeat with Noto Sans SC / JP / KR if you also need Simplified Chinese, Japanese, or Korean, since the single-language static families don't cover the full CJK range the unified collection does.
Likely cause
The static fonts install fixes both the picker and fallback, which points to Trivalent's build not handling variable-font .ttc CJK collections, while fontconfig handles them fine. Related upstream context: NixOS nixpkgs #156131 (VF Noto CJK tofu in some apps) and Chromium issue 41495702 (CJK fallback on Fedora).
Trivalent version: 150.0.7871.128 (Official Build)
secureblue image:
kinoite-nvidia-open-hardened:latest, version 44.20260719.0Summary
Trivalent does not render CJK text on pages that rely on system font fallback. Latin renders normally and embedded webfonts render, but any glyph needing fallback to the system's Noto CJK fonts shows as tofu (.notdef boxes). Every other application on the system renders CJK correctly and
fc-matchresolves the CJK fonts fine, so this is specific to Trivalent's font handling.The system's CJK fonts are Fedora's variable-font builds (
google-noto-sans-cjk-vf-fonts,NotoSansCJK-VF.ttc). Trivalent does not appear to enumerate these variable-font.ttccollections, in either the font picker or the character-fallback path. Installing a static (non-variable) Noto CJK font resolves the problem completely and immediately.What the user sees
CJK renders as empty boxes while Latin renders normally (DuckDuckGo search for a CJK term):
Evidence
The fallback resolves to a Latin font with no CJK coverage. DevTools > Computed > Rendered Fonts on tofu text shows Liberation Sans, 30 glyphs, i.e. no CJK fallback occurs:
The system side is healthy, this is not a missing-font problem.
fc-match sans-serif:lang=zh-twreturns Noto Sans CJK TC, andfc-listshows the VF CJK families installed:chrome://settings/fontslists static families (Liberation, Cantarell, static Noto Sans/Serif) but not the variable Noto CJK collections, showing the enumeration gap directly:Steps to reproduce
sans-seriffallback, e.g. a DuckDuckGo search for a CJK term, or https://www.104.com.tw.trivalent --user-data-dir=/tmp/triv-cjk-test), so it is not profile-related.Workaround (if you just want CJK working now)
Download a static (non-variable) Noto CJK family, e.g. Noto Sans TC/SC/JP/KR from Google Fonts, and install only the
static/*.ttffiles (not the*-VariableFont*.ttf):Repeat with Noto Sans SC / JP / KR if you also need Simplified Chinese, Japanese, or Korean, since the single-language static families don't cover the full CJK range the unified collection does.
Likely cause
The static fonts install fixes both the picker and fallback, which points to Trivalent's build not handling variable-font
.ttcCJK collections, while fontconfig handles them fine. Related upstream context: NixOS nixpkgs #156131 (VF Noto CJK tofu in some apps) and Chromium issue 41495702 (CJK fallback on Fedora).