<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <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>
