<?xml version="1.0" encoding="UTF-8" ?> <!-- -*- xml -*- vim:set ft=xml sw=2 et:
  Updated 080104, notes {at} notes.for.sabi.co.UK
-->
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <!-- Documentation: http://FontConfig.org/fontconfig-user.html -->

<!--
# DON'T USE XFT2! It is client side only and sends bitmaps to the
# X server. This breaks one of the fundamental design properties
# of X, that resources are shared in the server, not the clients,
# so that network operation is consistent and speedy. Also, writing
# text becomes writing pixmaps, and text windows come image windows,
# and every text based application becomes a little Gimp. Consider
# the implications for network bandwidth and memory use.

# Also, if your reason for using Xft2 is antialiasing, think again:
# antialiasing makes your font fuzzy, and strains the focusing
# mechanism of the eyes, which relies on sharp boundaries (and
# different focusing planes for different colors).

# WARNING: using Xft2 with some releases of NVidia drivers crashes
# 11, either disable RENDER extension acceleration or RENDER entirely.

  FontConfig is actually somewhat nice, but even if the two are not
  necessarily related, it almost always implies Xft2.
-->

  <!--
#   Font directory path. Ensure that '/etc/fonts/local.conf',
#   '/etc/X11/XF86Config' (and maybe '/etc/X11/XftConfig') match.
  -->

  <dir>/usr/share/X11/fonts/misc</dir>
  <dir>/usr/share/X11/fonts/100dpi</dir>
  <dir>/usr/share/X11/fonts/75dpi</dir>

  <dir>/usr/local/share/fonts</dir>
  <dir>/usr/share/ghostscript/fonts</dir>

  <dir>/com/share/font/ps1</dir>
  <dir>/loc/share/font/ps1</dir>

  <dir>/usr/share/fonts/type1</dir>
  <dir>/usr/share/X11/fonts/Type1</dir>

  <dir>/com/share/font/ttf</dir>
  <dir>/loc/share/font/ttf</dir>
<!--
  <dir>/usr/share/fonts/truetype</dir>
  <dir>/usr/share/X11/fonts/TrueType</dir>
-->

  <!-- Processing logic:
    * First pass takes an input pattern name and resolves it by a
      process of 'pattern' matching to the closest actual font name
      known, typically with regard to typographical properties.

    * Second pass then takes the selected font name and modifies it,
      typically as to rendering properties.

    * Note the subtle differences in semantics in the 'mode' attribute
      of 'edit', especially depending on whether the edited property
      matched or not.
  -->

  <!-- http://Fontconfig.org/fontconfig-user.html

    <families>[-<point sizes>][:<name1>=<values1>]+
  -->

  <!-- Properties:
    Note: 'scalable' is an attribute of the font _request_, 'outline' is
      whether the _resulting_ font is actually an outline.

    outline:		true|false
    scalable:		true|false
    bitmapenabled:	true|false

    file:		<string>
    index:		<int>

    fontformat:         PCF|TrueType|Type 1
    rasterizer:		<string>

    fullname:           <string>
    fullnamelang:       ll[-CC]
    fontversion:        <string>
    capability:         <string>

    foundry:		<string>
    family:		<string>
    familylang:         ll[-CC]
    style:		(light|medium|demibold|bold|black|roman|italic|oblique)+
    stylelang:          ll[-CC]
    weight:		light|medium|demibold|bold|black
    slant:		roman|italic|oblique

    lang:		ll[-CC]
    charset:		ll[-CC]

    pixelsize:		<double>
    size:		<double>
    dpi:		<double>

    spacing:		proportional|mono|charcell
    minspace		true|false

    embolden:           true|false
    scale:		<double>
    aspect:		<double>
    matrix:		<double> <double> <double> <double>

    rgba:		none|rgb|bgr|vrgb|vbgr|unknown
    antialias:		true|false

    hinting:		true|false
    autohint:		true|false
    hintstyle:		0|1|2|3

    globaladvance:	true|false
    verticallayout:	true|false

    ftface:		<FT_Face>
  -->

  <!-- Priority order of properties (higher to lower):
    foundry, charset, family, lang, spacing, pixelsize,
    style, slant, weight, antialias, rasterizer, outline
  -->

  <!-- Matching syntax:

    NOTE: 'pattern' means the match is against an input pattern,
	  'font' that it is against the selected output font.

    <match target="font|pattern">
      <test name="..." qual="any|all"
	  compare="(less|more)[_eq]|[not_](eq|contains)"
	<(const|int|bool|double|matrix|string|name)>....</...>
      </test>
      <edit name="..." binding="weak|same|strong"
	  mode="(assign[_replace]|prepend[_first]|append[_last]">
	<if>... ... ...</if>
	<not>...</not>
	<(or|and)>... ...</...>
	<(less|more)[_eq]|[not_]eq>... ...</...>
	<(plus|minus|times|divide)>... ...</...>
	<(int|double|string|bool|matrix|name|const)>...</...>
      </edit>
    </match>
  -->

  <!--
    It is really quite important to have a default font name even
    if very weak else strange things can happen like unknown fonts
    being substituted by 'Marlett' (a dingbats fonts).
   -->
  <match target="pattern">
    <edit name="family" mode="append_last" binding="weak">
      <string>serif</string>
    </edit>
  </match>

  <!--  Antialiasing only for small or large fonts -->
<!--
  <match target="font">
    <test name="antialias" compare="eq"><bool>true</bool></test>
    <test name="size" compare="more"><double>8</double></test>
    <test name="size" compare="less"><double>13</double></test>
    <edit name="antialias" mode="append"><bool>false</bool></edit>
  </match>
-->
<!--
  <match target="font">
    <test name="antialias" compare="eq"><bool>true</bool></test>
    <test name="pixelsize" compare="more"><double>10</double></test>
    <test name="pixelsize" compare="less"><double>16</double></test>
    <edit name="antialias" mode="append"><bool>false</bool></edit>
  </match>
-->

  <!-- Disable antialiasing for specific (well hinted) fonts -->
  <!-- Disable autohinting too, assuming that the bytecode interpreter
    is available. -->
  <match target="pattern">
    <test name="family" qual="any">
      <!-- DejaVu -->
      <string>DejaVu Sans</string>
      <string>DejaVu Serif</string>
      <string>DejaVu Sans Mono</string>
      <string>DejaVu Sans Light</string>
      <string>DejaVu Sans Condensed</string>
      <string>DejaVu Serif Condensed</string>
      <!-- Microsoft web fonts -->
      <string>Andale Mono</string>
      <string>Arial Black</string>
      <string>Arial</string>
      <string>Comic Sans MS</string>
      <string>Courier New</string>
      <string>Georgia</string>
      <string>Impact</string>
      <string>Times New Roman</string>
      <string>Trebuchet MS</string>
      <string>Verdana</string>
      <string>Webdings</string>
      <!-- Microsoft Windows 2000 fonts -->
      <string>Abadi MT Condensed Extra Bold</string>
      <string>Arial Rounded MT Bold</string>
      <string>Lucida Console</string>
      <string>Lucida Sans Unicode</string>
      <string>Marlett</string>
      <string>Microstyle Bold Extended ATT</string>
      <string>Palatino Linotype</string>
      <string>Symbol</string>
      <string>Tahoma</string>
      <string>Verdana Ref</string>
      <string>Wingdings</string>
      <!-- Agfa Monotype fonts -->
      <string>Albany MT</string>
      <string>Andale Sans</string>
      <string>Andy MT</string>
      <string>Bell MT</string>
      <string>Cumberland MT</string>
      <string>Monotype Sorts</string>
      <string>Segoe</string>
      <string>Thorndale AMT</string>
    </test>

    <edit name="antialias"
      binding="weak" mode="append_last"><bool>false</bool></edit>
    <edit name="autohint"
      binding="weak" mode="append_last"><bool>false</bool></edit>
  </match>

  <!--
    Setting generic options like antialiasing or minimum font size.
    The same can can be done for specific font families for example.
  -->

  <match target="pattern">
    <edit name="autohint" binding="weak" mode="append_last"><bool>true</bool></edit>
    <edit name="antialias" binding="weak" mode="append_last"><bool>false</bool></edit>

    <edit name="rgba" binding="weak" mode="append_last"><const>none</const></edit>
    <edit name="hinting" binding="weak" mode="append_last"><bool>true</bool></edit>
    <edit name="hintstyle" binding="weak" mode="append_last"><int>1</int></edit>
  </match>

  <!--
    Tweak the font selection matching process.
  -->

  <!-- Do not prefer outlines -->
<!--
  <match target="pattern">
    <edit name="prefer_outline"
      binding="weak" mode="assign"><bool>false</bool></edit>
  </match>
-->

  <!-- Default size 10 points -->
  <match target="pattern">
    <edit name="size" binding="weak" mode="append"><double>10</double></edit>
  </match>

  <!-- Ensure no fonts are too small in points or pixels -->
  <match target="pattern">
    <test name="size" compare="less"><double>7</double></test>
    <edit name="size" mode="prepend"><double>7</double></edit>
  </match>
  <match target="font">
    <test name="pixelsize" compare="less"><double>8</double></test>
    <edit name="pixelsize" mode="prepend"><double>8</double></edit>
  </match>

</fontconfig>
