419 lines
11 KiB
XML
419 lines
11 KiB
XML
<?xml version="1.0"?>
|
|
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
|
|
<fontconfig>
|
|
<!-- CJK: fold the language tag onto one tag per Noto CJK variant -->
|
|
|
|
<match target="pattern">
|
|
<test name="lang" qual="first" compare="eq">
|
|
<string>zh</string>
|
|
</test>
|
|
<edit name="lang" mode="assign">
|
|
<string>zh-cn</string>
|
|
</edit>
|
|
</match>
|
|
|
|
<match target="pattern">
|
|
<test name="lang" qual="first" compare="eq">
|
|
<string>zh-hant</string>
|
|
</test>
|
|
<edit name="lang" mode="assign">
|
|
<string>zh-tw</string>
|
|
</edit>
|
|
</match>
|
|
|
|
<match target="pattern">
|
|
<test name="lang" qual="first" compare="contains">
|
|
<string>zh-hant-hk</string>
|
|
</test>
|
|
<edit name="lang" mode="assign">
|
|
<string>zh-hk</string>
|
|
</edit>
|
|
</match>
|
|
|
|
<match target="pattern">
|
|
<test name="lang" qual="first" compare="contains">
|
|
<string>zh-hant-mo</string>
|
|
</test>
|
|
<edit name="lang" mode="assign">
|
|
<string>zh-hk</string>
|
|
</edit>
|
|
</match>
|
|
|
|
<match target="pattern">
|
|
<test name="lang" qual="first" compare="contains">
|
|
<string>zh-hant</string>
|
|
</test>
|
|
<edit name="lang" mode="assign">
|
|
<string>zh-tw</string>
|
|
</edit>
|
|
</match>
|
|
|
|
<match target="pattern">
|
|
<test name="lang" qual="first" compare="contains">
|
|
<string>zh-hans</string>
|
|
</test>
|
|
<edit name="lang" mode="assign">
|
|
<string>zh-cn</string>
|
|
</edit>
|
|
</match>
|
|
|
|
<match target="pattern">
|
|
<test name="lang" qual="first" compare="contains">
|
|
<string>zh-sg</string>
|
|
</test>
|
|
<edit name="lang" mode="assign">
|
|
<string>zh-cn</string>
|
|
</edit>
|
|
</match>
|
|
|
|
<match target="pattern">
|
|
<test name="lang" qual="first" compare="contains">
|
|
<string>zh-mo</string>
|
|
</test>
|
|
<edit name="lang" mode="assign">
|
|
<string>zh-hk</string>
|
|
</edit>
|
|
</match>
|
|
|
|
<match target="pattern">
|
|
<test name="lang" qual="first" compare="eq">
|
|
<string>yue</string>
|
|
</test>
|
|
<edit name="lang" mode="assign">
|
|
<string>zh-hk</string>
|
|
</edit>
|
|
</match>
|
|
|
|
<match target="pattern">
|
|
<test name="lang" qual="first" compare="contains">
|
|
<string>yue-hans</string>
|
|
</test>
|
|
<edit name="lang" mode="assign">
|
|
<string>zh-cn</string>
|
|
</edit>
|
|
</match>
|
|
|
|
<match target="pattern">
|
|
<test name="lang" qual="first" compare="contains">
|
|
<string>yue-cn</string>
|
|
</test>
|
|
<edit name="lang" mode="assign">
|
|
<string>zh-cn</string>
|
|
</edit>
|
|
</match>
|
|
|
|
<match target="pattern">
|
|
<test name="lang" qual="first" compare="contains">
|
|
<string>yue</string>
|
|
</test>
|
|
<edit name="lang" mode="assign">
|
|
<string>zh-hk</string>
|
|
</edit>
|
|
</match>
|
|
|
|
<!-- Then append that variant after the generic family it falls back from -->
|
|
|
|
<match target="pattern">
|
|
<test name="lang" qual="first" compare="contains">
|
|
<string>zh-cn</string>
|
|
</test>
|
|
<test name="family">
|
|
<string>sans-serif</string>
|
|
</test>
|
|
<edit name="family" mode="append" binding="strong">
|
|
<string>Noto Sans CJK SC</string>
|
|
</edit>
|
|
</match>
|
|
|
|
<match target="pattern">
|
|
<test name="lang" qual="first" compare="contains">
|
|
<string>zh-cn</string>
|
|
</test>
|
|
<test name="family">
|
|
<string>serif</string>
|
|
</test>
|
|
<edit name="family" mode="append" binding="strong">
|
|
<string>Noto Serif CJK SC</string>
|
|
</edit>
|
|
</match>
|
|
|
|
<match target="pattern">
|
|
<test name="lang" qual="first" compare="contains">
|
|
<string>zh-cn</string>
|
|
</test>
|
|
<test name="family">
|
|
<string>monospace</string>
|
|
</test>
|
|
<edit name="family" mode="append" binding="strong">
|
|
<string>Noto Sans Mono CJK SC</string>
|
|
</edit>
|
|
</match>
|
|
|
|
<match target="pattern">
|
|
<test name="lang" qual="first" compare="contains">
|
|
<string>zh-hk</string>
|
|
</test>
|
|
<test name="family">
|
|
<string>sans-serif</string>
|
|
</test>
|
|
<edit name="family" mode="append" binding="strong">
|
|
<string>Noto Sans CJK HK</string>
|
|
</edit>
|
|
</match>
|
|
|
|
<match target="pattern">
|
|
<test name="lang" qual="first" compare="contains">
|
|
<string>zh-hk</string>
|
|
</test>
|
|
<test name="family">
|
|
<string>serif</string>
|
|
</test>
|
|
<edit name="family" mode="append" binding="strong">
|
|
<string>Noto Serif CJK HK</string>
|
|
</edit>
|
|
</match>
|
|
|
|
<match target="pattern">
|
|
<test name="lang" qual="first" compare="contains">
|
|
<string>zh-hk</string>
|
|
</test>
|
|
<test name="family">
|
|
<string>monospace</string>
|
|
</test>
|
|
<edit name="family" mode="append" binding="strong">
|
|
<string>Noto Sans Mono CJK HK</string>
|
|
</edit>
|
|
</match>
|
|
|
|
<match target="pattern">
|
|
<test name="lang" qual="first" compare="contains">
|
|
<string>zh-tw</string>
|
|
</test>
|
|
<test name="family">
|
|
<string>sans-serif</string>
|
|
</test>
|
|
<edit name="family" mode="append" binding="strong">
|
|
<string>Noto Sans CJK TC</string>
|
|
</edit>
|
|
</match>
|
|
|
|
<match target="pattern">
|
|
<test name="lang" qual="first" compare="contains">
|
|
<string>zh-tw</string>
|
|
</test>
|
|
<test name="family">
|
|
<string>serif</string>
|
|
</test>
|
|
<edit name="family" mode="append" binding="strong">
|
|
<string>Noto Serif CJK TC</string>
|
|
</edit>
|
|
</match>
|
|
|
|
<match target="pattern">
|
|
<test name="lang" qual="first" compare="contains">
|
|
<string>zh-tw</string>
|
|
</test>
|
|
<test name="family">
|
|
<string>monospace</string>
|
|
</test>
|
|
<edit name="family" mode="append" binding="strong">
|
|
<string>Noto Sans Mono CJK TC</string>
|
|
</edit>
|
|
</match>
|
|
|
|
<match target="pattern">
|
|
<test name="lang" qual="first" compare="contains">
|
|
<langset><string>ja</string></langset>
|
|
</test>
|
|
<test name="family">
|
|
<string>sans-serif</string>
|
|
</test>
|
|
<edit name="family" mode="append" binding="strong">
|
|
<string>Noto Sans CJK JP</string>
|
|
</edit>
|
|
</match>
|
|
|
|
<match target="pattern">
|
|
<test name="lang" qual="first" compare="contains">
|
|
<langset><string>ja</string></langset>
|
|
</test>
|
|
<test name="family">
|
|
<string>serif</string>
|
|
</test>
|
|
<edit name="family" mode="append" binding="strong">
|
|
<string>Noto Serif CJK JP</string>
|
|
</edit>
|
|
</match>
|
|
|
|
<match target="pattern">
|
|
<test name="lang" qual="first" compare="contains">
|
|
<langset><string>ja</string></langset>
|
|
</test>
|
|
<test name="family">
|
|
<string>monospace</string>
|
|
</test>
|
|
<edit name="family" mode="append" binding="strong">
|
|
<string>Noto Sans Mono CJK JP</string>
|
|
</edit>
|
|
</match>
|
|
|
|
<match target="pattern">
|
|
<test name="lang" qual="first" compare="contains">
|
|
<langset><string>ko</string></langset>
|
|
</test>
|
|
<test name="family">
|
|
<string>sans-serif</string>
|
|
</test>
|
|
<edit name="family" mode="append" binding="strong">
|
|
<string>Noto Sans CJK KR</string>
|
|
</edit>
|
|
</match>
|
|
|
|
<match target="pattern">
|
|
<test name="lang" qual="first" compare="contains">
|
|
<langset><string>ko</string></langset>
|
|
</test>
|
|
<test name="family">
|
|
<string>serif</string>
|
|
</test>
|
|
<edit name="family" mode="append" binding="strong">
|
|
<string>Noto Serif CJK KR</string>
|
|
</edit>
|
|
</match>
|
|
|
|
<match target="pattern">
|
|
<test name="lang" qual="first" compare="contains">
|
|
<langset><string>ko</string></langset>
|
|
</test>
|
|
<test name="family">
|
|
<string>monospace</string>
|
|
</test>
|
|
<edit name="family" mode="append" binding="strong">
|
|
<string>Noto Sans Mono CJK KR</string>
|
|
</edit>
|
|
</match>
|
|
|
|
<match target="pattern">
|
|
<test name="family" qual="any">
|
|
<string>sans-serif</string>
|
|
</test>
|
|
<edit name="family" mode="assign" binding="strong">
|
|
<string>Liberation Sans</string>
|
|
</edit>
|
|
</match>
|
|
|
|
<match target="pattern">
|
|
<test name="family" qual="any">
|
|
<string>serif</string>
|
|
</test>
|
|
<edit name="family" mode="assign" binding="strong">
|
|
<string>Liberation Serif</string>
|
|
</edit>
|
|
</match>
|
|
|
|
<match target="pattern">
|
|
<test name="family" qual="any">
|
|
<string>monospace</string>
|
|
</test>
|
|
<edit name="family" mode="assign" binding="strong">
|
|
<string>JetBrainsMono Nerd Font</string>
|
|
</edit>
|
|
</match>
|
|
|
|
<!-- Arabic: prefer Naskh (standard Arabic) over Nastaliq (Urdu style) -->
|
|
<match target="pattern">
|
|
<test name="lang" compare="contains">
|
|
<string>ar</string>
|
|
</test>
|
|
<edit name="family" mode="prepend" binding="strong">
|
|
<string>Noto Naskh Arabic</string>
|
|
</edit>
|
|
</match>
|
|
|
|
<!-- Urdu is conventionally set in Nastaliq, so keep it there. Without this
|
|
the untargeted Naskh rule below would capture Urdu too. Appended rather
|
|
than prepended so it only wins the last-resort race against that rule
|
|
and never displaces the family the app actually asked for. -->
|
|
<match target="pattern">
|
|
<test name="lang" compare="contains">
|
|
<string>ur</string>
|
|
</test>
|
|
<edit name="family" mode="append" binding="strong">
|
|
<string>Noto Nastaliq Urdu</string>
|
|
</edit>
|
|
</match>
|
|
|
|
<!-- Chromium and Electron resolve missing glyphs one character at a time
|
|
without lang on the pattern, so the rules above never fire for them and
|
|
fontconfig falls through to a raw charset scan that lands on Nastaliq
|
|
(or on Kufi, once the latin alias chains have widened the pattern).
|
|
Naming Naskh as a last-resort family covers that path. Appending keeps
|
|
it behind every family the app actually asked for, and charset matching
|
|
outranks family matching, so a font that does not cover the codepoint
|
|
can never be pulled in: Latin, monospace, emoji, Nerd Font glyphs and
|
|
CJK all resolve exactly as before. -->
|
|
<match target="pattern">
|
|
<edit name="family" mode="append" binding="strong">
|
|
<string>Noto Naskh Arabic</string>
|
|
</edit>
|
|
</match>
|
|
|
|
<alias>
|
|
<family>system-ui</family>
|
|
<prefer>
|
|
<family>Liberation Sans</family>
|
|
</prefer>
|
|
</alias>
|
|
|
|
<alias>
|
|
<family>ui-monospace</family>
|
|
<default>
|
|
<family>monospace</family>
|
|
</default>
|
|
</alias>
|
|
|
|
<alias>
|
|
<family>-apple-system</family>
|
|
<prefer>
|
|
<family>Liberation Sans</family>
|
|
</prefer>
|
|
</alias>
|
|
|
|
<alias>
|
|
<family>BlinkMacSystemFont</family>
|
|
<prefer>
|
|
<family>Liberation Sans</family>
|
|
</prefer>
|
|
</alias>
|
|
|
|
<alias>
|
|
<family>Liberation Sans</family>
|
|
<accept>
|
|
<family>JetBrainsMono Nerd Font</family>
|
|
<family>Noto Color Emoji</family>
|
|
</accept>
|
|
</alias>
|
|
|
|
<alias>
|
|
<family>sans-serif</family>
|
|
<accept>
|
|
<family>JetBrainsMono Nerd Font</family>
|
|
<family>Noto Color Emoji</family>
|
|
</accept>
|
|
</alias>
|
|
|
|
<alias>
|
|
<family>serif</family>
|
|
<accept>
|
|
<family>Noto Color Emoji</family>
|
|
</accept>
|
|
</alias>
|
|
|
|
<alias>
|
|
<family>monospace</family>
|
|
<accept>
|
|
<family>Noto Color Emoji</family>
|
|
</accept>
|
|
</alias>
|
|
</fontconfig>
|