Guild icon
DDraceNetwork
Development / developer
Development discussion. Logged to https://ddnet.tw/irclogs/ Connected with DDNet's IRC channel, Matrix room and GitHub repositories — IRC: #ddnet on Quakenet | Matrix: #ddnet-developer:matrix.org GitHub: https://github.com/ddnet
Between 2020-08-20 00:00:00Z and 2020-08-21 00:00:00Z
Avatar
@Ravie that looks great. thanks for drawing it so quickly, even 🙂
Avatar
7c65b89 Add bomb skin (by Ravie) - def- 60b7f84 Merge #2611 - bors[bot]
Avatar
by the way, I didn't make kitty_x_ninja
Avatar
Would it be much work to add proper tiles? We have buggy speeders, buggy stoppers, buggy doors, buggy shotgun bullets, buggy death tiles, buggy idk how to call them blue towers that shoot at you. I mean at some point it's hard to make proper interesting parts, if all the tiles don't work correctly. We need a discussion about what would be useful first. On my most recent map i realised, that not buggy tiles could help at mapping. (also konsti just don't talk about this, we can't stay in 2010 forever) (edited)
Avatar
It's not that hard to fix all these tiles, but it would break a lot of maps. There is just no point in further discussing it, since that would just lead to endless crying from some people.
Avatar
like with HT, give us new tiles to work with and keep the old ones
Avatar
With enough speed you can just bug through doors. These doors don't help at all xD they are never closed.
Avatar
The old (so far, current) ones, just like old HT could be marked with outdated label in entities the same way it's marked on https://github.com/ddnet/ddnet/blob/master/data/editor/entities/FNG.png (bottom left), and I guess that would be good idea - not breaking old maps while finally having properly working new replacements btw Welf, those are called laser/plasma turrets
DDraceNetwork, a cooperative racing mod of Teeworlds - ddnet/ddnet
04:54
and about the doors - I don't remember last time I went for switches to open doors on Kobra map, just ez jetpack speed thru them, or in the latter part open half and bug thru them while going at 45°
Avatar
pinged 🤔
Avatar
@Soreu Thanks.Sorry for ping to
Avatar
Currently fails with "error loading glyph" on the fallback font Merging with fontforge had problems, for example for Beijing
Avatar
anyone else want to try merging these 2 fonts? chn3 beijing fails to render
07:37
should be a bit easier than handling 2 fonts in code
Avatar
@deen i can tell u why ur pr fails
07:47
but can't help you with merging font files xD
Avatar
@deen wrote on github in case im not here soon
Avatar
8a2009f Update chinese translation - TsFreddie 7f5a972 update reviewed strings from Dan_cao - TsFreddie f8098ba Merge #2613 - bors[bot]
Avatar
there's a way to zoom in and out?
Avatar
yeah, settings -> controls zoom in, zoom out
Avatar
ok thanks
08:57
i see one chinese character now
08:57
justatest
Avatar
@Ryozuki i'm trying to fix that, see my PR
09:00
but fontforge is not cooperating, and my code has some bugs where the wrong font is used ingame (but menus work now)
Avatar
@deen line 1079
09:02
Wrong init
09:03
thanks Jupstar
Avatar
did you manage to merge the fonts?
Avatar
WenQuanYiMicroHei: After merging: FontForge version: git from today: 829d9e4 I expect to see all characters from WenQuanYiMicroHei in the merged font, instead some are missing for example U+5317. S...
Avatar
watermeron if we started using fallback font. what are the chance that we can use a ttc with variants instead of just wenquanyi.
Avatar
ttc?
Avatar
something like Source Hans CJK
Avatar
does that mean different japanese/chinese/traditional chinese chars?
Avatar
ah yea, so we need to use font fallback anyway?
Avatar
a single unicode char should look different under different language
Avatar
yep
Avatar
WenQuanYi is sc only, not that I would be the one complaining lol
Avatar
@TsFreddie I'm not sure. would be need just one ttc file? how would we tell the difference between japanese/chinese/traditional chinese?
09:09
it is basically multiple fonts combined
09:09
but i'm not sure how you can get different faces in freetype2
Avatar
first approximation could be by using the user's own locale
09:10
second one would be sending it over the network so their chat messages/name also renders correctly
Avatar
that seems horrible
Avatar
an extra parameter in the language file would do i think
Avatar
that's the reality of unicode unfortunately
Avatar
yeah, i don't like it. text is hard...
Avatar
what about the pango library
09:11
doesnt it make it easier
09:13
well i guess its not windows
Avatar
I'll be fine with SC only tho. but anyway WenQuanYi lacks some of the korean characters. Only use one variant of Source Han will display CJK just fine, only the glyph might look weird to some people.
Avatar
SC?
Avatar
simplified chinese*
09:13
which is we were using with WenQuanYi.
Avatar
@TsFreddie is this looking ok?
Avatar
Maybe changing that 0 will do the trick?
09:16
not bad
Avatar
Can you tell if it is ok for korean?
Avatar
i think it is fine
09:17
they can only run into missing char if they chat i think. the UI is fine.
Avatar
but the SourceHanSansSC-Normal is quite a bit bigger
09:17
17 MB
Avatar
well they exhausted all 65536 slots of glyphs that's why.
Avatar
@TsFreddie unicode contains 1114111 slots
Avatar
and that's still not all of CJK chars
Avatar
but ttf can't contain more than 65536 glyphs
Avatar
yeah, it is impossible to fit everything into one font
Avatar
oof
Avatar
i cant imagine the work on making a font like that
Avatar
that's why the Super fonts like HanaZono use two or even three fonts
09:19
with multiple stages of fallbacks lol
09:19
65535 is plenty enough for daily usage tho
09:21
is it possible to delete all glyphs that is already in Deja Vu to reduce the size? I'm not super familiar with font editing.
Avatar
heh, probably, but won't save much I guess, at most 1 MB
09:26
doens't seem worth the manual effort
Avatar
@TsFreddie you have a github account? can you test https://github.com/ddnet/ddnet/suites/1074776353/artifacts/14717471 ?
Avatar
what do you want me to test
Avatar
the new font
09:35
it should work and look fine with chinese, korean
Avatar
okay i'll take a look
Avatar
Why my ddnet create 41934893189041890 unnecessary cfg ?
09:40
Avatar
@Plant this indicates an error in renaming them to settings_ddnet.cfg, probably missing file permissions
Avatar
is this the default installation from steam? did you do anything special?
Avatar
like install with one user, then run with another
Avatar
it's the ddnet from ddnet.tw
Avatar
ok, maybe one time you ran it as administrator?
09:42
can i delete all ddnetsettings ?
Avatar
ok, that's the reason, afterwards user can't write to it
09:42
sure, but they contain your settings
Avatar
6e9c370 Added constexpr to math functions - yeojingkang de6ea67 Update math.h - yeojingkang f9a9558 Merge #2610 - bors[bot]
Avatar
it create a new ddnet setting every time i change a sett in ddnet
Avatar
because it tries to override the original file
09:45
change the shortcut settings to always launch game as administrator and should be fine
Avatar
nooo, that's the wrong way!
Avatar
delete the settings and always launch as user
09:46
(maybe make a backup of the settings)
Avatar
then I'm doing it wrong since....
Avatar
lunch with admin change nothing
09:46
still create a new one
Avatar
rename the whole Teeworlds folder, and try again please
Avatar
rename to what ?
Avatar
Teeworlds_backup
Avatar
now settings are reset (edited)
Avatar
@deen rendering looks pretty good. the font weight is a bit thin. maybe use regular instead of normal.
09:51
actually, *please* use regular instead of normal.
09:51
ghosty
09:52
it still create news
Avatar
and we don't need CJKName in Deja Vu anymore do we
Avatar
hmmm
09:53
@Plant I'm out of ideas 😦 you can get your settings back by deleting the new Teeworlds folder and renaming Teeworlds_backup to Teeworlds again
Avatar
yeeee i know
09:54
i gonna reboot my laptop anyway
09:54
thx for helping
Avatar
c458ee5 Remove need for custom certificate - def- dd2662b Merge branch 'master' into pr-cert - heinrich5991 780d648 Merge #2606 - bors[bot]
Avatar
@heinrich5991 are you sure about the constexpr patch? I'm not sure I like the ternaries better than the if stmts
Avatar
I didn't care about whether to use if/ternaries
09:57
and it's their first contribution, didn't like it breaks anything
Avatar
@TsFreddie ok, done
09:57
love ya.
Avatar
and it's their first contribution, didn't like it breaks anything
@heinrich5991 does ur first contribution give u a pass?
Avatar
@Ryozuki your first contribution gets more help from me
Avatar
but that has nothing to do with what u said tho :p
Avatar
[11:57 AM] heinrich5991: I didn't care about whether to use if/ternaries [11:57 AM] heinrich5991: and it's their first contribution, didn't like it breaks anything
09:59
I didn't care about if/ternaries
09:59
given that it's their first contribution, I didn't think long whether we need it or not, since it doesn't break anything
10:00
@Ryozuki where is the problem?
Avatar
didn't think long whether we need it or not, since it doesn't break anything
but maybe someday u will not think long a first contribution and it actually breaks something
10:00
well no need to discuss further i guess
Avatar
I guess it's fine, though it makes it harder to read, IMHO
Avatar
i mean, usually u should be careful about new contributions, u should trust more actual contributors
10:01
so by my logic it should be the other way around
10:01
but its ok
Avatar
repeat contributors should be able to follow coding conventions
Avatar
Coddling new contributors is nice, we need more anyway
10:04
so did we come to a consensus whether we can include the steam sdk headers or not?
Avatar
I'm working on an alternate solution
Avatar
most repos dont
Avatar
should be ready soon™
Avatar
i think its better to specify a STEAMWORKS_ROOT
Avatar
(write our own header)
Avatar
or smth
10:04
ah
Avatar
@heinrich5991 how? wouldn't it end up exactly the same as theirs?
Avatar
(only the business logic remains, how and when to use the steam name)
10:05
APIs aren't really copyrightable IIRC
10:05
you're allowed to do interoperability, at the very least in the EU
Avatar
@heinrich5991 joining a friend by steam is a highly requested feature too
10:05
idk if its possible
Avatar
So including the sdk headers themselves wouldn't be an issue, right?
10:05
@Ryozuki not really possible without some accounts
Avatar
also steam has a rich presence, we can use it to show what map u are on
10:06
@Learath2 why? that doesnt make sense
Avatar
Actually, now that I check the "join friend" api, it looks possible
10:07
we can use this
10:07
to initially fill clan tag too
Avatar
@heinrich5991 what would you be basing our own headers off of?
Avatar
well maybe its to much
Avatar
eh, looks like one of those legal loopholes people come up with on reddit 😄
10:23
Can't we just ask if we can share the api so we don't need to do this?
Avatar
someone asked it on the steamworks forum already, got no official answer
10:24
and we kinda need to do this anyway, to have a stub library for non-steam
Avatar
I was thinking of containing this all to one class so we don't need a stub
Avatar
I prefer a stub to doing conditional compilation
10:25
conditional compilation means we need to test one more thing on CI
Avatar
stub brings the steam cruft into the already messy code we have
Avatar
where's the cruft in the PR?
10:26
I think I contained it to src/steam and src/engine/client/steam.cpp
Avatar
Does actually look well contained here
10:28
I'm still not sure I like the shims, I didn't really like the antibot one either tbf
Avatar
it allows you to use one binary, simply replacing the dynamic library
Avatar
It's one more thing we have to keep in sync, I might feel better about it if it was just generated
10:30
I had to commit like 4 times the last time I made a change to the antibot code because I forgot to update the shims signatures
Avatar
but CI caught it
10:30
that's a good failure
10:31
and we don't need to update the API, since steam dictates it
Avatar
Is it? I just stopped whatever else I was doing and commited 3 more times. Then I just went and did something else because I felt exhausted
10:31
Yeah, I guess atleast this one is a stable API
Avatar
it's better than a failure in production, yes
10:31
compiler errors are better than runtime errors
Avatar
I guess, I just see it as an unnecessary hassle and an extra file we need to keep around
10:33
Anyway, it's fine, atleast it's well contained
Avatar
@heinrich5991 don't you need to ship redistributable_bin? that also has the .lib file you need
Avatar
forgot to dllexport symbols from the shim
10:46
this is apparently what msvc needs to generate the .lib
Avatar
I finally found a name for the issue I was having devising an authentication system
11:49
Zooko's Triangle, a trilemma 😛
Avatar
have heard blockchain is the solution
Avatar
Yeah, given we are not implementing a blockchain (nor do we have enough parties to make it even close to not vulnerable to a 51% attack). We need to pick two, so I guess we want human-readable and secure
Avatar
given we are not implementing a blockchain
😄
Avatar
blockchain this blockchain that
11:55
best buzzword
Avatar
oddly enough, this is the first time I've seen blockchain actually be the solution to something 😄
troll 1
Avatar
The Lawful Access to Encrypted Data Act would require US companies to backdoor encryption for the "good guys".
Avatar
From now on, you are aloo required to use only repeating XOR for encryption
Avatar
@Learath2 too strong, ROT13 is the only legal encryption algo from now on (edited)
Avatar
Hm... serverside localization. It was implemented in infCroya. Though the format was a JSON. (edited)
13:43
would be much better to use terms not english string as keys
13:43
like "game.mod.infcroya.class.biologist.title"
13:44
because english string will be changed too (typos, renames and so on) but you will have to use old string as keys forever (edited)
Avatar
Yeah,from what i see localization is done usually using keys,not the actual english text as a key
Avatar
gettext-style localization usually uses english, java uses keys
Avatar
Either is quite adequate
👌 1
Avatar
But changing the english text is not the samw as changing the keys content
14:00
Imho
Avatar
term-based one would require making a list of terms first and (optionally) some kind of terms hierarchy (edited)
14:01
so it's harder to implement ofc especially when in a project there is a gettext one already (edited)
14:02
it's an investment in making things less chaotic on the latest stages, ofc tw vocabulary is fairly stable now (edited)
14:03
though moving from gettext one to terms one would require only altering dictonaries later
14:04
it is still a basic substitute function after all
Avatar
@Deleted User I did som tests on the frame thing. As the gpu work ddnet does is really cheap, at least faster gpus can keep up with the cpu. However, my intel igpu builds up a queue for 4 frames. With a 60hz monitor this could delay the input by one frame when the frametime goes above 4ms. But except for the menus the frametime always stays below 4ms and i guess such delay is fine for the menu.
Avatar
0437f71 Update turkish translate - ardadem 4cb7a35 Merge #2612 - bors[bot]
Avatar
here wondering if if i should continue reworking the ui code or not
14:53
justatest
Avatar
sure xd
15:04
is it hard to make multi-envelopes quads?
15:04
(just asking)
Avatar
c3ac252 Add $DATADIR to storage.cfg - heinrich5991
Avatar
why would u use the aspect to calculate the screen size when u have ScreenWidth and ScreenHeight in Graphics() ?
15:57
it also does this
15:57
kinda confused
15:58
ah
15:58
its to do calculations on the minimum resolution? (edited)
15:58
and then it scales it?
15:58
i wonder why
15:59
meh this is useless i guess
Avatar
this isn't useless the whole ui is based on an internel resolution that is independent from the real resolution
Avatar
@redix about being useless, i was talking about my effort to rework stuff xd
17:01
[ddnet/ddnet-web] New branch created: pr-14-4
Avatar
As for packaging, would it be okay to install this shared library (and possibly libddnet-antibot.so) into /usr/lib/ddnet/?
@heinrich5991 it would be okay to do so, weechat does this under /usr/lib/weechat/plugins
Avatar
Inherited from #2614 The only problem I currently see is, that kerning won't work, but the client doesn't use it currently anyway.
Avatar
Is this C++ code OK? int *a; if (1) { int b = 123; a = &b; } printf("%d\n", *a); Because it compiles without warnings. Would it be OK if this were just a scope instead of an if?
Avatar
wouldnt it crash
Avatar
It compiles and works ^^
Avatar
it feels like it might be undefined behavior
17:53
like works usually
17:53
but could be a point of failure at some point in the future
Avatar
@timakro did u use any compiler flag tho
Avatar
Yeah I wonder if anyone here knows what the spec says and if it's undefined I wonder why there is no compile warning in gcc
17:54
no flags
Avatar
use -fsanitize=undefined maybe
17:54
see if that complains
Avatar
nah works
Avatar
@deen look at my pr, also allows more than one fallback, and can stay like that even if we use only one font soon (edited)
Avatar
This is a very contentious issue actually
Avatar
What is the relation between the scope and the lifetime of a variable? If a variable is out of scope, is the memory of it allowed to be overwritten by another variable, or is the space reserved unt...
Avatar
It's not undefined behaviour is the more accepted view
Avatar
@timakro looks like ur code
17:58
looks like UB
Avatar
Ah, I misread that snipped
17:58
snippet*
17:58
That's always ub
17:58
I thought b was declared outside too
Avatar
if it was declared outside then it should be fine
Avatar
Note that technically x does not exist beyond its scope however it might happen that the compiler did not remove the contents of x and one might be able to access contents of x beyond its scope through a pointer(as you do).However, a code which does this is not a valid C++ code. It is a code which invokes Undefined Behaviour. Which means anything can happen(you might even see value of x being intact) and one should not expect observable behaviors from such a code.
Avatar
Ah thx, was looking for exactly this stackoverflow post ^^
17:59
my google skills
Avatar
Still I want my compiler warning!
Avatar
use rust topkek
mmm 1
Avatar
@noby nope, not as straightforward as you'd think
Avatar
i dont know any compiler flag for this
Avatar
try using -Wall and all others
18:00
idk
Avatar
If it's just a block it's well defined, but that if stmt actually makes things very ambiguous in both C and C++
Avatar
if both a and b are declared before the `if then i dont see what would go out of scope
Avatar
The compilers all agree that it's well defined, so it's fine
Avatar
-Wall doesn't do it (already tried that ^^)
Avatar
but the standard never really says anything about the optimizations that are allowed, so one can argue that if the branch isn't taken, it invokes ub by dereferencing garbage
18:01
true
Avatar
Anyway, it's more of a defect of the standard that no one really wants to fix rather than an actual ub any sane compiler would abuse
Avatar
I found some other stackoverflow answer stating that if you were to declare another variable outside of the scope it could reuse the same memory and that's probably true if you enable optimizations and b isn't used at any later point
Avatar
@timakro I don't think you'll get a good warning for this
18:04
Maybe UBsan can help, did you try -Wextra?
Avatar
So it seems like the compilers actually check if b is used later and allow that
18:05
Nope -Wextra doesn't do it either
18:05
It's probably just as you said, the compilers go out of their way to support this so they don't warn about it
18:06
Note that if you go outside the function EVERY compiler warns you about that without any settings because that simply can't work if the variable lives on the stack
Avatar
MISRA:2012:18.6 I'm guessing if MISRA has a rule for this it's probably not there in any compiler by default
18:08
this looks trivial to detect for compilers though, I wonder why it's not there
Avatar
Well it looks like they support this deliberatly
Avatar
@deen https://forum.ddnet.tw/ doesnt work (edited)
18:09
ddnet.tw does
18:09
18:10
;forum.ddnet.tw. IN A
18:10
u forgot to put something after the A record
18:10
xD
18:10
oh wait
18:10
nvm
18:10
i got confused by dig output
18:11
but it doesnt work anyway
Avatar
Novice should really just be called Easy, then everyone would understand it xD
Avatar
@timakro hm, why would that be? I see no good use for it
Avatar
@Deleted User true
Avatar
Compilers don't keep track of variables using just addresses so it's not address overlap
Avatar
@Learath2 u got access to the website? maye u can fix it
Avatar
I added an A record for it
18:13
give it a min
Avatar
If you have { int a; do_smth_with(a); } int b; do_smth_with(b); And you never use a outside that scope and you enable optimizations the compiler will reuse the same memory location I'm sure. That should prove that the compiler purposefully checks if a is used outside the scope, right?
18:15
That assumption could be wrong, just got that from another stackoverflow answer
Avatar
works now
Avatar
@timakro your thing is undefined xd
Avatar
@timakro a could never be used outside the scope though, it's UB
18:19
the compiler is already allowed to do that optimization without even checking
Avatar
ok idk that example is not very clear and its probably more complicated than that
18:20
but the compiler requires deliberate logic to support this use case
Avatar
I'll ask ##c++ tomorrow, they are standard nuts, they'll prolly know
Avatar
it won't crash in debug bcs stack variable
18:25
compiling with optimization gives me a 0 for example
18:26
// Type your code here, or load an example. int main() { int* a; { int b = 123; a = &b; } printf("a %d", *a); }
18:34
4465264 Use two fonts, one as explicit fallback - def- 178d864 Switch to Source Han Sans font - def- a388b70 Generalize loading fallback fonts - def- dbb9c66 Merge pull request #2617 from Jupeyy/pr_font_fallback - def-
Avatar
ok
18:46
this is weird
18:46
i launched steam
18:46
then ddnet too see if it works
18:46
then it worked lol
Avatar
@Ryozuki works for me, is it fixed?
Avatar
There are more Chinese players than ever before, even more than Germans, and more Koreans and Japanese players active also -- please fix the IME :( (edited)
Avatar
@Pathos we recently made a change to the IME so that the Windows IME can be used. Apparently this is a bit better. But if you can work on a proper fix that would be even greater
19:12
e82e314 Added ACTom, Dan_cao and Texas.C to the staff list - murpii edf9385 changed ACTom to just Tom - murpii af977b4 Merge pull request #91 from murpii/patch-1 - def-
Avatar
compiling
Avatar
Eyyy Texas and Tom
19:15
Nice
19:15
Good people to add
19:15
And Dan cao too of course
Avatar
damn chinese servers are down¿
19:16
i can see some characters
19:16
Avatar
Yeah but typing it is a pain -- Japanese is almost impossible to type
19:17
Korean has gotten slightly worse
Avatar
ᶰ°Konͧsti 2020-08-20 19:17:07Z
Ryozoozki
Avatar
idk how to type it
19:17
i probs cant
19:17
would need to search how on arch linux wiki
Avatar
I explain Korean and Japanese typing briefly here https://github.com/ddnet/ddnet/issues/1030 @Ryozuki
Typing in Korean works still, though a bit wonky, but not different than before. It's just Japanese that doesn't work anymore.
Avatar
ᶰ°Konͧsti 2020-08-20 19:18:02Z
Just use tab
Avatar
im not on windows
Avatar
ᶰ°Konͧsti 2020-08-20 19:18:23Z
I never know if i tabbed the correct squares feelsbadman
Avatar
@Pathos change os troll
Avatar
It doesn't matter if it's on Windows or not, the typing process is still the same
19:19
IME is just specific to Windows
19:20
And many Linux distros really suck with CJK
Avatar
well on arch u have to setup it urself
Avatar
@ᶰ°Konͧsti next release will support CJK for all
Avatar
ETA on next release?
Avatar
i'm working on it atm
19:21
had some build problems
Avatar
Ok great, thanks :)
Avatar
ᶰ°Konͧsti 2020-08-20 19:21:41Z
:O
Avatar
a cute tee
19:22
a69bfb6 Forgot to add back Arii to GER - murpii 1d5bf54 Merge pull request #92 from murpii/patch-3 - def-
Avatar
ᶰ°Konͧsti 2020-08-20 19:22:22Z
how many new European players did we get? xd
Avatar
1 konsti
Avatar
ᶰ°Konͧsti 2020-08-20 19:29:58Z
u
19:50
e49d906 Version 14.4 - def- a1e1ce1 Merge pull request #90 from ddnet/pr-14-4 - def-
19:51
19:51
c186f3c Fix release date - def-
19:55
6284699 Remove old changelog - def-
Avatar
wtf did u do to my japanese font
20:25
now its back to thick letters why
feelsbadman 4
Avatar
its a new font file
20:33
u can replace it with the old one
Avatar
i did and it doesnt work
20:41
now its not starting
20:45
ah got it, renaming it to the new name did the deed
20:54
9545db0 changed name order to match the alphabet as requested - murpii 0e0ad39 Merge pull request #93 from murpii/patch-4 - 12pm
Avatar
Join the fun convo with 9GAG community
Avatar
What happened to the CJK font?
Avatar
thats quite lot of servers
Avatar
Not sure what went wrong here, any idea @Zwelf ``` [2020-08-20 19:03:45][game]: kill killer='4:Chao' victim='4:Chao' weapon=-2 special=0 [2020-08-20 19:03:45][game]: kill killer='5:MindlessRookie' victim='5:MindlessRookie' weapon=-2 special=0 [2020-08-20 19:04:37][chat]: Chao finished in: 0 minute(s) 48.06 second(s) [2020-08-20 19:04:37][chat]: New record: 1.50 second(s) better. [2020-08-20 19:04:37][chat]: *** MindlessRookie finished in: 0 minute(s) 48.06 second(s) [2020-08-...
Avatar
@Learath2we have a new one now that is supposed to be better
22:02
and use fallback instead of just switching to another font when CJK language is selected
Exported 426 message(s)