Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Qt Use Multiple Fonts at the Same Time

Tags:

embedded

fonts

qt

I have three fonts i want to use in my software:

  • FontA: contains Latin, Greek, Cryllic characters
  • FontB: contains Korean characters
  • FontC: contains Japanese, Chinese characters

These fonts have no overlap.

I want to setup my application such that all of these fonts are used at once since characters from different languages may appear in the same context in my software.

If a character is found in FontA, use it. Otherwise, look at FontB, if found use it. Look at FontC as last resort, if found, use it, otherwise do nothing.

How can i setup Qt to function that way?

(My environment is embedded linux, Qt 4.8)

P.S.: I tried QFont::insertSubstitution, but it is used in case FontA is not installed on the system so that doesn't really help in my case.
P.P.S.: Merging these fonts into a single font is out of the question since they are proprietry fonts.

like image 774
erelender Avatar asked Nov 15 '13 13:11

erelender


2 Answers

Like others said – if your QT version uses fontconfig do it through fontconfig, its sole function is to manage smart font substitions. And if your version does not use fontconfig you're out of luck since I doubt anyone invested much time in getting it to work now that fontconfig is widely available.

like image 181
nim Avatar answered Nov 03 '22 23:11

nim


Try to use this approach: How to (properly) output multilingual text in Qt-Embedded?

It works with lots of languages simultaneously (Cyrillic, European, Thai, Japanese, etc).

  • Put Droid Fonts (not necessary, it should work with other fonts too) into a directory where Qt can find it,
  • Export special environment variable: export QWS_NO_SHARE_FONTS=1
  • Run your application with -fn "Droid Sans" parameter
like image 30
qehgt Avatar answered Nov 03 '22 23:11

qehgt