Last active
March 10, 2023 19:27
-
-
Save ShikiSuen/2489e06d994bb48e798005773953d4aa to your computer and use it in GitHub Desktop.
Apple Font Experience for Linux. You need to put this conf file in "/etc/fonts/conf.d" and manually install "Inter" and "Sarasa Gothic" to "/etc/fonts/opentype/". You can install PingFang if you wish. Install "noto-cjk" package from your Linux package manager for Noto Serif CJK support.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="UTF-8"?> | |
<!DOCTYPE fontconfig SYSTEM "fonts.dtd"> | |
<!-- --> | |
<fontconfig> | |
<!-- Basic CJK Font Fallback Rule Redifined --> | |
<match target="pattern"> | |
<test qual="any" name="lang" compare="contains"> | |
<string>zh-TW</string> | |
</test> | |
<test qual="any" name="lang" compare="contains"> | |
<string>zh-Hant</string> | |
</test> | |
<test qual="any" name="lang" compare="contains"> | |
<string>zh-Hant-TW</string> | |
</test> | |
<match target="pattern"> | |
<test qual="any" name="family"> | |
<string>sans-serif</string> | |
</test> | |
<edit name="family" mode="assign"> | |
<string>fallback-cjk-sans-tw</string> | |
</edit> | |
</match> | |
<match target="pattern"> | |
<test qual="any" name="family"> | |
<string>serif</string> | |
</test> | |
<edit name="family" mode="assign"> | |
<string>fallback-cjk-serif-tw</string> | |
</edit> | |
</match> | |
<match target="pattern"> | |
<test qual="any" name="family"> | |
<string>monospace</string> | |
</test> | |
<edit name="family" mode="assign"> | |
<string>fallback-cjk-mono-tw</string> | |
</edit> | |
</match> | |
</match> | |
<match target="pattern"> | |
<test qual="any" name="lang" compare="contains"> | |
<string>zh-HK</string> | |
</test> | |
<test qual="any" name="lang" compare="contains"> | |
<string>zh-Hant-HK</string> | |
</test> | |
<match target="pattern"> | |
<test qual="any" name="family"> | |
<string>sans-serif</string> | |
</test> | |
<edit name="family" mode="assign"> | |
<string>fallback-cjk-sans-hk</string> | |
</edit> | |
</match> | |
<match target="pattern"> | |
<test qual="any" name="family"> | |
<string>serif</string> | |
</test> | |
<edit name="family" mode="assign"> | |
<string>fallback-cjk-serif-hk</string> | |
</edit> | |
</match> | |
<match target="pattern"> | |
<test qual="any" name="family"> | |
<string>monospace</string> | |
</test> | |
<edit name="family" mode="assign"> | |
<string>fallback-cjk-mono-hk</string> | |
</edit> | |
</match> | |
</match> | |
<match target="pattern"> | |
<test qual="any" name="lang" compare="contains"> | |
<string>zh-CN</string> | |
</test> | |
<test qual="any" name="lang" compare="contains"> | |
<string>zh-Hans</string> | |
</test> | |
<test qual="any" name="lang" compare="contains"> | |
<string>zh-Hans-CN</string> | |
</test> | |
<match target="pattern"> | |
<test qual="any" name="family"> | |
<string>sans-serif</string> | |
</test> | |
<edit name="family" mode="assign"> | |
<string>fallback-cjk-sans-cn</string> | |
</edit> | |
</match> | |
<match target="pattern"> | |
<test qual="any" name="family"> | |
<string>serif</string> | |
</test> | |
<edit name="family" mode="assign"> | |
<string>fallback-cjk-serif-cn</string> | |
</edit> | |
</match> | |
<match target="pattern"> | |
<test qual="any" name="family"> | |
<string>monospace</string> | |
</test> | |
<edit name="family" mode="assign"> | |
<string>fallback-cjk-mono-cn</string> | |
</edit> | |
</match> | |
</match> | |
<match target="pattern"> | |
<test qual="any" name="lang" compare="contains"> | |
<string>ja</string> | |
</test> | |
<test qual="any" name="lang" compare="contains"> | |
<string>ja-JP</string> | |
</test> | |
<match target="pattern"> | |
<test qual="any" name="family"> | |
<string>sans-serif</string> | |
</test> | |
<edit name="family" mode="assign"> | |
<string>fallback-cjk-sans-jp</string> | |
</edit> | |
</match> | |
<match target="pattern"> | |
<test qual="any" name="family"> | |
<string>serif</string> | |
</test> | |
<edit name="family" mode="assign"> | |
<string>fallback-cjk-serif-jp</string> | |
</edit> | |
</match> | |
<match target="pattern"> | |
<test qual="any" name="family"> | |
<string>monospace</string> | |
</test> | |
<edit name="family" mode="assign"> | |
<string>fallback-cjk-mono-jp</string> | |
</edit> | |
</match> | |
</match> | |
<match target="pattern"> | |
<test qual="any" name="lang" compare="contains"> | |
<string>ko</string> | |
</test> | |
<test qual="any" name="lang" compare="contains"> | |
<string>ko-KR</string> | |
</test> | |
<match target="pattern"> | |
<test qual="any" name="family"> | |
<string>sans-serif</string> | |
</test> | |
<edit name="family" mode="assign"> | |
<string>fallback-cjk-sans-kr</string> | |
</edit> | |
</match> | |
<match target="pattern"> | |
<test qual="any" name="family"> | |
<string>serif</string> | |
</test> | |
<edit name="family" mode="assign"> | |
<string>fallback-cjk-serif-kr</string> | |
</edit> | |
</match> | |
<match target="pattern"> | |
<test qual="any" name="family"> | |
<string>monospace</string> | |
</test> | |
<edit name="family" mode="assign"> | |
<string>fallback-cjk-mono-kr</string> | |
</edit> | |
</match> | |
</match> | |
<!-- Inter Font Resize --> | |
<match target="font"> | |
<test name="family"> | |
<string>Inter</string> | |
</test> | |
<edit name="pixelsize" mode="assign"> | |
<times><name>pixelsize</name>, <double>.95</double></times> | |
</edit> | |
</match> | |
<!-- Fallback fonts preference order --> | |
<match target="pattern"> | |
<test name="family"> | |
<string>sans-serif</string> | |
</test> | |
<edit name="family" mode="assign"> | |
<string>Inter</string> | |
</edit> | |
</match> | |
<match target="pattern"> | |
<test name="family"> | |
<string>serif</string> | |
</test> | |
<edit name="family" mode="assign"> | |
<string>Noto Serif</string> | |
</edit> | |
</match> | |
<match target="pattern"> | |
<test name="family"> | |
<string>monospace</string> | |
</test> | |
<edit name="family" mode="assign"> | |
<string>Iosevka Term</string> | |
</edit> | |
</match> | |
<!-- Fallback fonts preference order - CJK --> | |
<alias> | |
<family>fallback-cjk-sans-tw</family> | |
<prefer> | |
<family>Inter</family> | |
<family>PingFang TC</family> | |
<family>PingFang SC</family> | |
<family>Sarasa Gothic TC</family> | |
<family>Noto Sans CJK TC</family> | |
</prefer> | |
</alias> | |
<alias> | |
<family>fallback-cjk-serif-tw</family> | |
<prefer> | |
<family>Noto Serif CJK TC</family> | |
</prefer> | |
</alias> | |
<alias> | |
<family>fallback-cjk-mono-tw</family> | |
<prefer> | |
<family>Sarasa Term TC</family> | |
<family>Noto Sans Mono CJK TC</family> | |
</prefer> | |
</alias> | |
<alias> | |
<family>fallback-cjk-sans-hk</family> | |
<prefer> | |
<family>Inter</family> | |
<family>PingFang HK</family> | |
<family>PingFang SC</family> | |
<family>Sarasa Gothic CL</family> | |
<family>Noto Sans CJK HK</family> | |
</prefer> | |
</alias> | |
<alias> | |
<family>fallback-cjk-serif-hk</family> | |
<prefer> | |
<family>Noto Serif CJK TC</family> | |
</prefer> | |
</alias> | |
<alias> | |
<family>fallback-cjk-mono-hk</family> | |
<prefer> | |
<family>Sarasa Term CL</family> | |
<family>Noto Sans Mono CJK HK</family> | |
</prefer> | |
</alias> | |
<alias> | |
<family>fallback-cjk-sans-cn</family> | |
<prefer> | |
<family>Inter</family> | |
<family>PingFang SC</family> | |
<family>Sarasa Gothic SC</family> | |
<family>Noto Sans CJK SC</family> | |
</prefer> | |
</alias> | |
<alias> | |
<family>fallback-cjk-serif-cn</family> | |
<prefer> | |
<family>Noto Serif CJK SC</family> | |
</prefer> | |
</alias> | |
<alias> | |
<family>fallback-cjk-mono-cn</family> | |
<prefer> | |
<family>Sarasa Term SC</family> | |
<family>Noto Sans Mono CJK SC</family> | |
</prefer> | |
</alias> | |
<alias> | |
<family>fallback-cjk-sans-jp</family> | |
<prefer> | |
<family>Inter</family> | |
<family>Sarasa Gothic J</family> | |
<family>Noto Sans CJK JP</family> | |
</prefer> | |
</alias> | |
<alias> | |
<family>fallback-cjk-serif-jp</family> | |
<prefer> | |
<family>Noto Serif CJK JP</family> | |
</prefer> | |
</alias> | |
<alias> | |
<family>fallback-cjk-mono-jp</family> | |
<prefer> | |
<family>Sarasa Term J</family> | |
<family>Noto Sans Mono CJK JP</family> | |
</prefer> | |
</alias> | |
<alias> | |
<family>fallback-cjk-sans-kr</family> | |
<prefer> | |
<family>Inter</family> | |
<family>Sarasa Gothic HC</family> | |
<family>Noto Sans CJK KR</family> | |
</prefer> | |
</alias> | |
<alias> | |
<family>fallback-cjk-serif-kr</family> | |
<prefer> | |
<family>Noto Serif CJK KR</family> | |
</prefer> | |
</alias> | |
<alias> | |
<family>fallback-cjk-sans-kr</family> | |
<prefer> | |
<family>Sarasa Term HC</family> | |
<family>Noto Sans Mono CJK KR</family> | |
</prefer> | |
</alias> | |
<!-- Extra Western Font Fallback --> | |
<alias> | |
<family>Helvetica Neue</family> | |
<prefer> | |
<family>Inter</family> | |
</prefer> | |
</alias> | |
<alias> | |
<family>Helvetica</family> | |
<prefer> | |
<family>Inter</family> | |
</prefer> | |
</alias> | |
<alias> | |
<family>Arial</family> | |
<prefer> | |
<family>Inter</family> | |
</prefer> | |
</alias> | |
<alias> | |
<family>Tahoma</family> | |
<prefer> | |
<family>Inter</family> | |
</prefer> | |
</alias> | |
<alias> | |
<family>Verdana</family> | |
<prefer> | |
<family>Inter</family> | |
</prefer> | |
</alias> | |
</fontconfig> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This patch requires not only noto-CJK (for Noto Serif CJK support) but also the following fonts:
https://github.com/rsms/inter
https://github.com/be5invis/Sarasa-Gothic
(Sarasa Gothic is an enhanced version of Noto Sans CJK + embeded Iosevka terminal font support.)
(You may install PingFang if you wish, and this patch will read PingFang as the most prioritized Chinese fallback fonts.)
(Inter font can be treated as an open-source alternative of "Apple San Francisco Pro Display".)