- Posts: 1123
- Thank you received: 73
Microsoft Windows Phone 8.1 support ends (13 Jul 2017)
Microsoft has ended support for Windows Phone 8.1
Here you should submit your bug reports with logcat.
Font substitution does not working.
- Hinata
- Topic Author
- Visitor
-
IP: 221.113.12.131
4 years 9 months ago #15512
by Hinata
Font substitution does not working. was created by Hinata
I am using the following Xamarin module for Android.
github.com/RadaeePDF-Jugaad/RadaeePDF-Xa...id/RadaeePDF-Xamarin
Garbled characters occur in Japanese PDF files.
Font substitution does not seem to be working.
Is this a bug?
Also, is there any problem with the following fixes?
There seems to be a problem with the following files.
The font substitution problem was solved by using "RadaeePDF AndroidStudio 3.55.4", available from the following link, and replacing the above file.
www.radaeepdf.com/download/category/1-android
The fixes are as follows
GB1, CNS1, and Korea1 have also been revised to match the changes in Japna1.
After line 758 of RadaeePDF-Android\PDFSample\ViewLib\src\main\java\com\radaee\pdf\Global.java
if (!setDefaultFont("GB1", "DroidSansFallback", true) &&
!setDefaultFont("GB1", "Noto Sans CJK SC Regular", true) &&
!setDefaultFont("GB1", "DroidSansChinese", true) &&
!setDefaultFont("GB1", "Noto Sans SC Regular", true) && face_name != null)
setDefaultFont("GB1", face_name, true);
if (!setDefaultFont("GB1", "DroidSansFallback", false) &&
!setDefaultFont("GB1", "Noto Sans CJK SC Regular", false) &&
!setDefaultFont("GB1", "Noto Sans SC Regular", false) && face_name != null)
setDefaultFont("GB1", face_name, false);
// set default font for Traditional Chinese. 繁體
if (!setDefaultFont("CNS1", "DroidSansFallback", true) &&
!setDefaultFont("GB1", "Noto Sans CJK TC Regular", true) &&
!setDefaultFont("CNS1", "Noto Sans TC Regular", true) && face_name != null)
setDefaultFont("CNS1", face_name, true);
if (!setDefaultFont("CNS1", "DroidSansFallback", false) &&
!setDefaultFont("GB1", "Noto Sans CJK TC Regular", false) &&
!setDefaultFont("CNS1", "Noto Sans TC Regular", false) && face_name != null)
setDefaultFont("CNS1", face_name, false);
// set default font for Japanese.
if (!setDefaultFont("Japan1", "DroidSansFallback", true) &&
!setDefaultFont("GB1", "Noto Sans CJK JP Regular", true) &&
!setDefaultFont("Japan1", "Noto Sans JP Regular", true) && face_name != null)
setDefaultFont("Japan1", face_name, true);
if (!setDefaultFont("Japan1", "DroidSansFallback", false) &&
!setDefaultFont("GB1", "Noto Sans CJK JP Regular", false) &&
!setDefaultFont("Japan1", "Noto Sans JP Regular", false) && face_name != null)
setDefaultFont("Japan1", face_name, false);
// set default font for Korean.
if (!setDefaultFont("Korea1", "DroidSansFallback", true) &&
!setDefaultFont("GB1", "Noto Sans CJK KR Regular", true) &&
!setDefaultFont("Korea1", "Noto Sans KR Regular", true) && face_name != null)
setDefaultFont("Korea1", face_name, true);
if (!setDefaultFont("Korea1", "DroidSansFallback", false) &&
!setDefaultFont("GB1", "Noto Sans CJK KR Regular", false) &&
!setDefaultFont("Korea1", "Noto Sans KR Regular", false) && face_name != null)
setDefaultFont("Korea1", face_name, false);
!setDefaultFont("GB1", "DroidSansChinese", true) &&
!setDefaultFont("GB1", "Noto Sans SC Regular", true) &&
!setDefaultFont("GB1", "DroidSansFallback", true) && face_name != null)
setDefaultFont("GB1", face_name, true);
if (!setDefaultFont("GB1", "Noto Sans CJK SC Regular", false) &&
!setDefaultFont("GB1", "Noto Sans SC Regular", false) &&
!setDefaultFont("GB1", "DroidSansFallback", false) && face_name != null)
setDefaultFont("GB1", face_name, false);
// set default font for Traditional Chinese. 繁體
if (!setDefaultFont("CNS1", "Noto Sans CJK TC Regular", true) &&
!setDefaultFont("CNS1", "Noto Sans TC Regular", true) &&
!setDefaultFont("CNS1", "DroidSansFallback", true) && face_name != null)
setDefaultFont("CNS1", face_name, true);
if (!setDefaultFont("CNS1", "Noto Sans CJK TC Regular", false) &&
!setDefaultFont("CNS1", "Noto Sans TC Regular", false) &&
!setDefaultFont("CNS1", "DroidSansFallback", false) && face_name != null)
setDefaultFont("CNS1", face_name, false);
// set default font for Japanese.
if (!setDefaultFont("Japan1", "Noto Sans CJK JP Regular", true) &&
!setDefaultFont("Japan1", "Noto Sans JP Regular", true) &&
!setDefaultFont("Japan1", "DroidSansFallback", true) && face_name != null)
setDefaultFont("Japan1", face_name, true);
if (!setDefaultFont("Japan1", "Noto Sans CJK JP Regular", false) &&
!setDefaultFont("Japan1", "Noto Sans JP Regular", false) &&
!setDefaultFont("Japan1", "DroidSansFallback", false) && face_name != null)
setDefaultFont("Japan1", face_name, false);
// set default font for Korean.
if (!setDefaultFont("Korea1", "Noto Sans CJK KR Regular", true) &&
!setDefaultFont("Korea1", "Noto Sans KR Regular", true) &&
!setDefaultFont("Korea1", "DroidSansFallback", true) && face_name != null)
setDefaultFont("Korea1", face_name, true);
if (!setDefaultFont("Korea1", "Noto Sans CJK KR Regular", false) &&
!setDefaultFont("Korea1", "Noto Sans KR Regular", false) &&
!setDefaultFont("Korea1", "DroidSansFallback", false) && face_name != null)
setDefaultFont("Korea1", face_name, false);
Thank you in advance.
github.com/RadaeePDF-Jugaad/RadaeePDF-Xa...id/RadaeePDF-Xamarin
Garbled characters occur in Japanese PDF files.
Font substitution does not seem to be working.
Is this a bug?
Also, is there any problem with the following fixes?
There seems to be a problem with the following files.
- RadaeePDF-Xamarin/Jars/ViewLib.aar
The font substitution problem was solved by using "RadaeePDF AndroidStudio 3.55.4", available from the following link, and replacing the above file.
www.radaeepdf.com/download/category/1-android
The fixes are as follows
- Fixed a problem that could override the default font for GB1.
- Changed the priority of the default font for CJK.
GB1, CNS1, and Korea1 have also been revised to match the changes in Japna1.
After line 758 of RadaeePDF-Android\PDFSample\ViewLib\src\main\java\com\radaee\pdf\Global.java
- Before
if (!setDefaultFont("GB1", "DroidSansFallback", true) &&
!setDefaultFont("GB1", "Noto Sans CJK SC Regular", true) &&
!setDefaultFont("GB1", "DroidSansChinese", true) &&
!setDefaultFont("GB1", "Noto Sans SC Regular", true) && face_name != null)
setDefaultFont("GB1", face_name, true);
if (!setDefaultFont("GB1", "DroidSansFallback", false) &&
!setDefaultFont("GB1", "Noto Sans CJK SC Regular", false) &&
!setDefaultFont("GB1", "Noto Sans SC Regular", false) && face_name != null)
setDefaultFont("GB1", face_name, false);
// set default font for Traditional Chinese. 繁體
if (!setDefaultFont("CNS1", "DroidSansFallback", true) &&
!setDefaultFont("GB1", "Noto Sans CJK TC Regular", true) &&
!setDefaultFont("CNS1", "Noto Sans TC Regular", true) && face_name != null)
setDefaultFont("CNS1", face_name, true);
if (!setDefaultFont("CNS1", "DroidSansFallback", false) &&
!setDefaultFont("GB1", "Noto Sans CJK TC Regular", false) &&
!setDefaultFont("CNS1", "Noto Sans TC Regular", false) && face_name != null)
setDefaultFont("CNS1", face_name, false);
// set default font for Japanese.
if (!setDefaultFont("Japan1", "DroidSansFallback", true) &&
!setDefaultFont("GB1", "Noto Sans CJK JP Regular", true) &&
!setDefaultFont("Japan1", "Noto Sans JP Regular", true) && face_name != null)
setDefaultFont("Japan1", face_name, true);
if (!setDefaultFont("Japan1", "DroidSansFallback", false) &&
!setDefaultFont("GB1", "Noto Sans CJK JP Regular", false) &&
!setDefaultFont("Japan1", "Noto Sans JP Regular", false) && face_name != null)
setDefaultFont("Japan1", face_name, false);
// set default font for Korean.
if (!setDefaultFont("Korea1", "DroidSansFallback", true) &&
!setDefaultFont("GB1", "Noto Sans CJK KR Regular", true) &&
!setDefaultFont("Korea1", "Noto Sans KR Regular", true) && face_name != null)
setDefaultFont("Korea1", face_name, true);
if (!setDefaultFont("Korea1", "DroidSansFallback", false) &&
!setDefaultFont("GB1", "Noto Sans CJK KR Regular", false) &&
!setDefaultFont("Korea1", "Noto Sans KR Regular", false) && face_name != null)
setDefaultFont("Korea1", face_name, false);
- After
!setDefaultFont("GB1", "DroidSansChinese", true) &&
!setDefaultFont("GB1", "Noto Sans SC Regular", true) &&
!setDefaultFont("GB1", "DroidSansFallback", true) && face_name != null)
setDefaultFont("GB1", face_name, true);
if (!setDefaultFont("GB1", "Noto Sans CJK SC Regular", false) &&
!setDefaultFont("GB1", "Noto Sans SC Regular", false) &&
!setDefaultFont("GB1", "DroidSansFallback", false) && face_name != null)
setDefaultFont("GB1", face_name, false);
// set default font for Traditional Chinese. 繁體
if (!setDefaultFont("CNS1", "Noto Sans CJK TC Regular", true) &&
!setDefaultFont("CNS1", "Noto Sans TC Regular", true) &&
!setDefaultFont("CNS1", "DroidSansFallback", true) && face_name != null)
setDefaultFont("CNS1", face_name, true);
if (!setDefaultFont("CNS1", "Noto Sans CJK TC Regular", false) &&
!setDefaultFont("CNS1", "Noto Sans TC Regular", false) &&
!setDefaultFont("CNS1", "DroidSansFallback", false) && face_name != null)
setDefaultFont("CNS1", face_name, false);
// set default font for Japanese.
if (!setDefaultFont("Japan1", "Noto Sans CJK JP Regular", true) &&
!setDefaultFont("Japan1", "Noto Sans JP Regular", true) &&
!setDefaultFont("Japan1", "DroidSansFallback", true) && face_name != null)
setDefaultFont("Japan1", face_name, true);
if (!setDefaultFont("Japan1", "Noto Sans CJK JP Regular", false) &&
!setDefaultFont("Japan1", "Noto Sans JP Regular", false) &&
!setDefaultFont("Japan1", "DroidSansFallback", false) && face_name != null)
setDefaultFont("Japan1", face_name, false);
// set default font for Korean.
if (!setDefaultFont("Korea1", "Noto Sans CJK KR Regular", true) &&
!setDefaultFont("Korea1", "Noto Sans KR Regular", true) &&
!setDefaultFont("Korea1", "DroidSansFallback", true) && face_name != null)
setDefaultFont("Korea1", face_name, true);
if (!setDefaultFont("Korea1", "Noto Sans CJK KR Regular", false) &&
!setDefaultFont("Korea1", "Noto Sans KR Regular", false) &&
!setDefaultFont("Korea1", "DroidSansFallback", false) && face_name != null)
setDefaultFont("Korea1", face_name, false);
Thank you in advance.
IP: 111.196.245.110
4 years 9 months ago - 4 years 9 months ago #15513
by radaee
Replied by radaee on topic Font substitution does not working.
dear user:
thanks, we have found some problems:
shall change to:
the method call "setDefaultFont("GB1", "Noto Sans CJK JP Regular", true)" is wrong for Japan1.we will update this issue in next demo version.
thanks, we have found some problems:
Code:
if (!setDefaultFont("Japan1", "DroidSansFallback", true) &&
!setDefaultFont("GB1", "Noto Sans CJK JP Regular", true) &&
!setDefaultFont("Japan1", "Noto Sans JP Regular", true) && face_name != null)
setDefaultFont("Japan1", face_name, true);
if (!setDefaultFont("Japan1", "DroidSansFallback", false) &&
!setDefaultFont("GB1", "Noto Sans CJK JP Regular", false) &&
!setDefaultFont("Japan1", "Noto Sans JP Regular", false) && face_name != null)
setDefaultFont("Japan1", face_name, false);
shall change to:
Code:
if (!setDefaultFont("Japan1", "Noto Sans CJK JP Regular", true) &&
!setDefaultFont("Japan1", "Noto Sans JP Regular", true) &&
!setDefaultFont("Japan1", "DroidSansFallback", true) && face_name != null)
setDefaultFont("Japan1", face_name, true);
if (!setDefaultFont("Japan1", "DroidSansFallback", false) &&
!setDefaultFont("Japan1", "Noto Sans CJK JP Regular", false) &&
!setDefaultFont("Japan1", "Noto Sans JP Regular", false) && face_name != null)
setDefaultFont("Japan1", face_name, false);
Last edit: 4 years 9 months ago by radaee.
IP: 47.35.39.76
4 years 7 months ago #15590
by ashughes
Replied by ashughes on topic Font substitution does not working.
Thank you Hinata (OP) for posting this. I was looking into this and I noticed that your suggestions appear to be implemented in the latest version of the library. I wanted to add my own discoveries and suggestions as well.
I discovered that the font /system/fonts/NotoSansCJK-Regular.ttc on Samsung devices (at least the Galaxy Note 9 and Galaxy Tab S4) does not include the word "Regular" in the font names. For example, for Simplified Chinese it's just "Noto Sans CJK SC" rather than "Noto Sans CJK SC Regular".
However, when I looked into the latest version of NotoSansCJK-Regular.ttc available here from www.google.com/get/noto/help/cjk/ , the fonts do include "Regular" in the font names.
So, we changed our settings to the following:// set default font for Simplified Chinese. 简体
if (!setDefaultFont("GB1", "Noto Sans CJK SC Regular", true) &&
!setDefaultFont("GB1", "Noto Sans CJK SC", true) &&
!setDefaultFont("GB1", "Noto Sans SC Regular", true) &&
!setDefaultFont("GB1", "Noto Sans SC", true) &&
!setDefaultFont("GB1", "DroidSansChinese", true) &&
!setDefaultFont("GB1", "DroidSansFallback", true) && face_name != null)
setDefaultFont("GB1", face_name, true);
if (!setDefaultFont("GB1", "Noto Sans CJK SC Regular", false) &&
!setDefaultFont("GB1", "Noto Sans CJK SC", false) &&
!setDefaultFont("GB1", "Noto Sans SC Regular", false) &&
!setDefaultFont("GB1", "Noto Sans SC", false) &&
!setDefaultFont("GB1", "DroidSansChinese", false) &&
!setDefaultFont("GB1", "DroidSansFallback", false) && face_name != null)
setDefaultFont("GB1", face_name, false);
// set default font for Traditional Chinese. 繁體
if (!setDefaultFont("CNS1", "Noto Sans CJK TC Regular", true) &&
!setDefaultFont("CNS1", "Noto Sans CJK TC", true) &&
!setDefaultFont("CNS1", "Noto Sans TC Regular", true) &&
!setDefaultFont("CNS1", "Noto Sans TC", true) &&
!setDefaultFont("CNS1", "DroidSansFallback", true) && face_name != null)
setDefaultFont("CNS1", face_name, true);
if (!setDefaultFont("CNS1", "Noto Sans CJK TC Regular", false) &&
!setDefaultFont("CNS1", "Noto Sans CJK TC", false) &&
!setDefaultFont("CNS1", "Noto Sans TC Regular", false) &&
!setDefaultFont("CNS1", "Noto Sans TC", false) &&
!setDefaultFont("CNS1", "DroidSansFallback", false) && face_name != null)
setDefaultFont("CNS1", face_name, false);
// set default font for Japanese.
if (!setDefaultFont("Japan1", "Noto Sans CJK JP Regular", true) &&
!setDefaultFont("Japan1", "Noto Sans CJK JP", true) &&
!setDefaultFont("Japan1", "Noto Sans JP Regular", true) &&
!setDefaultFont("Japan1", "Noto Sans JP", true) &&
!setDefaultFont("Japan1", "DroidSansFallback", true) && face_name != null)
setDefaultFont("Japan1", face_name, true);
if (!setDefaultFont("Japan1", "Noto Sans CJK JP Regular", false) &&
!setDefaultFont("Japan1", "Noto Sans CJK JP", false) &&
!setDefaultFont("Japan1", "Noto Sans JP Regular", false) &&
!setDefaultFont("Japan1", "Noto Sans JP", false) &&
!setDefaultFont("Japan1", "DroidSansFallback", false) && face_name != null)
setDefaultFont("Japan1", face_name, false);
// set default font for Korean.
if (!setDefaultFont("Korea1", "Noto Sans CJK KR Regular", true) &&
!setDefaultFont("Korea1", "Noto Sans CJK KR", true) &&
!setDefaultFont("Korea1", "Noto Sans KR Regular", true) &&
!setDefaultFont("Korea1", "Noto Sans KR", true) &&
!setDefaultFont("Korea1", "DroidSansFallback", true) && face_name != null)
setDefaultFont("Korea1", face_name, true);
if (!setDefaultFont("Korea1", "Noto Sans CJK KR Regular", false) &&
!setDefaultFont("Korea1", "Noto Sans CJK KR", false) &&
!setDefaultFont("Korea1", "Noto Sans KR Regular", false) &&
!setDefaultFont("Korea1", "Noto Sans KR", false) &&
!setDefaultFont("Korea1", "DroidSansFallback", false) && face_name != null)
setDefaultFont("Korea1", face_name, false);
I tested this on the Samsung Galaxy Note 9 and Samsung Galaxy Tab S4 and was able to correctly render PDFs with Asian fonts that previously did not render correctly.
I hope this will help others. Please let me know if you see any issues with these changes.
I discovered that the font /system/fonts/NotoSansCJK-Regular.ttc on Samsung devices (at least the Galaxy Note 9 and Galaxy Tab S4) does not include the word "Regular" in the font names. For example, for Simplified Chinese it's just "Noto Sans CJK SC" rather than "Noto Sans CJK SC Regular".
However, when I looked into the latest version of NotoSansCJK-Regular.ttc available here from www.google.com/get/noto/help/cjk/ , the fonts do include "Regular" in the font names.
So, we changed our settings to the following:// set default font for Simplified Chinese. 简体
if (!setDefaultFont("GB1", "Noto Sans CJK SC Regular", true) &&
!setDefaultFont("GB1", "Noto Sans CJK SC", true) &&
!setDefaultFont("GB1", "Noto Sans SC Regular", true) &&
!setDefaultFont("GB1", "Noto Sans SC", true) &&
!setDefaultFont("GB1", "DroidSansChinese", true) &&
!setDefaultFont("GB1", "DroidSansFallback", true) && face_name != null)
setDefaultFont("GB1", face_name, true);
if (!setDefaultFont("GB1", "Noto Sans CJK SC Regular", false) &&
!setDefaultFont("GB1", "Noto Sans CJK SC", false) &&
!setDefaultFont("GB1", "Noto Sans SC Regular", false) &&
!setDefaultFont("GB1", "Noto Sans SC", false) &&
!setDefaultFont("GB1", "DroidSansChinese", false) &&
!setDefaultFont("GB1", "DroidSansFallback", false) && face_name != null)
setDefaultFont("GB1", face_name, false);
// set default font for Traditional Chinese. 繁體
if (!setDefaultFont("CNS1", "Noto Sans CJK TC Regular", true) &&
!setDefaultFont("CNS1", "Noto Sans CJK TC", true) &&
!setDefaultFont("CNS1", "Noto Sans TC Regular", true) &&
!setDefaultFont("CNS1", "Noto Sans TC", true) &&
!setDefaultFont("CNS1", "DroidSansFallback", true) && face_name != null)
setDefaultFont("CNS1", face_name, true);
if (!setDefaultFont("CNS1", "Noto Sans CJK TC Regular", false) &&
!setDefaultFont("CNS1", "Noto Sans CJK TC", false) &&
!setDefaultFont("CNS1", "Noto Sans TC Regular", false) &&
!setDefaultFont("CNS1", "Noto Sans TC", false) &&
!setDefaultFont("CNS1", "DroidSansFallback", false) && face_name != null)
setDefaultFont("CNS1", face_name, false);
// set default font for Japanese.
if (!setDefaultFont("Japan1", "Noto Sans CJK JP Regular", true) &&
!setDefaultFont("Japan1", "Noto Sans CJK JP", true) &&
!setDefaultFont("Japan1", "Noto Sans JP Regular", true) &&
!setDefaultFont("Japan1", "Noto Sans JP", true) &&
!setDefaultFont("Japan1", "DroidSansFallback", true) && face_name != null)
setDefaultFont("Japan1", face_name, true);
if (!setDefaultFont("Japan1", "Noto Sans CJK JP Regular", false) &&
!setDefaultFont("Japan1", "Noto Sans CJK JP", false) &&
!setDefaultFont("Japan1", "Noto Sans JP Regular", false) &&
!setDefaultFont("Japan1", "Noto Sans JP", false) &&
!setDefaultFont("Japan1", "DroidSansFallback", false) && face_name != null)
setDefaultFont("Japan1", face_name, false);
// set default font for Korean.
if (!setDefaultFont("Korea1", "Noto Sans CJK KR Regular", true) &&
!setDefaultFont("Korea1", "Noto Sans CJK KR", true) &&
!setDefaultFont("Korea1", "Noto Sans KR Regular", true) &&
!setDefaultFont("Korea1", "Noto Sans KR", true) &&
!setDefaultFont("Korea1", "DroidSansFallback", true) && face_name != null)
setDefaultFont("Korea1", face_name, true);
if (!setDefaultFont("Korea1", "Noto Sans CJK KR Regular", false) &&
!setDefaultFont("Korea1", "Noto Sans CJK KR", false) &&
!setDefaultFont("Korea1", "Noto Sans KR Regular", false) &&
!setDefaultFont("Korea1", "Noto Sans KR", false) &&
!setDefaultFont("Korea1", "DroidSansFallback", false) && face_name != null)
setDefaultFont("Korea1", face_name, false);
I tested this on the Samsung Galaxy Note 9 and Samsung Galaxy Tab S4 and was able to correctly render PDFs with Asian fonts that previously did not render correctly.
I hope this will help others. Please let me know if you see any issues with these changes.
IP: 111.196.242.56
4 years 7 months ago #15591
by radaee
Replied by radaee on topic Font substitution does not working.
thanks, we will fix in demo project.
Time to create page: 0.437 seconds