Skip to content

Commit 09d258b

Browse files
committed
Add tests for cmap loading
DEVSIX-8593
1 parent 3f4e391 commit 09d258b

File tree

3 files changed

+259
-2
lines changed

3 files changed

+259
-2
lines changed
Lines changed: 248 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,248 @@
1+
package com.itextpdf.io.font;
2+
3+
import com.itextpdf.io.font.cmap.AbstractCMap;
4+
import com.itextpdf.io.logs.IoLogMessageConstant;
5+
import com.itextpdf.test.ExtendedITextTest;
6+
import com.itextpdf.test.annotations.LogMessages;
7+
import org.junit.jupiter.api.Assertions;
8+
import org.junit.jupiter.api.Tag;
9+
import org.junit.jupiter.params.ParameterizedTest;
10+
import org.junit.jupiter.params.provider.MethodSource;
11+
12+
import java.util.ArrayList;
13+
import java.util.Collection;
14+
import java.util.List;
15+
16+
@Tag("IntegrationTest")
17+
public class LoadAllAsianFontsTest extends ExtendedITextTest {
18+
19+
@ParameterizedTest(name = "{index}: {0} {1}")
20+
@MethodSource("data")
21+
// TODO DEVSIX-8619 All cmap parsing errors should be fixed and this logging should then be removed
22+
@LogMessages(messages = {
23+
@com.itextpdf.test.annotations.LogMessage(messageTemplate = IoLogMessageConstant.UNKNOWN_ERROR_WHILE_PROCESSING_CMAP, ignore = true),
24+
25+
})
26+
public void testAsianFonts(String cmapName, String ordering) {
27+
checkFontAsianCmap(cmapName, ordering);
28+
}
29+
30+
public static Collection<Object[]> data() {
31+
List<Object[]> result = new ArrayList<>();
32+
result.add(new Object[]{"78-EUC-H", "Japan1"});
33+
result.add(new Object[]{"78-EUC-V", "Japan1"});
34+
result.add(new Object[]{"78-H", "Japan1"});
35+
result.add(new Object[]{"78-RKSJ-H", "Japan1"});
36+
result.add(new Object[]{"78-RKSJ-V", "Japan1"});
37+
result.add(new Object[]{"78-V", "Japan1"});
38+
result.add(new Object[]{"78ms-RKSJ-H", "Japan1"});
39+
result.add(new Object[]{"78ms-RKSJ-V", "Japan1"});
40+
result.add(new Object[]{"83pv-RKSJ-H", "Japan1"});
41+
result.add(new Object[]{"90ms-RKSJ-H", "Japan1"});
42+
result.add(new Object[]{"90ms-RKSJ-V", "Japan1"});
43+
result.add(new Object[]{"90msp-RKSJ-H", "Japan1"});
44+
result.add(new Object[]{"90msp-RKSJ-V", "Japan1"});
45+
result.add(new Object[]{"90pv-RKSJ-H", "Japan1"});
46+
result.add(new Object[]{"90pv-RKSJ-V", "Japan1"});
47+
result.add(new Object[]{"Add-H", "Japan1"});
48+
result.add(new Object[]{"Add-RKSJ-H", "Japan1"});
49+
result.add(new Object[]{"Add-RKSJ-V", "Japan1"});
50+
result.add(new Object[]{"Add-V", "Japan1"});
51+
52+
result.add(new Object[]{"Adobe-CNS1-0", "CNS1"});
53+
result.add(new Object[]{"Adobe-CNS1-1", "CNS1"});
54+
result.add(new Object[]{"Adobe-CNS1-2", "CNS1"});
55+
result.add(new Object[]{"Adobe-CNS1-3", "CNS1"});
56+
result.add(new Object[]{"Adobe-CNS1-4", "CNS1"});
57+
result.add(new Object[]{"Adobe-CNS1-5", "CNS1"});
58+
result.add(new Object[]{"Adobe-CNS1-6", "CNS1"});
59+
result.add(new Object[]{"Adobe-CNS1-7", "CNS1"});
60+
61+
result.add(new Object[]{"Adobe-GB1-0", "GB1"});
62+
result.add(new Object[]{"Adobe-GB1-1", "GB1"});
63+
result.add(new Object[]{"Adobe-GB1-2", "GB1"});
64+
result.add(new Object[]{"Adobe-GB1-3", "GB1"});
65+
result.add(new Object[]{"Adobe-GB1-4", "GB1"});
66+
result.add(new Object[]{"Adobe-GB1-5", "GB1"});
67+
68+
result.add(new Object[]{"Adobe-Japan1-0", "Japan1"});
69+
result.add(new Object[]{"Adobe-Japan1-1", "Japan1"});
70+
result.add(new Object[]{"Adobe-Japan1-2", "Japan1"});
71+
result.add(new Object[]{"Adobe-Japan1-3", "Japan1"});
72+
result.add(new Object[]{"Adobe-Japan1-4", "Japan1"});
73+
result.add(new Object[]{"Adobe-Japan1-5", "Japan1"});
74+
result.add(new Object[]{"Adobe-Japan1-6", "Japan1"});
75+
result.add(new Object[]{"Adobe-Japan1-7", "Japan1"});
76+
77+
result.add(new Object[]{"Adobe-Korea1-0", "Korea1"});
78+
result.add(new Object[]{"Adobe-Korea1-1", "Korea1"});
79+
result.add(new Object[]{"Adobe-Korea1-2", "Korea1"});
80+
81+
result.add(new Object[]{"Adobe-KR-0", "KR"});
82+
result.add(new Object[]{"Adobe-KR-1", "KR"});
83+
result.add(new Object[]{"Adobe-KR-2", "KR"});
84+
result.add(new Object[]{"Adobe-KR-3", "KR"});
85+
result.add(new Object[]{"Adobe-KR-4", "KR"});
86+
result.add(new Object[]{"Adobe-KR-5", "KR"});
87+
result.add(new Object[]{"Adobe-KR-6", "KR"});
88+
result.add(new Object[]{"Adobe-KR-7", "KR"});
89+
result.add(new Object[]{"Adobe-KR-8", "KR"});
90+
result.add(new Object[]{"Adobe-KR-9", "KR"});
91+
92+
result.add(new Object[]{"B5-H", "CNS1"});
93+
result.add(new Object[]{"B5-V", "CNS1"});
94+
result.add(new Object[]{"B5pc-H", "CNS1"});
95+
result.add(new Object[]{"B5pc-V", "CNS1"});
96+
result.add(new Object[]{"CNS1-H", "CNS1"});
97+
result.add(new Object[]{"CNS1-V", "CNS1"});
98+
result.add(new Object[]{"CNS2-H", "CNS1"});
99+
result.add(new Object[]{"CNS2-V", "CNS1"});
100+
result.add(new Object[]{"CNS-EUC-H", "CNS1"});
101+
result.add(new Object[]{"CNS-EUC-V", "CNS1"});
102+
result.add(new Object[]{"ETen-B5-H", "CNS1"});
103+
result.add(new Object[]{"ETen-B5-V", "CNS1"});
104+
result.add(new Object[]{"ETenms-B5-H", "CNS1"});
105+
result.add(new Object[]{"ETenms-B5-V", "CNS1"});
106+
result.add(new Object[]{"ETHK-B5-H", "CNS1"});
107+
result.add(new Object[]{"ETHK-B5-V", "CNS1"});
108+
109+
result.add(new Object[]{"EUC-H", "Japan1"});
110+
result.add(new Object[]{"EUC-V", "Japan1"});
111+
result.add(new Object[]{"Ext-H", "Japan1"});
112+
result.add(new Object[]{"Ext-RKSJ-H", "Japan1"});
113+
result.add(new Object[]{"Ext-RKSJ-V", "Japan1"});
114+
result.add(new Object[]{"Ext-V", "Japan1"});
115+
116+
result.add(new Object[]{"GB-EUC-H", "GB1"});
117+
result.add(new Object[]{"GB-EUC-V", "GB1"});
118+
result.add(new Object[]{"GBK2K-H", "GB1"});
119+
result.add(new Object[]{"GBK2K-V", "GB1"});
120+
result.add(new Object[]{"GBK-EUC-H", "GB1"});
121+
result.add(new Object[]{"GBK-EUC-V", "GB1"});
122+
result.add(new Object[]{"GBKp-EUC-H", "GB1"});
123+
result.add(new Object[]{"GBKp-EUC-V", "GB1"});
124+
result.add(new Object[]{"GBpc-EUC-H", "GB1"});
125+
result.add(new Object[]{"GBpc-EUC-V", "GB1"});
126+
result.add(new Object[]{"GBT-EUC-H", "GB1"});
127+
result.add(new Object[]{"GBT-EUC-V", "GB1"});
128+
result.add(new Object[]{"GBT-H", "GB1"});
129+
result.add(new Object[]{"GBT-V", "GB1"});
130+
result.add(new Object[]{"GBTpc-EUC-H", "GB1"});
131+
result.add(new Object[]{"GBTpc-EUC-V", "GB1"});
132+
133+
result.add(new Object[]{"H", "Japan1"});
134+
result.add(new Object[]{"Hankaku", "Japan1"});
135+
result.add(new Object[]{"Hiragana", "Japan1"});
136+
137+
result.add(new Object[]{"HKdla-B5-H", "CNS1"});
138+
result.add(new Object[]{"HKdla-B5-V", "CNS1"});
139+
result.add(new Object[]{"HKdlb-B5-H", "CNS1"});
140+
result.add(new Object[]{"HKdlb-B5-V", "CNS1"});
141+
result.add(new Object[]{"HKgccs-B5-H", "CNS1"});
142+
result.add(new Object[]{"HKgccs-B5-V", "CNS1"});
143+
result.add(new Object[]{"HKm314-B5-H", "CNS1"});
144+
result.add(new Object[]{"HKm314-B5-V", "CNS1"});
145+
result.add(new Object[]{"HKm471-B5-H", "CNS1"});
146+
result.add(new Object[]{"HKm471-B5-V", "CNS1"});
147+
result.add(new Object[]{"HKscs-B5-H", "CNS1"});
148+
result.add(new Object[]{"HKscs-B5-V", "CNS1"});
149+
150+
result.add(new Object[]{"Identity-H", "Identity"});
151+
result.add(new Object[]{"Identity-V", "Identity"});
152+
153+
result.add(new Object[]{"Katakana", "Japan1"});
154+
155+
result.add(new Object[]{"KSC-EUC-H", "Korea1"});
156+
result.add(new Object[]{"KSC-EUC-V", "Korea1"});
157+
result.add(new Object[]{"KSC-H", "Korea1"});
158+
result.add(new Object[]{"KSC-Johab-H", "Korea1"});
159+
result.add(new Object[]{"KSC-Johab-V", "Korea1"});
160+
result.add(new Object[]{"KSC-V", "Korea1"});
161+
result.add(new Object[]{"KSCms-UHC-H", "Korea1"});
162+
result.add(new Object[]{"KSCms-UHC-HW-H", "Korea1"});
163+
result.add(new Object[]{"KSCms-UHC-HW-V", "Korea1"});
164+
result.add(new Object[]{"KSCms-UHC-V", "Korea1"});
165+
result.add(new Object[]{"KSCpc-EUC-H", "Korea1"});
166+
result.add(new Object[]{"KSCpc-EUC-V", "Korea1"});
167+
168+
result.add(new Object[]{"NWP-H", "Japan1"});
169+
result.add(new Object[]{"NWP-V", "Japan1"});
170+
result.add(new Object[]{"RKSJ-H", "Japan1"});
171+
result.add(new Object[]{"RKSJ-V", "Japan1"});
172+
result.add(new Object[]{"Roman", "Japan1"});
173+
174+
result.add(new Object[]{"UniAKR-UTF8-H", "KR"});
175+
result.add(new Object[]{"UniAKR-UTF16-H", "KR"});
176+
result.add(new Object[]{"UniAKR-UTF32-H", "KR"});
177+
178+
result.add(new Object[]{"UniCNS-UCS2-H", "CNS1"});
179+
result.add(new Object[]{"UniCNS-UCS2-V", "CNS1"});
180+
result.add(new Object[]{"UniCNS-UTF8-H", "CNS1"});
181+
result.add(new Object[]{"UniCNS-UTF8-V", "CNS1"});
182+
result.add(new Object[]{"UniCNS-UTF16-H", "CNS1"});
183+
result.add(new Object[]{"UniCNS-UTF16-V", "CNS1"});
184+
result.add(new Object[]{"UniCNS-UTF32-H", "CNS1"});
185+
result.add(new Object[]{"UniCNS-UTF32-V", "CNS1"});
186+
187+
result.add(new Object[]{"UniGB-UCS2-H", "GB1"});
188+
result.add(new Object[]{"UniGB-UCS2-V", "GB1"});
189+
result.add(new Object[]{"UniGB-UTF8-H", "GB1"});
190+
result.add(new Object[]{"UniGB-UTF8-V", "GB1"});
191+
result.add(new Object[]{"UniGB-UTF16-H", "GB1"});
192+
result.add(new Object[]{"UniGB-UTF16-V", "GB1"});
193+
result.add(new Object[]{"UniGB-UTF32-H", "GB1"});
194+
result.add(new Object[]{"UniGB-UTF32-V", "GB1"});
195+
196+
result.add(new Object[]{"UniJIS2004-UTF8-H", "Japan1"});
197+
result.add(new Object[]{"UniJIS2004-UTF8-V", "Japan1"});
198+
result.add(new Object[]{"UniJIS2004-UTF16-H", "Japan1"});
199+
result.add(new Object[]{"UniJIS2004-UTF16-V", "Japan1"});
200+
result.add(new Object[]{"UniJIS2004-UTF32-H", "Japan1"});
201+
result.add(new Object[]{"UniJIS2004-UTF32-V", "Japan1"});
202+
result.add(new Object[]{"UniJIS-UCS2-H", "Japan1"});
203+
result.add(new Object[]{"UniJIS-UCS2-HW-H", "Japan1"});
204+
result.add(new Object[]{"UniJIS-UCS2-HW-V", "Japan1"});
205+
result.add(new Object[]{"UniJIS-UCS2-V", "Japan1"});
206+
result.add(new Object[]{"UniJIS-UTF8-H", "Japan1"});
207+
result.add(new Object[]{"UniJIS-UTF8-V", "Japan1"});
208+
result.add(new Object[]{"UniJIS-UTF16-H", "Japan1"});
209+
result.add(new Object[]{"UniJIS-UTF16-V", "Japan1"});
210+
result.add(new Object[]{"UniJIS-UTF32-H", "Japan1"});
211+
result.add(new Object[]{"UniJIS-UTF32-V", "Japan1"});
212+
result.add(new Object[]{"UniJISPro-UCS2-HW-V", "Japan1"});
213+
result.add(new Object[]{"UniJISPro-UCS2-V", "Japan1"});
214+
result.add(new Object[]{"UniJISPro-UTF8-V", "Japan1"});
215+
result.add(new Object[]{"UniJISX0213-UTF32-H", "Japan1"});
216+
result.add(new Object[]{"UniJISX0213-UTF32-V", "Japan1"});
217+
result.add(new Object[]{"UniJISX02132004-UTF32-H", "Japan1"});
218+
result.add(new Object[]{"UniJISX02132004-UTF32-V", "Japan1"});
219+
220+
result.add(new Object[]{"UniKS-UCS2-H", "Korea1"});
221+
result.add(new Object[]{"UniKS-UCS2-V", "Korea1"});
222+
result.add(new Object[]{"UniKS-UTF8-H", "Korea1"});
223+
result.add(new Object[]{"UniKS-UTF8-V", "Korea1"});
224+
result.add(new Object[]{"UniKS-UTF16-H", "Korea1"});
225+
result.add(new Object[]{"UniKS-UTF16-V", "Korea1"});
226+
result.add(new Object[]{"UniKS-UTF32-H", "Korea1"});
227+
result.add(new Object[]{"UniKS-UTF32-V", "Korea1"});
228+
229+
result.add(new Object[]{"V", "Japan1"});
230+
result.add(new Object[]{"WP-Symbol", "Japan1"});
231+
232+
result.add(new Object[]{ResourceTestUtil.normalizeResourceName("toUnicode/Adobe-CNS1-UCS2"), "Adobe_CNS1_UCS2"});
233+
result.add(new Object[]{ResourceTestUtil.normalizeResourceName("toUnicode/Adobe-GB1-UCS2"), "Adobe_GB1_UCS2"});
234+
result.add(new Object[]{ResourceTestUtil.normalizeResourceName("toUnicode/Adobe-Japan1-UCS2"), "Adobe_Japan1_UCS2"});
235+
result.add(new Object[]{ResourceTestUtil.normalizeResourceName("toUnicode/Adobe-Korea1-UCS2"), "Adobe_Korea1_UCS2"});
236+
result.add(new Object[]{ResourceTestUtil.normalizeResourceName("toUnicode/Adobe-KR-UCS2"), "Adobe_KR_UCS2"});
237+
238+
return result;
239+
}
240+
241+
private void checkFontAsianCmap(String cmapName, String ordering) {
242+
AbstractCMap cmap = CjkResourceLoader.getUni2CidCmap(cmapName);
243+
Assertions.assertTrue(cmapName.endsWith(cmap.getName()));
244+
Assertions.assertEquals(ordering, cmap.getOrdering());
245+
}
246+
247+
248+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package com.itextpdf.io.font;
2+
3+
class ResourceTestUtil {
4+
5+
public static String normalizeResourceName(String resourceName) {
6+
return resourceName;
7+
}
8+
}

sharpenConfiguration.xml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -569,7 +569,8 @@
569569
<!-- io-tests -->
570570
<fileset reason="Default types of standard output, e.g. Console.Out and System.out, differ between Java and .NET">
571571
<file path="com/itextpdf/io/util/StandardOutUtil.java"/>
572-
</fileset>
572+
<file path="com/itextpdf/io/font/ResourceTestUtil.java"/>
573+
</fileset>
573574

574575
<!-- kernel-tests -->
575576
<fileset reason="The ignore is added here due to java.awt is not expected to be ported">
@@ -682,4 +683,4 @@
682683
</resources>
683684
</module>
684685
</overwritten>
685-
</configuration>
686+
</configuration>

0 commit comments

Comments
 (0)