OLD | NEW |
| (Empty) |
1 #include <stdlib.h> | |
2 #include <stdint.h> | |
3 | |
4 #include <harfbuzz-external.h> | |
5 | |
6 #include "tables/category-properties.h" | |
7 #include "tables/combining-properties.h" | |
8 | |
9 HB_LineBreakClass | |
10 HB_GetLineBreakClass(HB_UChar32 ch) { | |
11 abort(); | |
12 return 0; | |
13 } | |
14 | |
15 static int | |
16 combining_property_cmp(const void *vkey, const void *vcandidate) { | |
17 const uint32_t key = (uint32_t) (intptr_t) vkey; | |
18 const struct combining_property *candidate = vcandidate; | |
19 | |
20 if (key < candidate->range_start) { | |
21 return -1; | |
22 } else if (key > candidate->range_end) { | |
23 return 1; | |
24 } else { | |
25 return 0; | |
26 } | |
27 } | |
28 | |
29 static int | |
30 code_point_to_combining_class(HB_UChar32 cp) { | |
31 const void *vprop = bsearch((void *) (intptr_t) cp, combining_properties, | |
32 combining_properties_count, | |
33 sizeof(struct combining_property), | |
34 combining_property_cmp); | |
35 if (!vprop) | |
36 return 0; | |
37 | |
38 return ((const struct combining_property *) vprop)->klass; | |
39 } | |
40 | |
41 int | |
42 HB_GetUnicodeCharCombiningClass(HB_UChar32 ch) { | |
43 return code_point_to_combining_class(ch); | |
44 return 0; | |
45 } | |
46 | |
47 static int | |
48 category_property_cmp(const void *vkey, const void *vcandidate) { | |
49 const uint32_t key = (uint32_t) (intptr_t) vkey; | |
50 const struct category_property *candidate = vcandidate; | |
51 | |
52 if (key < candidate->range_start) { | |
53 return -1; | |
54 } else if (key > candidate->range_end) { | |
55 return 1; | |
56 } else { | |
57 return 0; | |
58 } | |
59 } | |
60 | |
61 static HB_CharCategory | |
62 code_point_to_category(HB_UChar32 cp) { | |
63 const void *vprop = bsearch((void *) (intptr_t) cp, category_properties, | |
64 category_properties_count, | |
65 sizeof(struct category_property), | |
66 category_property_cmp); | |
67 if (!vprop) | |
68 return HB_NoCategory; | |
69 | |
70 return ((const struct category_property *) vprop)->category; | |
71 } | |
72 | |
73 void | |
74 HB_GetUnicodeCharProperties(HB_UChar32 ch, | |
75 HB_CharCategory *category, | |
76 int *combiningClass) { | |
77 *category = code_point_to_category(ch); | |
78 *combiningClass = code_point_to_combining_class(ch); | |
79 } | |
80 | |
81 HB_CharCategory | |
82 HB_GetUnicodeCharCategory(HB_UChar32 ch) { | |
83 return code_point_to_category(ch); | |
84 } | |
OLD | NEW |