OLD | NEW |
| (Empty) |
1 #include "harfbuzz-external.h" | |
2 | |
3 #include <glib.h> | |
4 | |
5 static int | |
6 hb_category_for_char(HB_UChar32 ch) { | |
7 switch (g_unichar_type(ch)) { | |
8 case G_UNICODE_CONTROL: | |
9 return HB_Other_Control; | |
10 case G_UNICODE_FORMAT: | |
11 return HB_Other_Format; | |
12 case G_UNICODE_UNASSIGNED: | |
13 return HB_Other_NotAssigned; | |
14 case G_UNICODE_PRIVATE_USE: | |
15 return HB_Other_PrivateUse; | |
16 case G_UNICODE_SURROGATE: | |
17 return HB_Other_Surrogate; | |
18 case G_UNICODE_LOWERCASE_LETTER: | |
19 return HB_Letter_Lowercase; | |
20 case G_UNICODE_MODIFIER_LETTER: | |
21 return HB_Letter_Modifier; | |
22 case G_UNICODE_OTHER_LETTER: | |
23 return HB_Letter_Other; | |
24 case G_UNICODE_TITLECASE_LETTER: | |
25 return HB_Letter_Titlecase; | |
26 case G_UNICODE_UPPERCASE_LETTER: | |
27 return HB_Letter_Uppercase; | |
28 case G_UNICODE_COMBINING_MARK: | |
29 return HB_Mark_SpacingCombining; | |
30 case G_UNICODE_ENCLOSING_MARK: | |
31 return HB_Mark_Enclosing; | |
32 case G_UNICODE_NON_SPACING_MARK: | |
33 return HB_Mark_NonSpacing; | |
34 case G_UNICODE_DECIMAL_NUMBER: | |
35 return HB_Number_DecimalDigit; | |
36 case G_UNICODE_LETTER_NUMBER: | |
37 return HB_Number_Letter; | |
38 case G_UNICODE_OTHER_NUMBER: | |
39 return HB_Number_Other; | |
40 case G_UNICODE_CONNECT_PUNCTUATION: | |
41 return HB_Punctuation_Connector; | |
42 case G_UNICODE_DASH_PUNCTUATION: | |
43 return HB_Punctuation_Dash; | |
44 case G_UNICODE_CLOSE_PUNCTUATION: | |
45 return HB_Punctuation_Close; | |
46 case G_UNICODE_FINAL_PUNCTUATION: | |
47 return HB_Punctuation_FinalQuote; | |
48 case G_UNICODE_INITIAL_PUNCTUATION: | |
49 return HB_Punctuation_InitialQuote; | |
50 case G_UNICODE_OTHER_PUNCTUATION: | |
51 return HB_Punctuation_Other; | |
52 case G_UNICODE_OPEN_PUNCTUATION: | |
53 return HB_Punctuation_Open; | |
54 case G_UNICODE_CURRENCY_SYMBOL: | |
55 return HB_Symbol_Currency; | |
56 case G_UNICODE_MODIFIER_SYMBOL: | |
57 return HB_Symbol_Modifier; | |
58 case G_UNICODE_MATH_SYMBOL: | |
59 return HB_Symbol_Math; | |
60 case G_UNICODE_OTHER_SYMBOL: | |
61 return HB_Symbol_Other; | |
62 case G_UNICODE_LINE_SEPARATOR: | |
63 return HB_Separator_Line; | |
64 case G_UNICODE_PARAGRAPH_SEPARATOR: | |
65 return HB_Separator_Paragraph; | |
66 case G_UNICODE_SPACE_SEPARATOR: | |
67 return HB_Separator_Space; | |
68 default: | |
69 return HB_Symbol_Other; | |
70 } | |
71 } | |
72 | |
73 HB_LineBreakClass | |
74 HB_GetLineBreakClass(HB_UChar32 ch) { | |
75 switch (g_unichar_break_type(ch)) { | |
76 case G_UNICODE_BREAK_MANDATORY: | |
77 return HB_LineBreak_BK; | |
78 case G_UNICODE_BREAK_CARRIAGE_RETURN: | |
79 return HB_LineBreak_CR; | |
80 case G_UNICODE_BREAK_LINE_FEED: | |
81 return HB_LineBreak_LF; | |
82 case G_UNICODE_BREAK_COMBINING_MARK: | |
83 return HB_LineBreak_CM; | |
84 case G_UNICODE_BREAK_SURROGATE: | |
85 return HB_LineBreak_SG; | |
86 case G_UNICODE_BREAK_ZERO_WIDTH_SPACE: | |
87 return HB_LineBreak_ZW; | |
88 case G_UNICODE_BREAK_INSEPARABLE: | |
89 return HB_LineBreak_IN; | |
90 case G_UNICODE_BREAK_NON_BREAKING_GLUE: | |
91 return HB_LineBreak_GL; | |
92 case G_UNICODE_BREAK_CONTINGENT: | |
93 return HB_LineBreak_AL; | |
94 case G_UNICODE_BREAK_SPACE: | |
95 return HB_LineBreak_SP; | |
96 case G_UNICODE_BREAK_AFTER: | |
97 return HB_LineBreak_BA; | |
98 case G_UNICODE_BREAK_BEFORE: | |
99 return HB_LineBreak_BB; | |
100 case G_UNICODE_BREAK_BEFORE_AND_AFTER: | |
101 return HB_LineBreak_B2; | |
102 case G_UNICODE_BREAK_HYPHEN: | |
103 return HB_LineBreak_HY; | |
104 case G_UNICODE_BREAK_NON_STARTER: | |
105 return HB_LineBreak_NS; | |
106 case G_UNICODE_BREAK_OPEN_PUNCTUATION: | |
107 return HB_LineBreak_OP; | |
108 case G_UNICODE_BREAK_CLOSE_PUNCTUATION: | |
109 return HB_LineBreak_CL; | |
110 case G_UNICODE_BREAK_QUOTATION: | |
111 return HB_LineBreak_QU; | |
112 case G_UNICODE_BREAK_EXCLAMATION: | |
113 return HB_LineBreak_EX; | |
114 case G_UNICODE_BREAK_IDEOGRAPHIC: | |
115 return HB_LineBreak_ID; | |
116 case G_UNICODE_BREAK_NUMERIC: | |
117 return HB_LineBreak_NU; | |
118 case G_UNICODE_BREAK_INFIX_SEPARATOR: | |
119 return HB_LineBreak_IS; | |
120 case G_UNICODE_BREAK_SYMBOL: | |
121 return HB_LineBreak_SY; | |
122 case G_UNICODE_BREAK_ALPHABETIC: | |
123 return HB_LineBreak_AL; | |
124 case G_UNICODE_BREAK_PREFIX: | |
125 return HB_LineBreak_PR; | |
126 case G_UNICODE_BREAK_POSTFIX: | |
127 return HB_LineBreak_PO; | |
128 case G_UNICODE_BREAK_COMPLEX_CONTEXT: | |
129 return HB_LineBreak_SA; | |
130 case G_UNICODE_BREAK_AMBIGUOUS: | |
131 return HB_LineBreak_AL; | |
132 case G_UNICODE_BREAK_UNKNOWN: | |
133 return HB_LineBreak_AL; | |
134 case G_UNICODE_BREAK_NEXT_LINE: | |
135 return HB_LineBreak_AL; | |
136 case G_UNICODE_BREAK_WORD_JOINER: | |
137 return HB_LineBreak_WJ; | |
138 case G_UNICODE_BREAK_HANGUL_L_JAMO: | |
139 return HB_LineBreak_JL; | |
140 case G_UNICODE_BREAK_HANGUL_V_JAMO: | |
141 return HB_LineBreak_JV; | |
142 case G_UNICODE_BREAK_HANGUL_T_JAMO: | |
143 return HB_LineBreak_JT; | |
144 case G_UNICODE_BREAK_HANGUL_LV_SYLLABLE: | |
145 return HB_LineBreak_H2; | |
146 case G_UNICODE_BREAK_HANGUL_LVT_SYLLABLE: | |
147 return HB_LineBreak_H3; | |
148 default: | |
149 return HB_LineBreak_AL; | |
150 } | |
151 } | |
152 | |
153 int | |
154 HB_GetUnicodeCharCombiningClass(HB_UChar32 ch) { | |
155 return g_unichar_combining_class(ch); | |
156 } | |
157 | |
158 void | |
159 HB_GetUnicodeCharProperties(HB_UChar32 ch, | |
160 HB_CharCategory *category, | |
161 int *combiningClass) { | |
162 *category = hb_category_for_char(ch); | |
163 *combiningClass = g_unichar_combining_class(ch); | |
164 } | |
165 | |
166 HB_CharCategory | |
167 HB_GetUnicodeCharCategory(HB_UChar32 ch) { | |
168 return hb_category_for_char(ch); | |
169 } | |
OLD | NEW |