8

I've installed two Chinese fonts from the repos: UMing and UKai. I like better how UKai looks, but the default font picked by Ubuntu (when selecting a non-Chinese font) is UMing. For example, my desktop font is Droid Sans, but the Chinese caracters are picked from UMing. How can I choose UKai for the default Chinese font?

P.S. If I just change the desktop font to UKai, I won't get the Droid Sans latin characters, so that's not a solution.

2 Answers 2

6

Unfortunately, there isn't a GUI configuration editor for you to use to deal with this problem under Ubuntu. The GUI font selectors under Gnome or Unity only allows you to select one font per option, while the Font Manager allows you to enable/disable fonts only.

But, as is the typical case of a Linux system, you actually can configure this, only you'll need to dig up the configuration option from lots of documentations.

Now, straight to the point: you'll need to edit/create the file ~/.fonts.conf.

  • The file does not exist by default. However, if you've used things like Font Manager, then there might be a placeholder file at ~/.fonts.conf telling you to use ~/.config/font-manager/local.conf instead, in which case you should create the latter.
  • You should first open ~/.fonts.conf to check.
  • To check if the file exists, a simple way would be to open the file manager, go to "Home", check "View->Show Hidden Files" and see if you can find .fonts.conf.

Once you've created the file, put the following code in it:

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
    <alias>
        <family>sans-serif</family>
        <prefer>
            <family>Droid Sans</family>
            <family>UKai</family>
        </prefer>
    </alias>
</fontconfig>

What it does is create a font resolution fallback list. When a program is requesting a sans-serif font (most GUI fonts are sans-serif by default), the system would try to use the first font (Droid Sans) for a character. If the font does not support that character, the second (UKai) will be used. I'm not sure if specifying Droid Sans as the first preference has any significance, but you might as well keep it, just to be safe.

Note also that you'll need to logout of your account and login again to see the effect.

For me, the effect is immediate after logging out and logging in again, and the font choice works system-wide.

The above answer is based on a related blog post: Fedora 中文字体设置

Edit

There is also a more comprehensive configuration sample under /etc/fonts/conf.avail or /etc/fonts/conf.d (I don't remember exactly which) whose name contains zh-CN. Inside is a set of configuration used for adjusting the exact fallback font order, which is far more suitable than the above method. Just copy the content in the file into ~/.fonts.conf or ~/.config/font-manager/local.conf and change the ordering of fonts to suit your needs.

1
  • I found this "more comprehensive configuration sample" at /etc/fonts/conf.d/65-nonlatin.conf (in Debian 10) Feb 5, 2021 at 1:05
1

Since Ubuntu has changed a lot (with latest version of 18.0.4 lts). I have found this blog (in Chinese, assume you are a Chinese Reader, otherwise why would you be so fuzz about Chinese, haha).

Basically it copy some windows font from the sub system, and using

sudo mkfontscale
sudo mkfontdir 
sudo fc-cache -fv 

to update create a ubuntu-recognizable font files and load them into system cache.

Finally with the help of unity tweak tool to change the system font appearance.

You might encounter some The following schema is missing issue.

Hope this answer could solve the problem for you guys. And may be in following release of Ubuntu they could pick some nicer fonts.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .