xref: /aosp_15_r20/external/harfbuzz_ng/test/api/test-subset-nameids.c (revision 2d1272b857b1f7575e6e246373e1cb218663db8a)
1*2d1272b8SAndroid Build Coastguard Worker /*
2*2d1272b8SAndroid Build Coastguard Worker  * Copyright © 2018  Google, Inc.
3*2d1272b8SAndroid Build Coastguard Worker  *
4*2d1272b8SAndroid Build Coastguard Worker  *  This is part of HarfBuzz, a text shaping library.
5*2d1272b8SAndroid Build Coastguard Worker  *
6*2d1272b8SAndroid Build Coastguard Worker  * Permission is hereby granted, without written agreement and without
7*2d1272b8SAndroid Build Coastguard Worker  * license or royalty fees, to use, copy, modify, and distribute this
8*2d1272b8SAndroid Build Coastguard Worker  * software and its documentation for any purpose, provided that the
9*2d1272b8SAndroid Build Coastguard Worker  * above copyright notice and the following two paragraphs appear in
10*2d1272b8SAndroid Build Coastguard Worker  * all copies of this software.
11*2d1272b8SAndroid Build Coastguard Worker  *
12*2d1272b8SAndroid Build Coastguard Worker  * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
13*2d1272b8SAndroid Build Coastguard Worker  * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
14*2d1272b8SAndroid Build Coastguard Worker  * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
15*2d1272b8SAndroid Build Coastguard Worker  * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
16*2d1272b8SAndroid Build Coastguard Worker  * DAMAGE.
17*2d1272b8SAndroid Build Coastguard Worker  *
18*2d1272b8SAndroid Build Coastguard Worker  * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
19*2d1272b8SAndroid Build Coastguard Worker  * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
20*2d1272b8SAndroid Build Coastguard Worker  * FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
21*2d1272b8SAndroid Build Coastguard Worker  * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
22*2d1272b8SAndroid Build Coastguard Worker  * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
23*2d1272b8SAndroid Build Coastguard Worker  *
24*2d1272b8SAndroid Build Coastguard Worker  * Google Author(s): Garret Rieger
25*2d1272b8SAndroid Build Coastguard Worker  */
26*2d1272b8SAndroid Build Coastguard Worker 
27*2d1272b8SAndroid Build Coastguard Worker #include "hb-test.h"
28*2d1272b8SAndroid Build Coastguard Worker #include "hb-subset-test.h"
29*2d1272b8SAndroid Build Coastguard Worker 
30*2d1272b8SAndroid Build Coastguard Worker static void
test_subset_nameids(void)31*2d1272b8SAndroid Build Coastguard Worker test_subset_nameids (void)
32*2d1272b8SAndroid Build Coastguard Worker {
33*2d1272b8SAndroid Build Coastguard Worker   hb_face_t *face_origin = hb_test_open_font_file ("fonts/nameID.origin.ttf");
34*2d1272b8SAndroid Build Coastguard Worker   hb_face_t *face_expected = hb_test_open_font_file ("fonts/nameID.expected.ttf");
35*2d1272b8SAndroid Build Coastguard Worker 
36*2d1272b8SAndroid Build Coastguard Worker   hb_set_t *name_ids = hb_set_create();
37*2d1272b8SAndroid Build Coastguard Worker   hb_face_t *face_subset;
38*2d1272b8SAndroid Build Coastguard Worker   hb_set_add (name_ids, 0);
39*2d1272b8SAndroid Build Coastguard Worker   hb_set_add (name_ids, 9);
40*2d1272b8SAndroid Build Coastguard Worker   face_subset = hb_subset_test_create_subset (face_origin, hb_subset_test_create_input_from_nameids (name_ids));
41*2d1272b8SAndroid Build Coastguard Worker   hb_set_destroy (name_ids);
42*2d1272b8SAndroid Build Coastguard Worker 
43*2d1272b8SAndroid Build Coastguard Worker   hb_subset_test_check (face_expected, face_subset, HB_TAG ('n','a','m','e'));
44*2d1272b8SAndroid Build Coastguard Worker 
45*2d1272b8SAndroid Build Coastguard Worker   hb_face_destroy (face_subset);
46*2d1272b8SAndroid Build Coastguard Worker   hb_face_destroy (face_origin);
47*2d1272b8SAndroid Build Coastguard Worker   hb_face_destroy (face_expected);
48*2d1272b8SAndroid Build Coastguard Worker }
49*2d1272b8SAndroid Build Coastguard Worker 
50*2d1272b8SAndroid Build Coastguard Worker static void
test_subset_nameids_with_dup_strs(void)51*2d1272b8SAndroid Build Coastguard Worker test_subset_nameids_with_dup_strs (void)
52*2d1272b8SAndroid Build Coastguard Worker {
53*2d1272b8SAndroid Build Coastguard Worker   hb_face_t *face_origin = hb_test_open_font_file ("fonts/nameID.dup.origin.ttf");
54*2d1272b8SAndroid Build Coastguard Worker   hb_face_t *face_expected = hb_test_open_font_file ("fonts/nameID.dup.expected.ttf");
55*2d1272b8SAndroid Build Coastguard Worker 
56*2d1272b8SAndroid Build Coastguard Worker   hb_set_t *name_ids = hb_set_create();
57*2d1272b8SAndroid Build Coastguard Worker   hb_face_t *face_subset;
58*2d1272b8SAndroid Build Coastguard Worker   hb_set_add (name_ids, 1);
59*2d1272b8SAndroid Build Coastguard Worker   hb_set_add (name_ids, 3);
60*2d1272b8SAndroid Build Coastguard Worker   face_subset = hb_subset_test_create_subset (face_origin, hb_subset_test_create_input_from_nameids (name_ids));
61*2d1272b8SAndroid Build Coastguard Worker   hb_set_destroy (name_ids);
62*2d1272b8SAndroid Build Coastguard Worker 
63*2d1272b8SAndroid Build Coastguard Worker   hb_subset_test_check (face_expected, face_subset, HB_TAG ('n','a','m','e'));
64*2d1272b8SAndroid Build Coastguard Worker 
65*2d1272b8SAndroid Build Coastguard Worker   hb_face_destroy (face_subset);
66*2d1272b8SAndroid Build Coastguard Worker   hb_face_destroy (face_origin);
67*2d1272b8SAndroid Build Coastguard Worker   hb_face_destroy (face_expected);
68*2d1272b8SAndroid Build Coastguard Worker }
69*2d1272b8SAndroid Build Coastguard Worker 
70*2d1272b8SAndroid Build Coastguard Worker #ifdef HB_EXPERIMENTAL_API
71*2d1272b8SAndroid Build Coastguard Worker static void
test_subset_name_overrides(void)72*2d1272b8SAndroid Build Coastguard Worker test_subset_name_overrides (void)
73*2d1272b8SAndroid Build Coastguard Worker {
74*2d1272b8SAndroid Build Coastguard Worker   hb_face_t *face_origin = hb_test_open_font_file ("fonts/nameID.origin.ttf");
75*2d1272b8SAndroid Build Coastguard Worker   hb_face_t *face_expected = hb_test_open_font_file ("fonts/nameID.override.expected.ttf");
76*2d1272b8SAndroid Build Coastguard Worker 
77*2d1272b8SAndroid Build Coastguard Worker   char str1[] = "Roboto Test";
78*2d1272b8SAndroid Build Coastguard Worker   char str1_3[] = "Roboto Test unicode platform";
79*2d1272b8SAndroid Build Coastguard Worker   char str2[] = "Bold";
80*2d1272b8SAndroid Build Coastguard Worker   char str6[] = "Roboto-Bold";
81*2d1272b8SAndroid Build Coastguard Worker   char str12[] = "Non ascii test Ü";
82*2d1272b8SAndroid Build Coastguard Worker   char str16[] = "Roboto-test-inserting";
83*2d1272b8SAndroid Build Coastguard Worker 
84*2d1272b8SAndroid Build Coastguard Worker   hb_set_t *name_ids = hb_set_create();
85*2d1272b8SAndroid Build Coastguard Worker   hb_face_t *face_subset;
86*2d1272b8SAndroid Build Coastguard Worker   hb_set_add_range (name_ids, 0, 13);
87*2d1272b8SAndroid Build Coastguard Worker 
88*2d1272b8SAndroid Build Coastguard Worker   hb_subset_input_t *subset_input = hb_subset_test_create_input_from_nameids (name_ids);
89*2d1272b8SAndroid Build Coastguard Worker   hb_subset_input_override_name_table (subset_input, 1, 1, 0, 0, str1, -1);
90*2d1272b8SAndroid Build Coastguard Worker   hb_subset_input_override_name_table (subset_input, 1, 3, 1, 0x409, str1_3, -1);
91*2d1272b8SAndroid Build Coastguard Worker   hb_subset_input_override_name_table (subset_input, 2, 1, 0, 0, str2, 4);
92*2d1272b8SAndroid Build Coastguard Worker   hb_subset_input_override_name_table (subset_input, 6, 1, 0, 0, str6, -1);
93*2d1272b8SAndroid Build Coastguard Worker   hb_subset_input_override_name_table (subset_input, 12, 1, 0, 0, str12, -1);
94*2d1272b8SAndroid Build Coastguard Worker   hb_subset_input_override_name_table (subset_input, 14, 1, 0, 0, NULL, -1);
95*2d1272b8SAndroid Build Coastguard Worker   hb_subset_input_override_name_table (subset_input, 16, 1, 0, 0, str16, -1);
96*2d1272b8SAndroid Build Coastguard Worker 
97*2d1272b8SAndroid Build Coastguard Worker   face_subset = hb_subset_test_create_subset (face_origin, subset_input);
98*2d1272b8SAndroid Build Coastguard Worker   hb_set_destroy (name_ids);
99*2d1272b8SAndroid Build Coastguard Worker 
100*2d1272b8SAndroid Build Coastguard Worker   hb_subset_test_check (face_expected, face_subset, HB_TAG ('n','a','m','e'));
101*2d1272b8SAndroid Build Coastguard Worker 
102*2d1272b8SAndroid Build Coastguard Worker   hb_face_destroy (face_subset);
103*2d1272b8SAndroid Build Coastguard Worker   hb_face_destroy (face_origin);
104*2d1272b8SAndroid Build Coastguard Worker   hb_face_destroy (face_expected);
105*2d1272b8SAndroid Build Coastguard Worker }
106*2d1272b8SAndroid Build Coastguard Worker #endif
107*2d1272b8SAndroid Build Coastguard Worker 
108*2d1272b8SAndroid Build Coastguard Worker int
main(int argc,char ** argv)109*2d1272b8SAndroid Build Coastguard Worker main (int argc, char **argv)
110*2d1272b8SAndroid Build Coastguard Worker {
111*2d1272b8SAndroid Build Coastguard Worker   hb_test_init (&argc, &argv);
112*2d1272b8SAndroid Build Coastguard Worker 
113*2d1272b8SAndroid Build Coastguard Worker   hb_test_add (test_subset_nameids);
114*2d1272b8SAndroid Build Coastguard Worker   hb_test_add (test_subset_nameids_with_dup_strs);
115*2d1272b8SAndroid Build Coastguard Worker #ifdef HB_EXPERIMENTAL_API
116*2d1272b8SAndroid Build Coastguard Worker   hb_test_add (test_subset_name_overrides);
117*2d1272b8SAndroid Build Coastguard Worker #endif
118*2d1272b8SAndroid Build Coastguard Worker 
119*2d1272b8SAndroid Build Coastguard Worker   return hb_test_run();
120*2d1272b8SAndroid Build Coastguard Worker }
121