@jcoffman Is it possible to correct the problem by using native fonts via modifying fontconfig.properties.src
located in C:\Program Files\Inductive Automation\Ignition\lib\runtime\jre-win\lib
and jre-win.zip
? I think copying Noto fonts is too heavy. The font file is about 130MB: https://www.google.com/get/noto/#serif-hans
According to the fontconfig.properties.src
, which is java’s font configuration file:
allfonts.chinese-ms936=SimSun
allfonts.chinese-ms936-extb=SimSun-ExtB
allfonts.chinese-gb18030=SimSun-18030
allfonts.chinese-gb18030-extb=SimSun-ExtB
allfonts.chinese-hkscs=MingLiU_HKSCS
allfonts.chinese-ms950-extb=MingLiU-ExtB
# ...
# ...
filename.SimSun=SIMSUN.TTC
filename.SimSun-18030=SIMSUN18030.TTC
filename.SimSun-ExtB=SIMSUNB.TTF
Simsun.TTC
is an old font delivered by microsoft with its windows OS. The detail is at https://docs.microsoft.com/en-us/typography/font-list/simsun So I think we may not need to download new fonts.
By the way. I am using Chinese version of windows 10 64bit (10.0.18362.239) and igntion 8.0.11 (b2020041411). I am still experience the same Chinese font problem (blank square) for both Designer
and Client
.
I found there are three JREs on my computer:
C:\Program Files\Inductive Automation\Ignition\lib\runtime\jre-win
C:\Users\cheng\AppData\Roaming\Inductive Automation\Designer Launcher\jre
C:\Users\cheng\AppData\Roaming\Inductive Automation\Vision Client Launcher\jre
And one jre-win.zip
: C:\Program Files\Inductive Automation\Ignition\lib\runtime\jre-win.zip
I also noticed that there is no fonts
folder in Designer Launcher
and Vision Client Launcher
JREs. I do not know where the Designer Launcher
JRE is from. It seems it is not the same as jre-win.zip
.
If I modify the font to be 宋体
, aka Simsun
, it works well in vision window in Designer and launched client. But the words in right click menu is still not working.
You can definitely use any locally installed font. As far as the right click menu i’m not sure, depending on where it is it may be a monospace font or different stroke style?
I can look into mapping this as the default as long as it is truly available on the default OS installs listed when we do the next bump in the bundled JRE. The launchers should have these fonts as well, what version of the launcher are you using?
I am using the Launcher downloaded from ignition gateway version 8.0.11 (b2020041411)
.
Here are some examples of the button text problem in Designer
Dialog window for export file
Right click menu
Here is some examples in vision client
Datetime text is wrong and some translate error in log viewer
I think the JRE detects it is running in win10 with Chinese locale, so it may do some automatic localization. For example, OK
is translated to 确定
. Then some font problem happens and it shows blank box.
I am using version 1.0.11.
Ok yeah, most of these issues are the font mapping which is something that can be handled on the next bump to the bundled JRE (probably 8.0.13). the right click menu is occurring due to the locale of the system. This can be changed in the launcher for that project if you desire by adding the vm arguments -Duser.language=en;-Duser.country=us
The changes to the font configuration that you mentioned should solve this as well
I tried vm arguments. It does not work for me. I also tried to use -Duser.language=zh;-Duser.country=cn
. The java logical font dialog
does not fallback to physical font simsun.ttc
. I do not know why. It seems that there are several level of fallback mechanism.
One is java font fallback.
Another one is windows font technology
I am not very sure how it works. But it does not work correctly.
Besides, I noticed the Client Launcher's JRE version is Zulu11.37+18-SA (build 11.0.6+10-LTS)
.
The bump in version i referenced is the Ignition version (8.0.13) that will have the next JVM upgrade (v 11.0.7).
Until then, you could try using this fontconfig fontconfig.properties (12.3 KB)
OK, the next ignition version (8.0.13) may include JVM v11.0.7, right?
But I am still not very sure how would you fix this problem. The fontconfig.properties
just used noto
font families to replace original ones such as New Times Roman
and Arial
. How did it related to solving CJK missing glyph
problems if CJK noto fonts is not actually included in ignition and launcher distribution.
In windows, missing glyph
is handled at two levels:
-
font fallback
, which is controlled by application;
-
font linking
, which is controlled by OS itself.
I think the problem should be solved in the first level.
I expect the problem can be solve either way below:
- Using windows fonts shipped with OS. However, some fonts might be optional in
features on demand
.
- Offer some option to download additional fonts like
noto CJK
to make it right.
Besides. I am not sure how to place the fontconfig.properties
file you attached. According to java document about fontconfigure, in windows OS, the fontconfig.fbc
might precede fontconfig.properties
file. And there are many JRE copies on my computer which is very confusing.
- ignition JRE
- designer launcher JRE
- client launcher JRE. (I tried with JRE version 11.0.6, it does not work for me.)
-
.igntion\cache\resources\runtimes\11.0.6
JRE
And in the task manager
, there is a Zulu platform
. I am not sure what it is. It seems launching some client remotely according to its commandline
.
The fontconfig.properties file in my previous post maps the logical fonts to the windows included CJK fonts (identical to the default fontconfig.properties file that is included with the JRE in its src
form, I just brought in those values to our fontconfig.properties). The noto fonts are there still but will fallback to OS default fonts for CJK glyphs.
All the bundled JRE’s will receive this file when the changes get brought into the code base along with the new JRE (11.0.7). By my estimation this will be Ignition version 8.0.13.
Now for some background:
This all came about because the lucida fonts were removed from the JDK due to licensing issues after java 1.8. This is still an ongoing issue but we have handled the change extremely well considering that without bundling these fonts and providing our own custom fontconfig.properties file many languages would simply be unsupported.
Azul provides a compatibility pack to assist with this but its not licensed for redistribution due to the underlying restrictions on the lucida fonts. Eventually this will likely be fully addressed in the OpenJDK but as of right now, we cover a HUGE amount of languages with the current configurations using just the bundled fonts and standard OS defaults:
(I have highlighted the additions added with the fontconfig.properties file I uploaded)
fonti18n.zip (58.0 KB)
You can observe with the provided project export that these characters originally don’t appear with the existing configuration. Once you replace the fontconfig.properties file in %USER_HOME%/.ignition/cache/runtimes/11.0.6/conf/fonts
with the one I provided you should see those characters appear unless you are in a non-standard install of windows. In that case you will have to install the fonts listed in that file.
P.S. There is a ticket open to add the ability to add and adjust these font configurations more easily on the gateway (currently, the JREs are there under lib/runtime so you can do whatever you like with them) which clients will pull and update on launch to minimize any headache of dealing with this on the client side, but there hasn’t been a huge push to implement at this time because our current setup handles things quite nicely.
2 Likes
Thanks a lot. It works for me!
I still have a little question about JVM execution mechanism: why fontconfig.properties
file works in %USER_HOME%/.ignition/cache/runtimes/11.0.6/conf/fonts
rather than %USER_HOME%/.ignition/cache/runtimes/11.0.6/lib
. I thought it should be placed there.
1 Like
conf
is the first directory that is searched for fontconfig files first followed by the lib
dir. If I recall correctly a future release is going to look exclusively at conf but I can’t find the release note that mentions that right now.
1 Like
I found the java document about the configuration file behavior:
`/jdk-interim.update.patch.jdk/conf`
The `.properties` , `.policy` , and other configuration files intended to be edited by developers, deployers, and end users.
`/jdk-interim.update.patch.jdk/lib`
The private implementation details of the runtime system. These files are not intended for external use and must not be modified.
1 Like
Our OEM Linux platform has the gateway running 7.9.13 and I am having troubles with Korean fonts. Can I use this fontconfig.properties file to solve my issues and where do I place it?
Hi @weertske,
Yes you can, The fontconfig.properties file exists within your java’s conf/fonts
directory. This will depend on wherever you have java installed on that system since we do not bundle java with the gateway/clients in the same way. The one exception is if you are using the NCL, which would have this same directory under the jre
directory next to the NCL executable (not the shortcut)
Hope that help,
Jonathan C
When translation manager is used to translate the header of power table, it shows garbled code. The data of power table is bound with SQL query. However, when I manually add the column of data, it can be translated normally. How should this problem be solved?