[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#1006685: kde-plasma-desktop: KDE does not display Emojis correctly



Hi Norbert,

I used a different config file, but just found this here which indicates
that it is related to hinting:

https://bugs.freedesktop.org/show_bug.cgi?id=104542
Thank you very much for finding this.

Meanwhile, I had a look at how Kubuntu is configured in this regard.

I copied two files from Kubuntu's /etc/fonts/conf.avail/, 50-user.conf and
56-kubuntu-noto.conf and put them to Debian's /etc/fonts/conf.avail and
~/.config/fontconfig/conf.d/, respectively.

Then I refreshed the fonts cache using `sudo fc-cache -fv`, just as you
suggested. For everyone landing here: **It was crucial to relogin!**

Now I have working emoji support wherever I expect it. Thank you very much!

I could not find a primary source for both files, so I attached them to this
e-mail. Hopefully they will arrive in Debian's bug ticket frontend.


So maybe this is not related to KDE directly, but I still think its an
unfortunate situation, and fixing at would significantly improve the user
experience? Would it make sense to file another bug report against the
appropriate package, e.g. fontconfig?

My guess is that the fonts-noto-emoji or so should ship a fontconfig
file that activates it, best with the above.
I will open a bugreport for that package.


Again, thank you very much for your help. I think this bug report can be
closed now.


Best Regards
Max Görner
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <its:rules xmlns:its="http://www.w3.org/2005/11/its"; version="1.0">
    <its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
  </its:rules>

  <description>Load per-user customization files</description>
	<!--
	    Load per-user customization files where stored on XDG Base Directory
	    specification compliant places. it should be usually:
	      $HOME/.config/fontconfig/conf.d
	      $HOME/.config/fontconfig/fonts.conf
	-->
	<include ignore_missing="yes" prefix="xdg">fontconfig/conf.d</include>
	<include ignore_missing="yes" prefix="xdg">fontconfig/fonts.conf</include>
	<!-- the following elements will be removed in the future -->
	<include ignore_missing="yes" deprecated="yes">~/.fonts.conf.d</include>
	<include ignore_missing="yes" deprecated="yes">~/.fonts.conf</include>
</fontconfig>
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<!-- Copyright 2010 The Chromium OS Authors. All rights reserved.
     Use of this source code is governed by a BSD-style license that can be
     found in the LICENSE file.

// Copyright (c) 2006-2009 The Chromium OS Authors. All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
//    * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
//    * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
//    * Neither the name of Google Inc. nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-->
<fontconfig>
  <!-- Font directory list -->
  <dir>/usr/share/fonts/croscore</dir>
  <dir>/usr/share/fonts/crosextra</dir>
  <dir>/usr/share/fonts/dejavu</dir>
  <dir>/usr/share/fonts/ko-nanum</dir>
  <dir>/usr/share/fonts/lohit-cros</dir>
  <dir>/usr/share/fonts/monotype</dir>
  <dir>/usr/share/fonts/noto</dir>
  <dir>/usr/share/fonts/notocjk</dir>
  <dir>/usr/share/fonts/roboto</dir>
  <dir>/usr/share/fonts/tibt-jomolhari</dir>
  <!-- Set preference for Noto, Droid and Monotype fonts -->
  <alias>
    <family>serif</family>
    <prefer>
      <family>Tinos</family>
      <family>Noto Serif</family>
      <family>Noto Serif CJK SC</family>
      <family>Noto Naskh Arabic</family>
      <family>Noto Serif Thai</family>
      <family>Noto Serif Armenian</family>
      <family>Noto Serif Georgian</family>
      <family>Noto Serif Devanagari</family>
      <family>Noto Serif Hebrew</family>
      <family>Noto Serif Bangali</family>
      <family>Noto Serif Gujarati</family>
      <family>Noto Serif Kannada</family>
      <family>Noto Serif Malayalam</family>
      <family>Noto Serif Tamil</family>
      <family>Noto Serif Telugu</family>
      <family>Lohit Punjabi</family>
      <family>Lohit Oriya</family>
      <family>Noto Serif Khmer</family>
      <family>Noto Serif Lao</family>
      <family>Noto Serif Ethiopic</family>
      <family>Noto Serif Myanmar</family>
      <family>Noto Serif Sinhala</family>
      <family>Jomolhari</family>
      <family>Noto Color Emoji</family>
      <family>Noto Sans Symbols</family>
      <family>Noto Sans Symbols2</family>
      <family>DejaVu Serif</family>
    </prefer>
  </alias>
  <alias>
    <family>sans-serif</family>
    <prefer>
      <family>Arimo</family>
      <family>Noto Sans</family>
      <family>Noto Sans CJK SC</family>
      <family>Noto Sans Arabic</family>
      <family>Noto Sans Thai</family>
      <family>Noto Sans Devanagari</family>
      <family>Noto Sans Tamil</family>
      <family>Noto Sans Hebrew</family>
      <family>Noto Sans Bengali</family>
      <family>Noto Sans Telugu</family>
      <family>Noto Sans Kannada</family>
      <family>Noto Sans Malayalam</family>
      <family>Noto Sans Gurmukhi</family>
      <family>Noto Sans Gujarati</family>
      <family>Noto Sans Oriya</family>
      <family>Noto Sans Armenian</family>
      <family>Noto Sans Georgian</family>
      <family>Noto Sans Khmer</family>
      <family>Noto Sans Lao</family>
      <family>Noto Sans Ethiopic</family>
      <family>Noto Sans Myanmar</family>
      <family>Noto Sans Sinhala</family>
      <family>Jomolhari</family>
      <family>Noto Sans Coptic</family>
      <family>Noto Sans Deseret</family>
      <family>Noto Sans TaiTham</family>
      <family>Noto Sans CanadianAboriginal</family>
      <family>Noto Sans Yi</family>
      <family>Noto Sans Tifinagh</family>
      <family>Noto Sans Adlam</family>
      <family>Noto Sans Cherokee</family>
      <family>Noto Sans Chakma</family>
      <family>Noto Sans Osage</family>
      <family>Noto Color Emoji</family>
      <family>Noto Sans Symbols</family>
      <family>Noto Sans Symbols2</family>
      <family>DejaVu Sans</family>
    </prefer>
  </alias>
  <alias>
    <family>monospace</family>
    <prefer>
      <family>Cousine</family>
      <family>Noto Sans Mono</family>
      <family>Noto Sans Mono CJK SC</family>
      <family>Noto Naskh Arabic</family>
      <family>Noto Sans Thai</family>
      <family>Noto Sans Devanagari</family>
      <family>Noto Sans Tamil</family>
      <family>Noto Sans Bengali</family>
      <family>Noto Sans Telugu</family>
      <family>Noto Sans Kannada</family>
      <family>Noto Sans Malayalam</family>
      <family>Noto Sans Gurmukhi</family>
      <family>Noto Sans Gujarati</family>
      <family>Noto Sans Oriya</family>
      <family>Noto Sans Armenian</family>
      <family>Noto Sans Georgian</family>
      <family>Noto Sans Ethiopic</family>
      <family>Noto Sans Myanmar</family>
      <family>Noto Sans Sinhala</family>
      <family>Noto Sans Tibetan</family>
      <family>Noto Sans Coptic</family>
      <family>Noto Sans Deseret</family>
      <family>Noto Sans TaiTham</family>
      <family>Noto Sans Cherokee</family>
      <family>Noto Sans Chakma</family>
      <family>Noto Sans Osage</family>
      <family>Noto Color Emoji</family>
      <family>Noto Sans Symbols</family>
      <family>Noto Sans Symbols2</family>
      <family>Droid Sans Fallback</family>
      <family>DejaVu Sans Mono</family>
    </prefer>
  </alias>
  <alias>
    <family>ui-sans</family>
    <prefer>
      <family>Noto Sans UI</family>
      <family>Noto Sans CJK SC</family>
      <family>Noto Naskh Arabic UI</family>
      <family>Noto Sans Thai UI</family>
      <family>Noto Sans Devanagari UI</family>
      <family>Noto Sans Tamil UI</family>
      <family>Noto Sans Hebrew</family>
      <family>Noto Sans Bengali UI</family>
      <family>Noto Sans Telugu UI</family>
      <family>Noto Sans Kannada UI</family>
      <family>Noto Sans Malayalam UI</family>
      <family>Noto Sans Gurmukhi UI</family>
      <family>Noto Sans Gujarati UI</family>
      <family>Noto Sans Oriya UI</family>
      <family>Noto Sans Armenian</family>
      <family>Noto Sans Georgian</family>
      <family>Noto Sans Khmer UI</family>
      <family>Noto Sans Lao UI</family>
      <family>Noto Sans Ethiopic</family>
      <family>Noto Sans Myanmar UI</family>
      <family>Noto Color Emoji</family>
      <family>Noto Symbols</family>
      <family>Droid Sans Fallback</family>
      <family>DejaVu Sans</family>
    </prefer>
  </alias>
 <!-- Set minimum font pixel size for cjk to 14px,
       which is 10.5pt under 96dpi. -->
  <match target="font">
    <test name="lang" compare="contains">
      <string>zh</string>
    </test>
    <test compare="less_eq" name="pixelsize" >
      <int>14</int>
    </test>
    <edit mode="assign" name="pixelsize" >
      <int>14</int>
    </edit>
  </match>
  <!-- TODO(jungshik): use 'OR' operator to turn on BCI on for
      multiple fonts after making sure that it works correctly -->
  <match target="font">
    <!-- Turn on BCI (turn off autohint) for Arimo -->
    <test name="family"><string>Arimo</string></test>
    <edit name="hinting" mode="assign"><bool>true</bool></edit>
    <edit name="hintstyle" mode="assign"><const>hintfull</const></edit>
    <edit name="autohint" mode="assign"><bool>false</bool></edit>
  </match>
  <match target="font">
    <!-- Turn on light autohinting for Chrome Droid Sans -->
    <test name="family"><string>Chrome Droid Sans</string></test>
    <edit name="hinting" mode="assign"><bool>true</bool></edit>
    <edit name="hintstyle" mode="assign"><const>hintslight</const></edit>
    <edit name="autohint" mode="assign"><bool>true</bool></edit>
  </match>
  <match target="font">
    <!-- Turn on BCI (turn off autohint) for Cousine -->
    <test name="family"><string>Cousine</string></test>
    <edit name="hinting" mode="assign"><bool>true</bool></edit>
    <edit name="hintstyle" mode="assign"><const>hintfull</const></edit>
    <edit name="autohint" mode="assign"><bool>false</bool></edit>
  </match>
  <match target="font">
    <!-- Turn on BCI (turn off autohint) for Tinos -->
    <test name="family"><string>Tinos</string></test>
    <edit name="hinting" mode="assign"><bool>true</bool></edit>
    <edit name="hintstyle" mode="assign"><const>hintfull</const></edit>
    <edit name="autohint" mode="assign"><bool>false</bool></edit>
  </match>
  <match target="font">
    <!-- Turn on BCI (turn off autohint) for NanumGothic.
         We don't do that for NanumMyeongjo because somehow
         its BCI hint leads to a very poor rendering with freetype. -->
    <test name="family"><string>NanumGothic</string></test>
    <edit name="hinting" mode="assign"><bool>true</bool></edit>
    <edit name="hintstyle" mode="assign"><const>hintfull</const></edit>
    <edit name="autohint" mode="assign"><bool>false</bool></edit>
  </match>
  <!--  Make Noto Sans CJK JP fonts to aliases of the
        corresponding Windows Japanese fonts -->
  <alias binding="same">
    <family>Noto Sans CJK JP</family>
    <default>
      <family>MS PGothic</family>
    </default>
  </alias>
  <alias binding="same">
    <family>Noto Sans CJK JP</family>
    <default>
      <family>MS Pゴシック</family>
    </default>
  </alias>
  <alias binding="same">
    <family>MS PGothic</family>
    <accept>
      <family>Noto Sans CJK JP</family>
    </accept>
  </alias>
  <alias binding="same">
    <family>MS Pゴシック</family>
    <accept>
      <family>Noto Sans CJK JP</family>
    </accept>
  </alias>
  <alias binding="same">
    <family>Noto Sans Mono CJK JP</family>
    <default>
      <family>MS Gothic</family>
    </default>
  </alias>
  <alias binding="same">
    <family>Noto Sans Mono CJK JP</family>
    <default>
      <family>MS ゴシック</family>
    </default>
  </alias>
  <alias binding="same">
    <family>MS Gothic</family>
    <accept>
      <family>Noto Sans Mono CJK JP</family>
    </accept>
  </alias>
  <alias binding="same">
    <family>MS ゴシック</family>
    <accept>
      <family>Noto Sans Mono CJK JP</family>
    </accept>
  </alias>
  <alias binding="same">
    <family>Noto Serif CJK JP</family>
    <default>
      <family>MS Mincho</family>
    </default>
  </alias>
  <alias binding="same">
    <family>Noto Serif CJK JP</family>
    <default>
      <family>MS 明朝</family>
    </default>
  </alias>
  <alias binding="same">
    <family>MS Mincho</family>
    <accept>
      <family>Noto Serif CJK JP</family>
    </accept>
  </alias>
  <alias binding="same">
    <family>MS 明朝</family>
    <accept>
      <family>Noto Serif CJK JP</family>
    </accept>
  </alias>
  <alias binding="same">
    <family>Noto Serif CJK JP</family>
    <default>
      <family>MS PMincho</family>
    </default>
  </alias>
  <alias binding="same">
    <family>Noto Serif CJK JP</family>
    <default>
      <family>MS P明朝</family>
    </default>
  </alias>
  <alias binding="same">
    <family>MS PMincho</family>
    <accept>
      <family>Noto Serif CJK JP</family>
    </accept>
  </alias>
  <alias binding="same">
    <family>MS P明朝</family>
    <accept>
      <family>Noto Serif CJK JP</family>
    </accept>
  </alias>
  <!-- Aliases for Simplified Chinese Windows fonts -->
  <alias binding="same">
    <family>Noto Serif CJK SC</family>
    <default>
      <family>Simsun</family>
    </default>
  </alias>
  <alias binding="same">
    <family>Noto Serif CJK SC</family>
    <default>
      <family>宋体</family>
    </default>
  </alias>
  <alias binding="same">
    <family>Simsun</family>
    <accept>
    <family>Noto Serif CJK SC</family>
    </accept>
  </alias>
  <alias binding="same">
    <family>宋体</family>
    <accept>
    <family>Noto Serif CJK SC</family>
    </accept>
  </alias>
  <alias binding="same">
    <family>Noto Serif CJK SC</family>
    <default>
      <family>NSimsun</family>
    </default>
  </alias>
  <alias binding="same">
    <family>Noto Serif CJK SC</family>
    <default>
      <family>新宋体</family>
    </default>
  </alias>
  <alias binding="same">
    <family>NSimsun</family>
    <accept>
    <family>Noto Serif CJK SC</family>
    </accept>
  </alias>
  <alias binding="same">
    <family>新宋体</family>
    <accept>
    <family>Noto Serif CJK SC</family>
    </accept>
  </alias>
  <alias binding="same">
    <family>Noto Sans CJK SC</family>
    <default>
      <family>SimHei</family>
    </default>
  </alias>
  <alias binding="same">
    <family>Noto Sans CJK SC</family>
    <default>
      <family>黑体</family>
    </default>
  </alias>
  <alias binding="same">
    <family>SimHei</family>
    <accept>
      <family>Noto Sans CJK SC</family>
    </accept>
  </alias>
  <alias binding="same">
    <family>黑体</family>
    <accept>
      <family>Noto Sans CJK SC</family>
    </accept>
  </alias>
  <!-- Aliases for Traditional Chinese Windows fonts. -->
  <alias binding="same">
    <family>Noto Serif CJK TC</family>
    <default>
      <family>PMingLiU</family>
    </default>
  </alias>
  <alias binding="same">
    <family>Noto Serif CJK TC</family>
    <default>
      <family>PMingLiU_HKSCS</family>
    </default>
  </alias>
  <alias binding="same">
    <family>Noto Serif CJK TC</family>
    <default>
      <family>新細明體</family>
    </default>
  </alias>
  <alias binding="same">
    <family>Noto Serif CJK TC</family>
    <default>
      <family>新細明體_HKSCS</family>
    </default>
  </alias>
  <alias binding="same">
    <family>PMingLiU</family>
    <accept>
    <family>Noto Serif CJK TC</family>
    </accept>
  </alias>
  <alias binding="same">
    <family>PMingLiU_HKSCS</family>
    <accept>
    <family>Noto Serif CJK TC</family>
    </accept>
  </alias>
  <alias binding="same">
    <family>新細明體</family>
    <accept>
    <family>Noto Serif CJK TC</family>
    </accept>
  </alias>
  <alias binding="same">
    <family>新細明體_HKSCS</family>
    <accept>
    <family>Noto Serif CJK TC</family>
    </accept>
  </alias>
  <alias binding="same">
    <family>Noto Serif CJK TC</family>
    <default>
      <family>MingLiU</family>
    </default>
  </alias>
  <alias binding="same">
    <family>Noto Serif CJK TC</family>
    <default>
      <family>MingLiU_HKSCS</family>
    </default>
  </alias>
  <alias binding="same">
    <family>Noto Serif CJK TC</family>
    <default>
      <family>細明體</family>
    </default>
  </alias>
  <alias binding="same">
    <family>Noto Serif CJK TC</family>
    <default>
      <family>細明體_HKSCS</family>
    </default>
  </alias>
  <alias binding="same">
    <family>MingLiU</family>
    <accept>
    <family>Noto Serif CJK TC</family>
    </accept>
  </alias>
  <alias binding="same">
    <family>MingLiU_HKSCS</family>
    <accept>
    <family>Noto Serif CJK TC</family>
    </accept>
  </alias>
  <alias binding="same">
    <family>細明體</family>
    <accept>
    <family>Noto Serif CJK TC</family>
    </accept>
  </alias>
  <alias binding="same">
    <family>細明體_HKSCS</family>
    <accept>
    <family>Noto Serif CJK TC</family>
    </accept>
  </alias>
  <!-- Map Caladea (metric compaitble with Cambria) to Cambria -->
  <alias binding="same">
    <family>Caladea</family>
    <default>
      <family>Cambria</family>
    </default>
  </alias>
  <alias binding="same">
    <family>Cambria</family>
    <accept>
      <family>Caladea</family>
    </accept>
  </alias>
  <!-- Map Carlito (metric compaitble with Calibri) to Calibri -->
  <alias binding="same">
    <family>Carlito</family>
    <default>
      <family>Calibri</family>
    </default>
  </alias>
  <alias binding="same">
    <family>Calibri</family>
    <accept>
      <family>Carlito</family>
    </accept>
  </alias>
  <!-- Aliases for Korean Windows fonts.
       TODO(jungshik): Shuld we get NanumGothic aliased to
       Windows fonts with binding=same?
  -->
  <alias>
    <family>Gulim</family>
    <accept>
      <family>NanumGothic</family>
    </accept>
  </alias>
  <alias>
    <family>굴림</family>
    <accept>
      <family>NanumGothic</family>
    </accept>
  </alias>
  <alias>
    <family>굴림체</family>
    <accept>
      <family>NanumGothic</family>
    </accept>
  </alias>
  <alias>
    <family>Gulimche</family>
    <accept>
      <family>NanumGothic</family>
    </accept>
  </alias>
  <alias>
    <family>Dotum</family>
    <accept>
      <family>NanumGothic</family>
    </accept>
  </alias>
  <alias>
    <family>돋움</family>
    <accept>
      <family>Noto Sans CJK KR</family>
    </accept>
  </alias>
  <alias>
    <family>Dotumche</family>
    <accept>
      <family>Noto Sans Mono CJK KR</family>
    </accept>
  </alias>
  <alias>
    <family>돋움체</family>
    <accept>
      <family>Noto Sans Mono CJK KR</family>
    </accept>
  </alias>
  <alias>
    <family>MalgunGothic</family>
    <accept>
      <family>NanumGothic</family>
    </accept>
  </alias>
  <alias>
    <family>맑은고딕</family>
    <accept>
      <family>NanumGothic</family>
    </accept>
  </alias>
  <alias>
    <family>Batang</family>
    <accept>
      <family>Noto Serif CJK KR</family>
    </accept>
  </alias>
  <alias>
    <family>바탕</family>
    <accept>
      <family>Noto Serif CJK KR</family>
    </accept>
  </alias>
  <alias>
    <family>Batangche</family>
    <accept>
      <family>Noto Serif CJK KR</family>
    </accept>
  </alias>
  <alias>
    <family>바탕체</family>
    <accept>
      <family>Noto Serif CJK KR</family>
    </accept>
  </alias>
  <!-- Preferred fonts for Simplified Chinese -->
  <match target="pattern">
    <test name="lang" compare="contains">
      <string>zh-CN</string>
    </test>
    <test name="family">
      <string>serif</string>
    </test>
    <edit name="family" mode="prepend" binding="strong">
      <string>Noto Serif CJK SC</string>
    </edit>
  </match>
  <match target="pattern">
    <test name="lang" compare="contains">
      <string>zh-CN</string>
    </test>
    <test name="family">
      <string>sans-serif</string>
    </test>
    <edit name="family" mode="prepend" binding="strong">
      <string>Noto Sans CJK SC</string>
    </edit>
  </match>
  <match target="pattern">
    <test name="lang" compare="contains">
      <string>zh-CN</string>
    </test>
    <test name="family">
      <string>monospace</string>
    </test>
    <edit name="family" mode="prepend" binding="strong">
      <string>Noto Sans Mono CJK SC</string>
    </edit>
  </match>
  <!-- Preferred fonts for Traditional Chinese -->
  <match target="pattern">
    <test name="lang" compare="contains">
      <string>zh-TW</string>
    </test>
    <test name="family">
      <string>serif</string>
    </test>
    <edit name="family" mode="prepend" binding="strong">
      <string>Noto Serif CJK TC</string>
    </edit>
  </match>
  <match target="pattern">
    <test name="lang" compare="contains">
      <string>zh-TW</string>
    </test>
    <test name="family">
      <string>sans-serif</string>
    </test>
    <edit name="family" mode="prepend" binding="strong">
      <string>Noto Sans CJK TC</string>
    </edit>
  </match>
  <match target="pattern">
    <test name="lang" compare="contains">
      <string>zh-TW</string>
    </test>
    <test name="family">
      <string>monospace</string>
    </test>
    <edit name="family" mode="prepend" binding="strong">
      <string>Noto Sans Mono CJK TC</string>
    </edit>
  </match>
  <!-- Preferred fonts for Japanese -->
  <match target="pattern">
    <test name="lang" compare="contains">
      <string>ja</string>
    </test>
    <test name="family">
      <string>serif</string>
    </test>
    <edit name="family" mode="prepend" binding="strong">
      <string>Noto Serif CJK JP</string>
    </edit>
  </match>
  <match target="pattern">
    <test name="lang" compare="contains">
      <string>ja</string>
    </test>
    <test name="family">
      <string>sans-serif</string>
    </test>
    <edit name="family" mode="prepend" binding="strong">
      <string>Noto Sans CJK JP</string>
    </edit>
  </match>
  <match target="pattern">
    <test name="lang" compare="contains">
      <string>ja</string>
    </test>
    <test name="family">
      <string>monospace</string>
    </test>
    <edit name="family" mode="prepend" binding="strong">
      <string>Noto Sans Mono CJK JP</string>
    </edit>
  </match>
  <!-- Preferred fonts for Korean -->
  <match target="pattern">
    <test name="lang" compare="contains">
      <string>ko</string>
    </test>
    <test name="family">
      <string>serif</string>
    </test>
    <edit name="family" mode="prepend" binding="strong">
      <string>Noto Serif CJK KR</string>
    </edit>
  </match>
  <match target="pattern">
    <test name="lang" compare="contains">
      <string>ko</string>
    </test>
    <test name="family">
      <string>sans-serif</string>
    </test>
    <edit name="family" mode="prepend" binding="strong">
      <string>Noto Sans CJK KR</string>
    </edit>
  </match>
  <match target="pattern">
    <test name="lang" compare="contains">
      <string>ko</string>
    </test>
    <test name="family">
      <string>monospace</string>
    </test>
    <edit name="family" mode="prepend" binding="strong">
      <string>Noto Sans Mono CJK KR</string>
    </edit>
  </match>
  <!-- TODO(jshin): Once fontconfig has a better way of OR'ing tests,
       switch to that method. See
       https://bugs.freedesktop.org/show_bug.cgi?id=82582
  -->
  <match target="font">
    <edit mode="assign" name="noto_cjk"><bool>true</bool></edit>
  </match>
  <match target="font">
    <test name="family" qual="all" compare="not_eq">
      <string>Noto Sans CJK KR</string>
    </test>
    <test name="family" qual="all" compare="not_eq">
      <string>Noto Sans CJK SC</string>
    </test>
    <test name="family" qual="all" compare="not_eq">
      <string>Noto Sans CJK JP</string>
    </test>
    <test name="family" qual="all" compare="not_eq">
      <string>Noto Sans CJK TC</string>
    </test>
    <test name="family" qual="all" compare="not_eq">
      <string>Noto Sans Mono CJK KR</string>
    </test>
    <test name="family" qual="all" compare="not_eq">
      <string>Noto Sans Mono CJK SC</string>
    </test>
    <test name="family" qual="all" compare="not_eq">
      <string>Noto Sans Mono CJK JP</string>
    </test>
    <test name="family" qual="all" compare="not_eq">
      <string>Noto Sans Mono CJK TC</string>
    </test>
    <test name="family" qual="all" compare="not_eq">
      <string>Noto Serif CJK KR</string>
    </test>
    <test name="family" qual="all" compare="not_eq">
      <string>Noto Serif CJK SC</string>
    </test>
    <test name="family" qual="all" compare="not_eq">
      <string>Noto Serif CJK JP</string>
    </test>
    <test name="family" qual="all" compare="not_eq">
      <string>Noto Serif CJK TC</string>
    </test>
    <edit mode="assign" name="noto_cjk"><bool>false</bool></edit>
  </match>
  <match target="font">
    <test name="noto_cjk"><bool>true</bool></test>
    <!-- Turn on the native CFF hint -->
    <!-- Turn off sub-pixel anti-aliasing because Adobe's CFF
	 rasterizer is for gray-scale rendering. -->
    <edit name="hinting" mode="assign"><bool>true</bool></edit>
    <edit name="autohint" mode="assign"><bool>false</bool></edit>
    <edit name="hintstyle" mode="assign"><const>hintslight</const></edit>
    <edit name="antialias" mode="assign"><bool>true</bool></edit>
    <edit name="rgba" mode="assign"><const>none</const></edit>
  </match>
  <match target="font">
    <edit mode="assign" name="noto_hinted"><bool>true</bool></edit>
  </match>
  <match target="font">
    <test name="family" qual="all" compare="not_eq">
      <string>Noto Sans Thai</string>
    </test>
    <test name="family" qual="all" compare="not_eq">
      <string>Noto Sans Thai UI</string>
    </test>
    <test name="family" qual="all" compare="not_eq">
      <string>Noto Serif Thai</string>
    </test>
    <test name="family" qual="all" compare="not_eq">
      <string>Noto Serif Thai UI</string>
    </test>
    <test name="family" qual="all" compare="not_eq">
      <string>Noto Sans Devanagari</string>
    </test>
    <test name="family" qual="all" compare="not_eq">
      <string>Noto Sans Devanagari UI</string>
    </test>
    <test name="family" qual="all" compare="not_eq">
      <string>Noto Sans Tamil</string>
    </test>
    <test name="family" qual="all" compare="not_eq">
      <string>Noto Sans Tamil UI</string>
    </test>
    <test name="family" qual="all" compare="not_eq">
      <string>Noto Serif Tamil</string>
    </test>
    <test name="family" qual="all" compare="not_eq">
      <string>Noto Sans Gujarati</string>
    </test>
    <test name="family" qual="all" compare="not_eq">
      <string>Noto Sans Gujarati UI</string>
    </test>
    <test name="family" qual="all" compare="not_eq">
      <string>Noto Sans Gurumukhi</string>
    </test>
    <test name="family" qual="all" compare="not_eq">
      <string>Noto Serif Gujarati</string>
    </test>
    <test name="family" qual="all" compare="not_eq">
      <string>Noto Sans Gurumukhi UI</string>
    </test>
    <test name="family" qual="all" compare="not_eq">
      <string>Noto Sans Kannada</string>
    </test>
    <test name="family" qual="all" compare="not_eq">
      <string>Noto Sans Kannada UI</string>
    </test>
    <test name="family" qual="all" compare="not_eq">
      <string>Noto Serif Kannada</string>
    </test>
    <test name="family" qual="all" compare="not_eq">
      <string>Noto Sans Telugu</string>
    </test>
    <test name="family" qual="all" compare="not_eq">
      <string>Noto Sans Telugu UI</string>
    </test>
    <test name="family" qual="all" compare="not_eq">
      <string>Noto Serif Telugu</string>
    </test>
    <test name="family" qual="all" compare="not_eq">
      <string>Noto Sans Bengali</string>
    </test>
    <test name="family" qual="all" compare="not_eq">
      <string>Noto Sans Bengali UI</string>
    </test>
    <test name="family" qual="all" compare="not_eq">
      <string>Noto Serif Bengali</string>
    </test>
    <test name="family" qual="all" compare="not_eq">
      <string>Noto Sans Malayalam</string>
    </test>
    <test name="family" qual="all" compare="not_eq">
      <string>Noto Sans Malayalam UI</string>
    </test>
    <test name="family" qual="all" compare="not_eq">
      <string>Noto Serif Malayalam</string>
    </test>
    <test name="family" qual="all" compare="not_eq">
      <string>Noto Kufi Arabic</string>
    </test>
    <test name="family" qual="all" compare="not_eq">
      <string>Noto Naskh Arabic</string>
    </test>
    <test name="family" qual="all" compare="not_eq">
      <string>Noto Naskh Arabic UI</string>
    </test>
    <test name="family" qual="all" compare="not_eq">
      <string>Noto Sans Armenian</string>
    </test>
    <test name="family" qual="all" compare="not_eq">
      <string>Noto Serif Armenian</string>
    </test>
    <test name="family" qual="all" compare="not_eq">
      <string>Noto Sans Georgian</string>
    </test>
    <test name="family" qual="all" compare="not_eq">
      <string>Noto Serif Georgian</string>
    </test>
    <test name="family" qual="all" compare="not_eq">
      <string>Noto Sans Hebrew</string>
    </test>
    <test name="family" qual="all" compare="not_eq">
      <string>Noto Serif Hebrew</string>
    </test>
    <test name="family" qual="all" compare="not_eq">
      <string>Noto Sans Ethiopic</string>
    </test>
    <test name="family" qual="all" compare="not_eq">
      <string>Noto Sans Khmer</string>
    </test>
    <test name="family" qual="all" compare="not_eq">
      <string>Noto Sans Khmer UI</string>
    </test>
    <test name="family" qual="all" compare="not_eq">
      <string>Noto Serif Khmer</string>
    </test>
    <test name="family" qual="all" compare="not_eq">
      <string>Noto Sans Lao</string>
    </test>
    <test name="family" qual="all" compare="not_eq">
      <string>Noto Sans Lao UI</string>
    </test>
    <test name="family" qual="all" compare="not_eq">
      <string>Noto Serif Lao</string>
    </test>
    <test name="family" qual="all" compare="not_eq">
      <string>Noto Sans Sinhala</string>
    </test>
    <test name="family" qual="all" compare="not_eq">
      <string>Noto Sans Myanmar</string>
    </test>
    <test name="family" qual="all" compare="not_eq">
      <string>Noto Sans Myanmar UI</string>
    </test>
    <test name="family" qual="all" compare="not_eq">
      <string>Noto Sans Tibetan</string>
    </test>
    <edit mode="assign" name="noto_hinted"><bool>false</bool></edit>
  </match>
  <match target="font">
    <test name="noto_hinted"><bool>true</bool></test>
    <edit name="hinting" mode="assign"><bool>true</bool></edit>
    <edit name="autohint" mode="assign"><bool>false</bool></edit>
    <edit name="hintstyle" mode="assign"><const>hintfull</const></edit>
    <edit name="antialias" mode="assign"><bool>true</bool></edit>
  </match>
  <!-- Roboto is BCI-hinted for widely used LGC characters -->
  <match target="font">
    <test name="family"><string>Roboto</string></test>
    <edit name="hinting" mode="assign"><bool>true</bool></edit>
    <edit name="autohint" mode="assign"><bool>false</bool></edit>
    <edit name="hintstyle" mode="assign"><const>hintfull</const></edit>
    <edit name="antialias" mode="assign"><bool>true</bool></edit>
  </match>
  <!-- Treat Noto Color Emoji as scalable. It's scalable even though
       it's a bitmap font. -->
  <match target="scan">
    <test name="family"><string>Noto Color Emoji</string></test>
    <edit name="scalable" mode="assign"><bool>true</bool></edit>
  </match>

</fontconfig>

Reply to: