b2887125a9292bdd92c3861ceb32dc2a496ebe07
[platform/upstream/libunistring.git] / doc / libunistring_8.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
2 <html>
3 <!-- Created on March, 30 2010 by texi2html 1.78a -->
4 <!--
5 Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
6             Karl Berry  <karl@freefriends.org>
7             Olaf Bachmann <obachman@mathematik.uni-kl.de>
8             and many others.
9 Maintained by: Many creative people.
10 Send bugs and suggestions to <texi2html-bug@nongnu.org>
11
12 -->
13 <head>
14 <title>GNU libunistring: 8. Unicode character classification and properties &lt;unictype.h&gt;</title>
15
16 <meta name="description" content="GNU libunistring: 8. Unicode character classification and properties &lt;unictype.h&gt;">
17 <meta name="keywords" content="GNU libunistring: 8. Unicode character classification and properties &lt;unictype.h&gt;">
18 <meta name="resource-type" content="document">
19 <meta name="distribution" content="global">
20 <meta name="Generator" content="texi2html 1.78a">
21 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
22 <style type="text/css">
23 <!--
24 a.summary-letter {text-decoration: none}
25 pre.display {font-family: serif}
26 pre.format {font-family: serif}
27 pre.menu-comment {font-family: serif}
28 pre.menu-preformatted {font-family: serif}
29 pre.smalldisplay {font-family: serif; font-size: smaller}
30 pre.smallexample {font-size: smaller}
31 pre.smallformat {font-family: serif; font-size: smaller}
32 pre.smalllisp {font-size: smaller}
33 span.roman {font-family:serif; font-weight:normal;}
34 span.sansserif {font-family:sans-serif; font-weight:normal;}
35 ul.toc {list-style: none}
36 -->
37 </style>
38
39
40 </head>
41
42 <body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
43
44 <table cellpadding="1" cellspacing="1" border="0">
45 <tr><td valign="middle" align="left">[<a href="libunistring_7.html#SEC19" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
46 <td valign="middle" align="left">[<a href="libunistring_9.html#SEC37" title="Next chapter"> &gt;&gt; </a>]</td>
47 <td valign="middle" align="left"> &nbsp; </td>
48 <td valign="middle" align="left"> &nbsp; </td>
49 <td valign="middle" align="left"> &nbsp; </td>
50 <td valign="middle" align="left"> &nbsp; </td>
51 <td valign="middle" align="left"> &nbsp; </td>
52 <td valign="middle" align="left">[<a href="libunistring.html#SEC_Top" title="Cover (top) of document">Top</a>]</td>
53 <td valign="middle" align="left">[<a href="libunistring.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
54 <td valign="middle" align="left">[<a href="libunistring_18.html#SEC71" title="Index">Index</a>]</td>
55 <td valign="middle" align="left">[<a href="libunistring_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
56 </tr></table>
57
58 <hr size="2">
59 <a name="unictype_002eh"></a>
60 <a name="SEC20"></a>
61 <h1 class="chapter"> <a href="libunistring.html#TOC20">8. Unicode character classification and properties <code>&lt;unictype.h&gt;</code></a> </h1>
62
63 <p>This include file declares functions that classify Unicode characters
64 and that test whether Unicode characters have specific properties.
65 </p>
66 <p>The classification assigns a &ldquo;general category&rdquo; to every Unicode
67 character.  This is similar to the classification provided by ISO C in
68 <code>&lt;wctype.h&gt;</code>.
69 </p>
70 <p>Properties are the data that guides various text processing algorithms
71 in the presence of specific Unicode characters.
72 </p>
73
74 <hr size="6">
75 <a name="General-category"></a>
76 <a name="SEC21"></a>
77 <h2 class="section"> <a href="libunistring.html#TOC21">8.1 General category</a> </h2>
78
79 <p>Every Unicode character or code point has a <em>general category</em> assigned
80 to it.  This classification is important for most algorithms that work on
81 Unicode text.
82 </p>
83 <p>The GNU libunistring library provides two kinds of API for working with
84 general categories.  The object oriented API uses a variable to denote
85 every predefined general category value or combinations thereof.  The
86 low-level API uses a bit mask instead.  The advantage of the object oriented
87 API is that if only a few predefined general category values are used,
88 the data tables are relatively small.  When you combine general category
89 values (using <code>uc_general_category_or</code>, <code>uc_general_category_and</code>,
90 or <code>uc_general_category_and_not</code>), or when you use the low level
91 bit masks, a big table is used thats holds the complete general category
92 information for all Unicode characters.
93 </p>
94
95 <hr size="6">
96 <a name="Object-oriented-API"></a>
97 <a name="SEC22"></a>
98 <h3 class="subsection"> <a href="libunistring.html#TOC22">8.1.1 The object oriented API for general category</a> </h3>
99
100 <dl>
101 <dt><u>Type:</u> <b>uc_general_category_t</b>
102 <a name="IDX241"></a>
103 </dt>
104 <dd><p>This data type denotes a general category value.  It is an immediate type that
105 can be copied by simple assignment, without involving memory allocation.  It is
106 not an array type.
107 </p></dd></dl>
108
109 <p>The following are the predefined general category value.  Additional general
110 categories may be added in the future.
111 </p>
112 <dl>
113 <dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_L</b>
114 <a name="IDX242"></a>
115 </dt>
116 <dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_Lu</b>
117 <a name="IDX243"></a>
118 </dt>
119 <dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_Ll</b>
120 <a name="IDX244"></a>
121 </dt>
122 <dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_Lt</b>
123 <a name="IDX245"></a>
124 </dt>
125 <dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_Lm</b>
126 <a name="IDX246"></a>
127 </dt>
128 <dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_Lo</b>
129 <a name="IDX247"></a>
130 </dt>
131 <dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_M</b>
132 <a name="IDX248"></a>
133 </dt>
134 <dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_Mn</b>
135 <a name="IDX249"></a>
136 </dt>
137 <dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_Mc</b>
138 <a name="IDX250"></a>
139 </dt>
140 <dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_Me</b>
141 <a name="IDX251"></a>
142 </dt>
143 <dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_N</b>
144 <a name="IDX252"></a>
145 </dt>
146 <dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_Nd</b>
147 <a name="IDX253"></a>
148 </dt>
149 <dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_Nl</b>
150 <a name="IDX254"></a>
151 </dt>
152 <dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_No</b>
153 <a name="IDX255"></a>
154 </dt>
155 <dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_P</b>
156 <a name="IDX256"></a>
157 </dt>
158 <dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_Pc</b>
159 <a name="IDX257"></a>
160 </dt>
161 <dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_Pd</b>
162 <a name="IDX258"></a>
163 </dt>
164 <dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_Ps</b>
165 <a name="IDX259"></a>
166 </dt>
167 <dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_Pe</b>
168 <a name="IDX260"></a>
169 </dt>
170 <dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_Pi</b>
171 <a name="IDX261"></a>
172 </dt>
173 <dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_Pf</b>
174 <a name="IDX262"></a>
175 </dt>
176 <dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_Po</b>
177 <a name="IDX263"></a>
178 </dt>
179 <dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_S</b>
180 <a name="IDX264"></a>
181 </dt>
182 <dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_Sm</b>
183 <a name="IDX265"></a>
184 </dt>
185 <dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_Sc</b>
186 <a name="IDX266"></a>
187 </dt>
188 <dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_Sk</b>
189 <a name="IDX267"></a>
190 </dt>
191 <dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_So</b>
192 <a name="IDX268"></a>
193 </dt>
194 <dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_Z</b>
195 <a name="IDX269"></a>
196 </dt>
197 <dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_Zs</b>
198 <a name="IDX270"></a>
199 </dt>
200 <dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_Zl</b>
201 <a name="IDX271"></a>
202 </dt>
203 <dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_Zp</b>
204 <a name="IDX272"></a>
205 </dt>
206 <dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_C</b>
207 <a name="IDX273"></a>
208 </dt>
209 <dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_Cc</b>
210 <a name="IDX274"></a>
211 </dt>
212 <dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_Cf</b>
213 <a name="IDX275"></a>
214 </dt>
215 <dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_Cs</b>
216 <a name="IDX276"></a>
217 </dt>
218 <dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_Co</b>
219 <a name="IDX277"></a>
220 </dt>
221 <dt><u>Constant:</u> uc_general_category_t <b>UC_CATEGORY_Cn</b>
222 <a name="IDX278"></a>
223 </dt>
224 </dl>
225
226 <p>The following are alias names for predefined General category values.
227 </p>
228 <dl>
229 <dt><u>Macro:</u> uc_general_category_t <b>UC_LETTER</b>
230 <a name="IDX279"></a>
231 </dt>
232 <dd><p>This is another name for <code>UC_CATEGORY_L</code>.
233 </p></dd></dl>
234
235 <dl>
236 <dt><u>Macro:</u> uc_general_category_t <b>UC_UPPERCASE_LETTER</b>
237 <a name="IDX280"></a>
238 </dt>
239 <dd><p>This is another name for <code>UC_CATEGORY_Lu</code>.
240 </p></dd></dl>
241
242 <dl>
243 <dt><u>Macro:</u> uc_general_category_t <b>UC_LOWERCASE_LETTER</b>
244 <a name="IDX281"></a>
245 </dt>
246 <dd><p>This is another name for <code>UC_CATEGORY_Ll</code>.
247 </p></dd></dl>
248
249 <dl>
250 <dt><u>Macro:</u> uc_general_category_t <b>UC_TITLECASE_LETTER</b>
251 <a name="IDX282"></a>
252 </dt>
253 <dd><p>This is another name for <code>UC_CATEGORY_Lt</code>.
254 </p></dd></dl>
255
256 <dl>
257 <dt><u>Macro:</u> uc_general_category_t <b>UC_MODIFIER_LETTER</b>
258 <a name="IDX283"></a>
259 </dt>
260 <dd><p>This is another name for <code>UC_CATEGORY_Lm</code>.
261 </p></dd></dl>
262
263 <dl>
264 <dt><u>Macro:</u> uc_general_category_t <b>UC_OTHER_LETTER</b>
265 <a name="IDX284"></a>
266 </dt>
267 <dd><p>This is another name for <code>UC_CATEGORY_Lo</code>.
268 </p></dd></dl>
269
270 <dl>
271 <dt><u>Macro:</u> uc_general_category_t <b>UC_MARK</b>
272 <a name="IDX285"></a>
273 </dt>
274 <dd><p>This is another name for <code>UC_CATEGORY_M</code>.
275 </p></dd></dl>
276
277 <dl>
278 <dt><u>Macro:</u> uc_general_category_t <b>UC_NON_SPACING_MARK</b>
279 <a name="IDX286"></a>
280 </dt>
281 <dd><p>This is another name for <code>UC_CATEGORY_Mn</code>.
282 </p></dd></dl>
283
284 <dl>
285 <dt><u>Macro:</u> uc_general_category_t <b>UC_COMBINING_SPACING_MARK</b>
286 <a name="IDX287"></a>
287 </dt>
288 <dd><p>This is another name for <code>UC_CATEGORY_Mc</code>.
289 </p></dd></dl>
290
291 <dl>
292 <dt><u>Macro:</u> uc_general_category_t <b>UC_ENCLOSING_MARK</b>
293 <a name="IDX288"></a>
294 </dt>
295 <dd><p>This is another name for <code>UC_CATEGORY_Me</code>.
296 </p></dd></dl>
297
298 <dl>
299 <dt><u>Macro:</u> uc_general_category_t <b>UC_NUMBER</b>
300 <a name="IDX289"></a>
301 </dt>
302 <dd><p>This is another name for <code>UC_CATEGORY_N</code>.
303 </p></dd></dl>
304
305 <dl>
306 <dt><u>Macro:</u> uc_general_category_t <b>UC_DECIMAL_DIGIT_NUMBER</b>
307 <a name="IDX290"></a>
308 </dt>
309 <dd><p>This is another name for <code>UC_CATEGORY_Nd</code>.
310 </p></dd></dl>
311
312 <dl>
313 <dt><u>Macro:</u> uc_general_category_t <b>UC_LETTER_NUMBER</b>
314 <a name="IDX291"></a>
315 </dt>
316 <dd><p>This is another name for <code>UC_CATEGORY_Nl</code>.
317 </p></dd></dl>
318
319 <dl>
320 <dt><u>Macro:</u> uc_general_category_t <b>UC_OTHER_NUMBER</b>
321 <a name="IDX292"></a>
322 </dt>
323 <dd><p>This is another name for <code>UC_CATEGORY_No</code>.
324 </p></dd></dl>
325
326 <dl>
327 <dt><u>Macro:</u> uc_general_category_t <b>UC_PUNCTUATION</b>
328 <a name="IDX293"></a>
329 </dt>
330 <dd><p>This is another name for <code>UC_CATEGORY_P</code>.
331 </p></dd></dl>
332
333 <dl>
334 <dt><u>Macro:</u> uc_general_category_t <b>UC_CONNECTOR_PUNCTUATION</b>
335 <a name="IDX294"></a>
336 </dt>
337 <dd><p>This is another name for <code>UC_CATEGORY_Pc</code>.
338 </p></dd></dl>
339
340 <dl>
341 <dt><u>Macro:</u> uc_general_category_t <b>UC_DASH_PUNCTUATION</b>
342 <a name="IDX295"></a>
343 </dt>
344 <dd><p>This is another name for <code>UC_CATEGORY_Pd</code>.
345 </p></dd></dl>
346
347 <dl>
348 <dt><u>Macro:</u> uc_general_category_t <b>UC_OPEN_PUNCTUATION</b>
349 <a name="IDX296"></a>
350 </dt>
351 <dd><p>This is another name for <code>UC_CATEGORY_Ps</code> (&ldquo;start punctuation&rdquo;).
352 </p></dd></dl>
353
354 <dl>
355 <dt><u>Macro:</u> uc_general_category_t <b>UC_CLOSE_PUNCTUATION</b>
356 <a name="IDX297"></a>
357 </dt>
358 <dd><p>This is another name for <code>UC_CATEGORY_Pe</code> (&ldquo;end punctuation&rdquo;).
359 </p></dd></dl>
360
361 <dl>
362 <dt><u>Macro:</u> uc_general_category_t <b>UC_INITIAL_QUOTE_PUNCTUATION</b>
363 <a name="IDX298"></a>
364 </dt>
365 <dd><p>This is another name for <code>UC_CATEGORY_Pi</code>.
366 </p></dd></dl>
367
368 <dl>
369 <dt><u>Macro:</u> uc_general_category_t <b>UC_FINAL_QUOTE_PUNCTUATION</b>
370 <a name="IDX299"></a>
371 </dt>
372 <dd><p>This is another name for <code>UC_CATEGORY_Pf</code>.
373 </p></dd></dl>
374
375 <dl>
376 <dt><u>Macro:</u> uc_general_category_t <b>UC_OTHER_PUNCTUATION</b>
377 <a name="IDX300"></a>
378 </dt>
379 <dd><p>This is another name for <code>UC_CATEGORY_Po</code>.
380 </p></dd></dl>
381
382 <dl>
383 <dt><u>Macro:</u> uc_general_category_t <b>UC_SYMBOL</b>
384 <a name="IDX301"></a>
385 </dt>
386 <dd><p>This is another name for <code>UC_CATEGORY_S</code>.
387 </p></dd></dl>
388
389 <dl>
390 <dt><u>Macro:</u> uc_general_category_t <b>UC_MATH_SYMBOL</b>
391 <a name="IDX302"></a>
392 </dt>
393 <dd><p>This is another name for <code>UC_CATEGORY_Sm</code>.
394 </p></dd></dl>
395
396 <dl>
397 <dt><u>Macro:</u> uc_general_category_t <b>UC_CURRENCY_SYMBOL</b>
398 <a name="IDX303"></a>
399 </dt>
400 <dd><p>This is another name for <code>UC_CATEGORY_Sc</code>.
401 </p></dd></dl>
402
403 <dl>
404 <dt><u>Macro:</u> uc_general_category_t <b>UC_MODIFIER_SYMBOL</b>
405 <a name="IDX304"></a>
406 </dt>
407 <dd><p>This is another name for <code>UC_CATEGORY_Sk</code>.
408 </p></dd></dl>
409
410 <dl>
411 <dt><u>Macro:</u> uc_general_category_t <b>UC_OTHER_SYMBOL</b>
412 <a name="IDX305"></a>
413 </dt>
414 <dd><p>This is another name for <code>UC_CATEGORY_So</code>.
415 </p></dd></dl>
416
417 <dl>
418 <dt><u>Macro:</u> uc_general_category_t <b>UC_SEPARATOR</b>
419 <a name="IDX306"></a>
420 </dt>
421 <dd><p>This is another name for <code>UC_CATEGORY_Z</code>.
422 </p></dd></dl>
423
424 <dl>
425 <dt><u>Macro:</u> uc_general_category_t <b>UC_SPACE_SEPARATOR</b>
426 <a name="IDX307"></a>
427 </dt>
428 <dd><p>This is another name for <code>UC_CATEGORY_Zs</code>.
429 </p></dd></dl>
430
431 <dl>
432 <dt><u>Macro:</u> uc_general_category_t <b>UC_LINE_SEPARATOR</b>
433 <a name="IDX308"></a>
434 </dt>
435 <dd><p>This is another name for <code>UC_CATEGORY_Zl</code>.
436 </p></dd></dl>
437
438 <dl>
439 <dt><u>Macro:</u> uc_general_category_t <b>UC_PARAGRAPH_SEPARATOR</b>
440 <a name="IDX309"></a>
441 </dt>
442 <dd><p>This is another name for <code>UC_CATEGORY_Zp</code>.
443 </p></dd></dl>
444
445 <dl>
446 <dt><u>Macro:</u> uc_general_category_t <b>UC_OTHER</b>
447 <a name="IDX310"></a>
448 </dt>
449 <dd><p>This is another name for <code>UC_CATEGORY_C</code>.
450 </p></dd></dl>
451
452 <dl>
453 <dt><u>Macro:</u> uc_general_category_t <b>UC_CONTROL</b>
454 <a name="IDX311"></a>
455 </dt>
456 <dd><p>This is another name for <code>UC_CATEGORY_Cc</code>.
457 </p></dd></dl>
458
459 <dl>
460 <dt><u>Macro:</u> uc_general_category_t <b>UC_FORMAT</b>
461 <a name="IDX312"></a>
462 </dt>
463 <dd><p>This is another name for <code>UC_CATEGORY_Cf</code>.
464 </p></dd></dl>
465
466 <dl>
467 <dt><u>Macro:</u> uc_general_category_t <b>UC_SURROGATE</b>
468 <a name="IDX313"></a>
469 </dt>
470 <dd><p>This is another name for <code>UC_CATEGORY_Cs</code>.  All code points in this
471 category are invalid characters.
472 </p></dd></dl>
473
474 <dl>
475 <dt><u>Macro:</u> uc_general_category_t <b>UC_PRIVATE_USE</b>
476 <a name="IDX314"></a>
477 </dt>
478 <dd><p>This is another name for <code>UC_CATEGORY_Co</code>.
479 </p></dd></dl>
480
481 <dl>
482 <dt><u>Macro:</u> uc_general_category_t <b>UC_UNASSIGNED</b>
483 <a name="IDX315"></a>
484 </dt>
485 <dd><p>This is another name for <code>UC_CATEGORY_Cn</code>.  Some code points in this
486 category are invalid characters.
487 </p></dd></dl>
488
489 <p>The following functions combine general categories, like in a boolean algebra,
490 except that there is no &lsquo;<samp>not</samp>&rsquo; operation.
491 </p>
492 <dl>
493 <dt><u>Function:</u> uc_general_category_t <b>uc_general_category_or</b><i> (uc_general_category_t <var>category1</var>, uc_general_category_t <var>category2</var>)</i>
494 <a name="IDX316"></a>
495 </dt>
496 <dd><p>Returns the union of two general categories.
497 This corresponds to the unions of the two sets of characters.
498 </p></dd></dl>
499
500 <dl>
501 <dt><u>Function:</u> uc_general_category_t <b>uc_general_category_and</b><i> (uc_general_category_t <var>category1</var>, uc_general_category_t <var>category2</var>)</i>
502 <a name="IDX317"></a>
503 </dt>
504 <dd><p>Returns the intersection of two general categories as bit masks.
505 This <em>does not</em> correspond to the intersection of the two sets of
506 characters.
507 </p></dd></dl>
508
509 <dl>
510 <dt><u>Function:</u> uc_general_category_t <b>uc_general_category_and_not</b><i> (uc_general_category_t <var>category1</var>, uc_general_category_t <var>category2</var>)</i>
511 <a name="IDX318"></a>
512 </dt>
513 <dd><p>Returns the intersection of a general category with the complement of a
514 second general category, as bit masks.
515 This <em>does not</em> correspond to the intersection with complement, when
516 viewing the categories as sets of characters.
517 </p></dd></dl>
518
519 <p>The following functions associate general categories with their name.
520 </p>
521 <dl>
522 <dt><u>Function:</u> const char * <b>uc_general_category_name</b><i> (uc_general_category_t <var>category</var>)</i>
523 <a name="IDX319"></a>
524 </dt>
525 <dd><p>Returns the name of a general category.
526 Returns NULL if the general category corresponds to a bit mask that does not
527 have a name.
528 </p></dd></dl>
529
530 <dl>
531 <dt><u>Function:</u> uc_general_category_t <b>uc_general_category_byname</b><i> (const char *<var>category_name</var>)</i>
532 <a name="IDX320"></a>
533 </dt>
534 <dd><p>Returns the general category given by name, e.g. <code>&quot;Lu&quot;</code>.
535 </p></dd></dl>
536
537 <p>The following functions view general categories as sets of Unicode characters.
538 </p>
539 <dl>
540 <dt><u>Function:</u> uc_general_category_t <b>uc_general_category</b><i> (ucs4_t <var>uc</var>)</i>
541 <a name="IDX321"></a>
542 </dt>
543 <dd><p>Returns the general category of a Unicode character.
544 </p>
545 <p>This function uses a big table.
546 </p></dd></dl>
547
548 <dl>
549 <dt><u>Function:</u> bool <b>uc_is_general_category</b><i> (ucs4_t <var>uc</var>, uc_general_category_t <var>category</var>)</i>
550 <a name="IDX322"></a>
551 </dt>
552 <dd><p>Tests whether a Unicode character belongs to a given category.
553 The <var>category</var> argument can be a predefined general category or the
554 combination of several predefined general categories.
555 </p></dd></dl>
556
557 <hr size="6">
558 <a name="Bit-mask-API"></a>
559 <a name="SEC23"></a>
560 <h3 class="subsection"> <a href="libunistring.html#TOC23">8.1.2 The bit mask API for general category</a> </h3>
561
562 <p>The following are the predefined general category value as bit masks.
563 Additional general categories may be added in the future.
564 </p>
565 <dl>
566 <dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_L</b>
567 <a name="IDX323"></a>
568 </dt>
569 <dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_Lu</b>
570 <a name="IDX324"></a>
571 </dt>
572 <dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_Ll</b>
573 <a name="IDX325"></a>
574 </dt>
575 <dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_Lt</b>
576 <a name="IDX326"></a>
577 </dt>
578 <dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_Lm</b>
579 <a name="IDX327"></a>
580 </dt>
581 <dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_Lo</b>
582 <a name="IDX328"></a>
583 </dt>
584 <dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_M</b>
585 <a name="IDX329"></a>
586 </dt>
587 <dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_Mn</b>
588 <a name="IDX330"></a>
589 </dt>
590 <dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_Mc</b>
591 <a name="IDX331"></a>
592 </dt>
593 <dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_Me</b>
594 <a name="IDX332"></a>
595 </dt>
596 <dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_N</b>
597 <a name="IDX333"></a>
598 </dt>
599 <dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_Nd</b>
600 <a name="IDX334"></a>
601 </dt>
602 <dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_Nl</b>
603 <a name="IDX335"></a>
604 </dt>
605 <dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_No</b>
606 <a name="IDX336"></a>
607 </dt>
608 <dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_P</b>
609 <a name="IDX337"></a>
610 </dt>
611 <dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_Pc</b>
612 <a name="IDX338"></a>
613 </dt>
614 <dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_Pd</b>
615 <a name="IDX339"></a>
616 </dt>
617 <dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_Ps</b>
618 <a name="IDX340"></a>
619 </dt>
620 <dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_Pe</b>
621 <a name="IDX341"></a>
622 </dt>
623 <dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_Pi</b>
624 <a name="IDX342"></a>
625 </dt>
626 <dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_Pf</b>
627 <a name="IDX343"></a>
628 </dt>
629 <dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_Po</b>
630 <a name="IDX344"></a>
631 </dt>
632 <dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_S</b>
633 <a name="IDX345"></a>
634 </dt>
635 <dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_Sm</b>
636 <a name="IDX346"></a>
637 </dt>
638 <dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_Sc</b>
639 <a name="IDX347"></a>
640 </dt>
641 <dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_Sk</b>
642 <a name="IDX348"></a>
643 </dt>
644 <dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_So</b>
645 <a name="IDX349"></a>
646 </dt>
647 <dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_Z</b>
648 <a name="IDX350"></a>
649 </dt>
650 <dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_Zs</b>
651 <a name="IDX351"></a>
652 </dt>
653 <dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_Zl</b>
654 <a name="IDX352"></a>
655 </dt>
656 <dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_Zp</b>
657 <a name="IDX353"></a>
658 </dt>
659 <dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_C</b>
660 <a name="IDX354"></a>
661 </dt>
662 <dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_Cc</b>
663 <a name="IDX355"></a>
664 </dt>
665 <dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_Cf</b>
666 <a name="IDX356"></a>
667 </dt>
668 <dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_Cs</b>
669 <a name="IDX357"></a>
670 </dt>
671 <dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_Co</b>
672 <a name="IDX358"></a>
673 </dt>
674 <dt><u>Macro:</u> uint32_t <b>UC_CATEGORY_MASK_Cn</b>
675 <a name="IDX359"></a>
676 </dt>
677 </dl>
678
679 <p>The following function views general categories as sets of Unicode characters.
680 </p>
681 <dl>
682 <dt><u>Function:</u> bool <b>uc_is_general_category_withtable</b><i> (ucs4_t <var>uc</var>, uint32_t <var>bitmask</var>)</i>
683 <a name="IDX360"></a>
684 </dt>
685 <dd><p>Tests whether a Unicode character belongs to a given category.
686 The <var>bitmask</var> argument can be a predefined general category bitmask or the
687 combination of several predefined general category bitmasks.
688 </p>
689 <p>This function uses a big table comprising all general categories.
690 </p></dd></dl>
691
692 <hr size="6">
693 <a name="Canonical-combining-class"></a>
694 <a name="SEC24"></a>
695 <h2 class="section"> <a href="libunistring.html#TOC24">8.2 Canonical combining class</a> </h2>
696
697 <p>Every Unicode character or code point has a <em>canonical combining class</em>
698 assigned to it.
699 </p>
700 <p>What is the meaning of the canonical combining class?  Essentially, it
701 indicates the priority with which a combining character is attached to its
702 base character.  The characters for which the canonical combining class is 0
703 are the base characters, and the characters for which it is greater than 0 are
704 the combining characters.  Combining characters are rendered
705 near/attached/around their base character, and combining characters with small
706 combining classes are attached &quot;first&quot; or &quot;closer&quot; to the base character.
707 </p>
708 <p>The canonical combining class of a character is a number in the range
709 0..255.  The possible values are described in the Unicode Character Database
710 <a href="http://www.unicode.org/Public/UNIDATA/UCD.html">http://www.unicode.org/Public/UNIDATA/UCD.html</a>.  The list here is
711 not definitive; more values can be added in future versions.
712 </p>
713 <dl>
714 <dt><u>Constant:</u> int <b>UC_CCC_NR</b>
715 <a name="IDX361"></a>
716 </dt>
717 <dd><p>The canonical combining class value for &ldquo;Not Reordered&rdquo; characters.
718 The value is 0.
719 </p></dd></dl>
720
721 <dl>
722 <dt><u>Constant:</u> int <b>UC_CCC_OV</b>
723 <a name="IDX362"></a>
724 </dt>
725 <dd><p>The canonical combining class value for &ldquo;Overlay&rdquo; characters.
726 </p></dd></dl>
727
728 <dl>
729 <dt><u>Constant:</u> int <b>UC_CCC_NK</b>
730 <a name="IDX363"></a>
731 </dt>
732 <dd><p>The canonical combining class value for &ldquo;Nukta&rdquo; characters.
733 </p></dd></dl>
734
735 <dl>
736 <dt><u>Constant:</u> int <b>UC_CCC_KV</b>
737 <a name="IDX364"></a>
738 </dt>
739 <dd><p>The canonical combining class value for &ldquo;Kana Voicing&rdquo; characters.
740 </p></dd></dl>
741
742 <dl>
743 <dt><u>Constant:</u> int <b>UC_CCC_VR</b>
744 <a name="IDX365"></a>
745 </dt>
746 <dd><p>The canonical combining class value for &ldquo;Virama&rdquo; characters.
747 </p></dd></dl>
748
749 <dl>
750 <dt><u>Constant:</u> int <b>UC_CCC_ATBL</b>
751 <a name="IDX366"></a>
752 </dt>
753 <dd><p>The canonical combining class value for &ldquo;Attached Below Left&rdquo; characters.
754 </p></dd></dl>
755
756 <dl>
757 <dt><u>Constant:</u> int <b>UC_CCC_ATB</b>
758 <a name="IDX367"></a>
759 </dt>
760 <dd><p>The canonical combining class value for &ldquo;Attached Below&rdquo; characters.
761 </p></dd></dl>
762
763 <dl>
764 <dt><u>Constant:</u> int <b>UC_CCC_ATAR</b>
765 <a name="IDX368"></a>
766 </dt>
767 <dd><p>The canonical combining class value for &ldquo;Attached Above Right&rdquo; characters.
768 </p></dd></dl>
769
770 <dl>
771 <dt><u>Constant:</u> int <b>UC_CCC_BL</b>
772 <a name="IDX369"></a>
773 </dt>
774 <dd><p>The canonical combining class value for &ldquo;Below Left&rdquo; characters.
775 </p></dd></dl>
776
777 <dl>
778 <dt><u>Constant:</u> int <b>UC_CCC_B</b>
779 <a name="IDX370"></a>
780 </dt>
781 <dd><p>The canonical combining class value for &ldquo;Below&rdquo; characters.
782 </p></dd></dl>
783
784 <dl>
785 <dt><u>Constant:</u> int <b>UC_CCC_BR</b>
786 <a name="IDX371"></a>
787 </dt>
788 <dd><p>The canonical combining class value for &ldquo;Below Right&rdquo; characters.
789 </p></dd></dl>
790
791 <dl>
792 <dt><u>Constant:</u> int <b>UC_CCC_L</b>
793 <a name="IDX372"></a>
794 </dt>
795 <dd><p>The canonical combining class value for &ldquo;Left&rdquo; characters.
796 </p></dd></dl>
797
798 <dl>
799 <dt><u>Constant:</u> int <b>UC_CCC_R</b>
800 <a name="IDX373"></a>
801 </dt>
802 <dd><p>The canonical combining class value for &ldquo;Right&rdquo; characters.
803 </p></dd></dl>
804
805 <dl>
806 <dt><u>Constant:</u> int <b>UC_CCC_AL</b>
807 <a name="IDX374"></a>
808 </dt>
809 <dd><p>The canonical combining class value for &ldquo;Above Left&rdquo; characters.
810 </p></dd></dl>
811
812 <dl>
813 <dt><u>Constant:</u> int <b>UC_CCC_A</b>
814 <a name="IDX375"></a>
815 </dt>
816 <dd><p>The canonical combining class value for &ldquo;Above&rdquo; characters.
817 </p></dd></dl>
818
819 <dl>
820 <dt><u>Constant:</u> int <b>UC_CCC_AR</b>
821 <a name="IDX376"></a>
822 </dt>
823 <dd><p>The canonical combining class value for &ldquo;Above Right&rdquo; characters.
824 </p></dd></dl>
825
826 <dl>
827 <dt><u>Constant:</u> int <b>UC_CCC_DB</b>
828 <a name="IDX377"></a>
829 </dt>
830 <dd><p>The canonical combining class value for &ldquo;Double Below&rdquo; characters.
831 </p></dd></dl>
832
833 <dl>
834 <dt><u>Constant:</u> int <b>UC_CCC_DA</b>
835 <a name="IDX378"></a>
836 </dt>
837 <dd><p>The canonical combining class value for &ldquo;Double Above&rdquo; characters.
838 </p></dd></dl>
839
840 <dl>
841 <dt><u>Constant:</u> int <b>UC_CCC_IS</b>
842 <a name="IDX379"></a>
843 </dt>
844 <dd><p>The canonical combining class value for &ldquo;Iota Subscript&rdquo; characters.
845 </p></dd></dl>
846
847 <p>The following function looks up the canonical combining class of a character.
848 </p>
849 <dl>
850 <dt><u>Function:</u> int <b>uc_combining_class</b><i> (ucs4_t <var>uc</var>)</i>
851 <a name="IDX380"></a>
852 </dt>
853 <dd><p>Returns the canonical combining class of a Unicode character.
854 </p></dd></dl>
855
856 <hr size="6">
857 <a name="Bidirectional-category"></a>
858 <a name="SEC25"></a>
859 <h2 class="section"> <a href="libunistring.html#TOC25">8.3 Bidirectional category</a> </h2>
860
861 <p>Every Unicode character or code point has a <em>bidirectional category</em>
862 assigned to it.
863 </p>
864 <p>The bidirectional category guides the bidirectional algorithm
865 (<a href="http://www.unicode.org/reports/tr9/">http://www.unicode.org/reports/tr9/</a>).  The possible values are
866 the following.
867 </p>
868 <dl>
869 <dt><u>Constant:</u> int <b>UC_BIDI_L</b>
870 <a name="IDX381"></a>
871 </dt>
872 <dd><p>The bidirectional category for `Left-to-Right`&rdquo; characters.
873 </p></dd></dl>
874
875 <dl>
876 <dt><u>Constant:</u> int <b>UC_BIDI_LRE</b>
877 <a name="IDX382"></a>
878 </dt>
879 <dd><p>The bidirectional category for &ldquo;Left-to-Right Embedding&rdquo; characters.
880 </p></dd></dl>
881
882 <dl>
883 <dt><u>Constant:</u> int <b>UC_BIDI_LRO</b>
884 <a name="IDX383"></a>
885 </dt>
886 <dd><p>The bidirectional category for &ldquo;Left-to-Right Override&rdquo; characters.
887 </p></dd></dl>
888
889 <dl>
890 <dt><u>Constant:</u> int <b>UC_BIDI_R</b>
891 <a name="IDX384"></a>
892 </dt>
893 <dd><p>The bidirectional category for &ldquo;Right-to-Left&rdquo; characters.
894 </p></dd></dl>
895
896 <dl>
897 <dt><u>Constant:</u> int <b>UC_BIDI_AL</b>
898 <a name="IDX385"></a>
899 </dt>
900 <dd><p>The bidirectional category for &ldquo;Right-to-Left Arabic&rdquo; characters.
901 </p></dd></dl>
902
903 <dl>
904 <dt><u>Constant:</u> int <b>UC_BIDI_RLE</b>
905 <a name="IDX386"></a>
906 </dt>
907 <dd><p>The bidirectional category for &ldquo;Right-to-Left Embedding&rdquo; characters.
908 </p></dd></dl>
909
910 <dl>
911 <dt><u>Constant:</u> int <b>UC_BIDI_RLO</b>
912 <a name="IDX387"></a>
913 </dt>
914 <dd><p>The bidirectional category for &ldquo;Right-to-Left Override&rdquo; characters.
915 </p></dd></dl>
916
917 <dl>
918 <dt><u>Constant:</u> int <b>UC_BIDI_PDF</b>
919 <a name="IDX388"></a>
920 </dt>
921 <dd><p>The bidirectional category for &ldquo;Pop Directional Format&rdquo; characters.
922 </p></dd></dl>
923
924 <dl>
925 <dt><u>Constant:</u> int <b>UC_BIDI_EN</b>
926 <a name="IDX389"></a>
927 </dt>
928 <dd><p>The bidirectional category for &ldquo;European Number&rdquo; characters.
929 </p></dd></dl>
930
931 <dl>
932 <dt><u>Constant:</u> int <b>UC_BIDI_ES</b>
933 <a name="IDX390"></a>
934 </dt>
935 <dd><p>The bidirectional category for &ldquo;European Number Separator&rdquo; characters.
936 </p></dd></dl>
937
938 <dl>
939 <dt><u>Constant:</u> int <b>UC_BIDI_ET</b>
940 <a name="IDX391"></a>
941 </dt>
942 <dd><p>The bidirectional category for &ldquo;European Number Terminator&rdquo; characters.
943 </p></dd></dl>
944
945 <dl>
946 <dt><u>Constant:</u> int <b>UC_BIDI_AN</b>
947 <a name="IDX392"></a>
948 </dt>
949 <dd><p>The bidirectional category for &ldquo;Arabic Number&rdquo; characters.
950 </p></dd></dl>
951
952 <dl>
953 <dt><u>Constant:</u> int <b>UC_BIDI_CS</b>
954 <a name="IDX393"></a>
955 </dt>
956 <dd><p>The bidirectional category for &ldquo;Common Number Separator&rdquo; characters.
957 </p></dd></dl>
958
959 <dl>
960 <dt><u>Constant:</u> int <b>UC_BIDI_NSM</b>
961 <a name="IDX394"></a>
962 </dt>
963 <dd><p>The bidirectional category for &ldquo;Non-Spacing Mark&rdquo; characters.
964 </p></dd></dl>
965
966 <dl>
967 <dt><u>Constant:</u> int <b>UC_BIDI_BN</b>
968 <a name="IDX395"></a>
969 </dt>
970 <dd><p>The bidirectional category for &ldquo;Boundary Neutral&rdquo; characters.
971 </p></dd></dl>
972
973 <dl>
974 <dt><u>Constant:</u> int <b>UC_BIDI_B</b>
975 <a name="IDX396"></a>
976 </dt>
977 <dd><p>The bidirectional category for &ldquo;Paragraph Separator&rdquo; characters.
978 </p></dd></dl>
979
980 <dl>
981 <dt><u>Constant:</u> int <b>UC_BIDI_S</b>
982 <a name="IDX397"></a>
983 </dt>
984 <dd><p>The bidirectional category for &ldquo;Segment Separator&rdquo; characters.
985 </p></dd></dl>
986
987 <dl>
988 <dt><u>Constant:</u> int <b>UC_BIDI_WS</b>
989 <a name="IDX398"></a>
990 </dt>
991 <dd><p>The bidirectional category for &ldquo;Whitespace&rdquo; characters.
992 </p></dd></dl>
993
994 <dl>
995 <dt><u>Constant:</u> int <b>UC_BIDI_ON</b>
996 <a name="IDX399"></a>
997 </dt>
998 <dd><p>The bidirectional category for &ldquo;Other Neutral&rdquo; characters.
999 </p></dd></dl>
1000
1001 <p>The following functions implement the association between a bidirectional
1002 category and its name.
1003 </p>
1004 <dl>
1005 <dt><u>Function:</u> const char * <b>uc_bidi_category_name</b><i> (int <var>category</var>)</i>
1006 <a name="IDX400"></a>
1007 </dt>
1008 <dd><p>Returns the name of a bidirectional category.
1009 </p></dd></dl>
1010
1011 <dl>
1012 <dt><u>Function:</u> int <b>uc_bidi_category_byname</b><i> (const char *<var>category_name</var>)</i>
1013 <a name="IDX401"></a>
1014 </dt>
1015 <dd><p>Returns the bidirectional category given by name, e.g. <code>&quot;LRE&quot;</code>.
1016 </p></dd></dl>
1017
1018 <p>The following functions view bidirectional categories as sets of Unicode
1019 characters.
1020 </p>
1021 <dl>
1022 <dt><u>Function:</u> int <b>uc_bidi_category</b><i> (ucs4_t <var>uc</var>)</i>
1023 <a name="IDX402"></a>
1024 </dt>
1025 <dd><p>Returns the bidirectional category of a Unicode character.
1026 </p></dd></dl>
1027
1028 <dl>
1029 <dt><u>Function:</u> bool <b>uc_is_bidi_category</b><i> (ucs4_t <var>uc</var>, int <var>category</var>)</i>
1030 <a name="IDX403"></a>
1031 </dt>
1032 <dd><p>Tests whether a Unicode character belongs to a given bidirectional category.
1033 </p></dd></dl>
1034
1035 <hr size="6">
1036 <a name="Decimal-digit-value"></a>
1037 <a name="SEC26"></a>
1038 <h2 class="section"> <a href="libunistring.html#TOC26">8.4 Decimal digit value</a> </h2>
1039
1040 <p>Decimal digits (like the digits from &lsquo;<samp>0</samp>&rsquo; to &lsquo;<samp>9</samp>&rsquo;) exist in many
1041 scripts.  The following function converts a decimal digit character to its
1042 numerical value.
1043 </p>
1044 <dl>
1045 <dt><u>Function:</u> int <b>uc_decimal_value</b><i> (ucs4_t <var>uc</var>)</i>
1046 <a name="IDX404"></a>
1047 </dt>
1048 <dd><p>Returns the decimal digit value of a Unicode character.
1049 The return value is an integer in the range 0..9, or -1 for characters that
1050 do not represent a decimal digit.
1051 </p></dd></dl>
1052
1053 <hr size="6">
1054 <a name="Digit-value"></a>
1055 <a name="SEC27"></a>
1056 <h2 class="section"> <a href="libunistring.html#TOC27">8.5 Digit value</a> </h2>
1057
1058 <p>Digit characters are like decimal digit characters, possibly in special forms,
1059 like as superscript, subscript, or circled.  The following function converts a
1060 digit character to its numerical value.
1061 </p>
1062 <dl>
1063 <dt><u>Function:</u> int <b>uc_digit_value</b><i> (ucs4_t <var>uc</var>)</i>
1064 <a name="IDX405"></a>
1065 </dt>
1066 <dd><p>Returns the digit value of a Unicode character.
1067 The return value is an integer in the range 0..9, or -1 for characters that
1068 do not represent a digit.
1069 </p></dd></dl>
1070
1071 <hr size="6">
1072 <a name="Numeric-value"></a>
1073 <a name="SEC28"></a>
1074 <h2 class="section"> <a href="libunistring.html#TOC28">8.6 Numeric value</a> </h2>
1075
1076 <p>There are also characters that represent numbers without a digit system, like
1077 the Roman numerals, and fractional numbers, like 1/4 or 3/4.
1078 </p>
1079 <p>The following type represents the numeric value of a Unicode character.
1080 </p><dl>
1081 <dt><u>Type:</u> <b>uc_fraction_t</b>
1082 <a name="IDX406"></a>
1083 </dt>
1084 <dd><p>This is a structure type with the following fields:
1085 </p><table><tr><td>&nbsp;</td><td><pre class="smallexample">int numerator;
1086 int denominator;
1087 </pre></td></tr></table>
1088 <p>An integer <var>n</var> is represented by <code>numerator = <var>n</var></code>,
1089 <code>denominator = 1</code>.
1090 </p></dd></dl>
1091
1092 <p>The following function converts a number character to its numerical value.
1093 </p>
1094 <dl>
1095 <dt><u>Function:</u> uc_fraction_t <b>uc_numeric_value</b><i> (ucs4_t <var>uc</var>)</i>
1096 <a name="IDX407"></a>
1097 </dt>
1098 <dd><p>Returns the numeric value of a Unicode character.
1099 The return value is a fraction, or the pseudo-fraction <code>{ 0, 0 }</code> for
1100 characters that do not represent a number.
1101 </p></dd></dl>
1102
1103 <hr size="6">
1104 <a name="Mirrored-character"></a>
1105 <a name="SEC29"></a>
1106 <h2 class="section"> <a href="libunistring.html#TOC29">8.7 Mirrored character</a> </h2>
1107
1108 <p>Character mirroring is used to associate the closing parenthesis character
1109 to the opening parenthesis character, the closing brace character with the
1110 opening brace character, and so on.
1111 </p>
1112 <p>The following function looks up the mirrored character of a Unicode character.
1113 </p>
1114 <dl>
1115 <dt><u>Function:</u> bool <b>uc_mirror_char</b><i> (ucs4_t <var>uc</var>, ucs4_t *<var>puc</var>)</i>
1116 <a name="IDX408"></a>
1117 </dt>
1118 <dd><p>Stores the mirrored character of a Unicode character <var>uc</var> in
1119 <code>*<var>puc</var></code> and returns <code>true</code>, if it exists.  Otherwise it
1120 stores <var>uc</var> unmodified in <code>*<var>puc</var></code> and returns <code>false</code>.
1121 </p></dd></dl>
1122
1123 <hr size="6">
1124 <a name="Properties"></a>
1125 <a name="SEC30"></a>
1126 <h2 class="section"> <a href="libunistring.html#TOC30">8.8 Properties</a> </h2>
1127
1128 <p>This section defines boolean properties of Unicode characters.  This
1129 means, a character either has the given property or does not have it.
1130 In other words, the property can be viewed as a subset of the set of
1131 Unicode characters.
1132 </p>
1133 <p>The GNU libunistring library provides two kinds of API for working with
1134 properties.  The object oriented API uses a type <code>uc_property_t</code>
1135 to designate a property.  In the function-based API, which is a bit more
1136 low level, a property is merely a function.
1137 </p>
1138
1139 <hr size="6">
1140 <a name="Properties-as-objects"></a>
1141 <a name="SEC31"></a>
1142 <h3 class="subsection"> <a href="libunistring.html#TOC31">8.8.1 Properties as objects &ndash; the object oriented API</a> </h3>
1143
1144 <p>The following type designates a property on Unicode characters.
1145 </p>
1146 <dl>
1147 <dt><u>Type:</u> <b>uc_property_t</b>
1148 <a name="IDX409"></a>
1149 </dt>
1150 <dd><p>This data type denotes a boolean property on Unicode characters. It is an
1151 immediate type that can be copied by simple assignment, without involving
1152 memory allocation.  It is not an array type.
1153 </p></dd></dl>
1154
1155 <p>Many Unicode properties are predefined.
1156 </p>
1157 <p>The following are general properties.
1158 </p>
1159 <dl>
1160 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_WHITE_SPACE</b>
1161 <a name="IDX410"></a>
1162 </dt>
1163 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_ALPHABETIC</b>
1164 <a name="IDX411"></a>
1165 </dt>
1166 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_OTHER_ALPHABETIC</b>
1167 <a name="IDX412"></a>
1168 </dt>
1169 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_NOT_A_CHARACTER</b>
1170 <a name="IDX413"></a>
1171 </dt>
1172 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_DEFAULT_IGNORABLE_CODE_POINT</b>
1173 <a name="IDX414"></a>
1174 </dt>
1175 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_OTHER_DEFAULT_IGNORABLE_CODE_POINT</b>
1176 <a name="IDX415"></a>
1177 </dt>
1178 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_DEPRECATED</b>
1179 <a name="IDX416"></a>
1180 </dt>
1181 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_LOGICAL_ORDER_EXCEPTION</b>
1182 <a name="IDX417"></a>
1183 </dt>
1184 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_VARIATION_SELECTOR</b>
1185 <a name="IDX418"></a>
1186 </dt>
1187 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_PRIVATE_USE</b>
1188 <a name="IDX419"></a>
1189 </dt>
1190 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_UNASSIGNED_CODE_VALUE</b>
1191 <a name="IDX420"></a>
1192 </dt>
1193 </dl>
1194
1195 <p>The following properties are related to case folding.
1196 </p>
1197 <dl>
1198 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_UPPERCASE</b>
1199 <a name="IDX421"></a>
1200 </dt>
1201 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_OTHER_UPPERCASE</b>
1202 <a name="IDX422"></a>
1203 </dt>
1204 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_LOWERCASE</b>
1205 <a name="IDX423"></a>
1206 </dt>
1207 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_OTHER_LOWERCASE</b>
1208 <a name="IDX424"></a>
1209 </dt>
1210 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_TITLECASE</b>
1211 <a name="IDX425"></a>
1212 </dt>
1213 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_SOFT_DOTTED</b>
1214 <a name="IDX426"></a>
1215 </dt>
1216 </dl>
1217
1218 <p>The following properties are related to identifiers.
1219 </p>
1220 <dl>
1221 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_ID_START</b>
1222 <a name="IDX427"></a>
1223 </dt>
1224 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_OTHER_ID_START</b>
1225 <a name="IDX428"></a>
1226 </dt>
1227 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_ID_CONTINUE</b>
1228 <a name="IDX429"></a>
1229 </dt>
1230 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_OTHER_ID_CONTINUE</b>
1231 <a name="IDX430"></a>
1232 </dt>
1233 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_XID_START</b>
1234 <a name="IDX431"></a>
1235 </dt>
1236 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_XID_CONTINUE</b>
1237 <a name="IDX432"></a>
1238 </dt>
1239 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_PATTERN_WHITE_SPACE</b>
1240 <a name="IDX433"></a>
1241 </dt>
1242 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_PATTERN_SYNTAX</b>
1243 <a name="IDX434"></a>
1244 </dt>
1245 </dl>
1246
1247 <p>The following properties have an influence on shaping and rendering.
1248 </p>
1249 <dl>
1250 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_JOIN_CONTROL</b>
1251 <a name="IDX435"></a>
1252 </dt>
1253 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_GRAPHEME_BASE</b>
1254 <a name="IDX436"></a>
1255 </dt>
1256 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_GRAPHEME_EXTEND</b>
1257 <a name="IDX437"></a>
1258 </dt>
1259 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_OTHER_GRAPHEME_EXTEND</b>
1260 <a name="IDX438"></a>
1261 </dt>
1262 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_GRAPHEME_LINK</b>
1263 <a name="IDX439"></a>
1264 </dt>
1265 </dl>
1266
1267 <p>The following properties relate to bidirectional reordering.
1268 </p>
1269 <dl>
1270 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_BIDI_CONTROL</b>
1271 <a name="IDX440"></a>
1272 </dt>
1273 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_BIDI_LEFT_TO_RIGHT</b>
1274 <a name="IDX441"></a>
1275 </dt>
1276 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_BIDI_HEBREW_RIGHT_TO_LEFT</b>
1277 <a name="IDX442"></a>
1278 </dt>
1279 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_BIDI_ARABIC_RIGHT_TO_LEFT</b>
1280 <a name="IDX443"></a>
1281 </dt>
1282 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_BIDI_EUROPEAN_DIGIT</b>
1283 <a name="IDX444"></a>
1284 </dt>
1285 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_BIDI_EUR_NUM_SEPARATOR</b>
1286 <a name="IDX445"></a>
1287 </dt>
1288 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_BIDI_EUR_NUM_TERMINATOR</b>
1289 <a name="IDX446"></a>
1290 </dt>
1291 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_BIDI_ARABIC_DIGIT</b>
1292 <a name="IDX447"></a>
1293 </dt>
1294 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_BIDI_COMMON_SEPARATOR</b>
1295 <a name="IDX448"></a>
1296 </dt>
1297 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_BIDI_BLOCK_SEPARATOR</b>
1298 <a name="IDX449"></a>
1299 </dt>
1300 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_BIDI_SEGMENT_SEPARATOR</b>
1301 <a name="IDX450"></a>
1302 </dt>
1303 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_BIDI_WHITESPACE</b>
1304 <a name="IDX451"></a>
1305 </dt>
1306 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_BIDI_NON_SPACING_MARK</b>
1307 <a name="IDX452"></a>
1308 </dt>
1309 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_BIDI_BOUNDARY_NEUTRAL</b>
1310 <a name="IDX453"></a>
1311 </dt>
1312 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_BIDI_PDF</b>
1313 <a name="IDX454"></a>
1314 </dt>
1315 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_BIDI_EMBEDDING_OR_OVERRIDE</b>
1316 <a name="IDX455"></a>
1317 </dt>
1318 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_BIDI_OTHER_NEUTRAL</b>
1319 <a name="IDX456"></a>
1320 </dt>
1321 </dl>
1322
1323 <p>The following properties deal with number representations.
1324 </p>
1325 <dl>
1326 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_HEX_DIGIT</b>
1327 <a name="IDX457"></a>
1328 </dt>
1329 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_ASCII_HEX_DIGIT</b>
1330 <a name="IDX458"></a>
1331 </dt>
1332 </dl>
1333
1334 <p>The following properties deal with CJK.
1335 </p>
1336 <dl>
1337 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_IDEOGRAPHIC</b>
1338 <a name="IDX459"></a>
1339 </dt>
1340 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_UNIFIED_IDEOGRAPH</b>
1341 <a name="IDX460"></a>
1342 </dt>
1343 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_RADICAL</b>
1344 <a name="IDX461"></a>
1345 </dt>
1346 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_IDS_BINARY_OPERATOR</b>
1347 <a name="IDX462"></a>
1348 </dt>
1349 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_IDS_TRINARY_OPERATOR</b>
1350 <a name="IDX463"></a>
1351 </dt>
1352 </dl>
1353
1354 <p>Other miscellaneous properties are:
1355 </p>
1356 <dl>
1357 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_ZERO_WIDTH</b>
1358 <a name="IDX464"></a>
1359 </dt>
1360 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_SPACE</b>
1361 <a name="IDX465"></a>
1362 </dt>
1363 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_NON_BREAK</b>
1364 <a name="IDX466"></a>
1365 </dt>
1366 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_ISO_CONTROL</b>
1367 <a name="IDX467"></a>
1368 </dt>
1369 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_FORMAT_CONTROL</b>
1370 <a name="IDX468"></a>
1371 </dt>
1372 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_DASH</b>
1373 <a name="IDX469"></a>
1374 </dt>
1375 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_HYPHEN</b>
1376 <a name="IDX470"></a>
1377 </dt>
1378 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_PUNCTUATION</b>
1379 <a name="IDX471"></a>
1380 </dt>
1381 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_LINE_SEPARATOR</b>
1382 <a name="IDX472"></a>
1383 </dt>
1384 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_PARAGRAPH_SEPARATOR</b>
1385 <a name="IDX473"></a>
1386 </dt>
1387 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_QUOTATION_MARK</b>
1388 <a name="IDX474"></a>
1389 </dt>
1390 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_SENTENCE_TERMINAL</b>
1391 <a name="IDX475"></a>
1392 </dt>
1393 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_TERMINAL_PUNCTUATION</b>
1394 <a name="IDX476"></a>
1395 </dt>
1396 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_CURRENCY_SYMBOL</b>
1397 <a name="IDX477"></a>
1398 </dt>
1399 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_MATH</b>
1400 <a name="IDX478"></a>
1401 </dt>
1402 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_OTHER_MATH</b>
1403 <a name="IDX479"></a>
1404 </dt>
1405 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_PAIRED_PUNCTUATION</b>
1406 <a name="IDX480"></a>
1407 </dt>
1408 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_LEFT_OF_PAIR</b>
1409 <a name="IDX481"></a>
1410 </dt>
1411 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_COMBINING</b>
1412 <a name="IDX482"></a>
1413 </dt>
1414 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_COMPOSITE</b>
1415 <a name="IDX483"></a>
1416 </dt>
1417 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_DECIMAL_DIGIT</b>
1418 <a name="IDX484"></a>
1419 </dt>
1420 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_NUMERIC</b>
1421 <a name="IDX485"></a>
1422 </dt>
1423 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_DIACRITIC</b>
1424 <a name="IDX486"></a>
1425 </dt>
1426 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_EXTENDER</b>
1427 <a name="IDX487"></a>
1428 </dt>
1429 <dt><u>Constant:</u> uc_property_t <b>UC_PROPERTY_IGNORABLE_CONTROL</b>
1430 <a name="IDX488"></a>
1431 </dt>
1432 </dl>
1433
1434 <p>The following function looks up a property by its name.
1435 </p>
1436 <dl>
1437 <dt><u>Function:</u> uc_property_t <b>uc_property_byname</b><i> (const char *<var>property_name</var>)</i>
1438 <a name="IDX489"></a>
1439 </dt>
1440 <dd><p>Returns the property given by name, e.g. <code>&quot;White space&quot;</code>.  If a property
1441 with the given name exists, the result will satisfy the
1442 <code>uc_property_is_valid</code> predicate.  Otherwise the result will not satisfy
1443 this predicate and must not be passed to functions that expect an
1444 <code>uc_property_t</code> argument.
1445 </p>
1446 <p>This function references a big table of all predefined properties.  Its use
1447 can significantly increase the size of your application.
1448 </p></dd></dl>
1449
1450 <dl>
1451 <dt><u>Function:</u> bool <b>uc_property_is_valid</b><i> (uc_property_t property)</i>
1452 <a name="IDX490"></a>
1453 </dt>
1454 <dd><p>Returns <code>true</code> when the given property is valid, or <code>false</code>
1455 otherwise.
1456 </p></dd></dl>
1457
1458 <p>The following function views a property as a set of Unicode characters.
1459 </p>
1460 <dl>
1461 <dt><u>Function:</u> bool <b>uc_is_property</b><i> (ucs4_t <var>uc</var>, uc_property_t <var>property</var>)</i>
1462 <a name="IDX491"></a>
1463 </dt>
1464 <dd><p>Tests whether the Unicode character <var>uc</var> has the given property.
1465 </p></dd></dl>
1466
1467 <hr size="6">
1468 <a name="Properties-as-functions"></a>
1469 <a name="SEC32"></a>
1470 <h3 class="subsection"> <a href="libunistring.html#TOC32">8.8.2 Properties as functions &ndash; the functional API</a> </h3>
1471
1472 <p>The following are general properties.
1473 </p>
1474 <dl>
1475 <dt><u>Function:</u> bool <b>uc_is_property_white_space</b><i> (ucs4_t <var>uc</var>)</i>
1476 <a name="IDX492"></a>
1477 </dt>
1478 <dt><u>Function:</u> bool <b>uc_is_property_alphabetic</b><i> (ucs4_t <var>uc</var>)</i>
1479 <a name="IDX493"></a>
1480 </dt>
1481 <dt><u>Function:</u> bool <b>uc_is_property_other_alphabetic</b><i> (ucs4_t <var>uc</var>)</i>
1482 <a name="IDX494"></a>
1483 </dt>
1484 <dt><u>Function:</u> bool <b>uc_is_property_not_a_character</b><i> (ucs4_t <var>uc</var>)</i>
1485 <a name="IDX495"></a>
1486 </dt>
1487 <dt><u>Function:</u> bool <b>uc_is_property_default_ignorable_code_point</b><i> (ucs4_t <var>uc</var>)</i>
1488 <a name="IDX496"></a>
1489 </dt>
1490 <dt><u>Function:</u> bool <b>uc_is_property_other_default_ignorable_code_point</b><i> (ucs4_t <var>uc</var>)</i>
1491 <a name="IDX497"></a>
1492 </dt>
1493 <dt><u>Function:</u> bool <b>uc_is_property_deprecated</b><i> (ucs4_t <var>uc</var>)</i>
1494 <a name="IDX498"></a>
1495 </dt>
1496 <dt><u>Function:</u> bool <b>uc_is_property_logical_order_exception</b><i> (ucs4_t <var>uc</var>)</i>
1497 <a name="IDX499"></a>
1498 </dt>
1499 <dt><u>Function:</u> bool <b>uc_is_property_variation_selector</b><i> (ucs4_t <var>uc</var>)</i>
1500 <a name="IDX500"></a>
1501 </dt>
1502 <dt><u>Function:</u> bool <b>uc_is_property_private_use</b><i> (ucs4_t <var>uc</var>)</i>
1503 <a name="IDX501"></a>
1504 </dt>
1505 <dt><u>Function:</u> bool <b>uc_is_property_unassigned_code_value</b><i> (ucs4_t <var>uc</var>)</i>
1506 <a name="IDX502"></a>
1507 </dt>
1508 </dl>
1509
1510 <p>The following properties are related to case folding.
1511 </p>
1512 <dl>
1513 <dt><u>Function:</u> bool <b>uc_is_property_uppercase</b><i> (ucs4_t <var>uc</var>)</i>
1514 <a name="IDX503"></a>
1515 </dt>
1516 <dt><u>Function:</u> bool <b>uc_is_property_other_uppercase</b><i> (ucs4_t <var>uc</var>)</i>
1517 <a name="IDX504"></a>
1518 </dt>
1519 <dt><u>Function:</u> bool <b>uc_is_property_lowercase</b><i> (ucs4_t <var>uc</var>)</i>
1520 <a name="IDX505"></a>
1521 </dt>
1522 <dt><u>Function:</u> bool <b>uc_is_property_other_lowercase</b><i> (ucs4_t <var>uc</var>)</i>
1523 <a name="IDX506"></a>
1524 </dt>
1525 <dt><u>Function:</u> bool <b>uc_is_property_titlecase</b><i> (ucs4_t <var>uc</var>)</i>
1526 <a name="IDX507"></a>
1527 </dt>
1528 <dt><u>Function:</u> bool <b>uc_is_property_soft_dotted</b><i> (ucs4_t <var>uc</var>)</i>
1529 <a name="IDX508"></a>
1530 </dt>
1531 </dl>
1532
1533 <p>The following properties are related to identifiers.
1534 </p>
1535 <dl>
1536 <dt><u>Function:</u> bool <b>uc_is_property_id_start</b><i> (ucs4_t <var>uc</var>)</i>
1537 <a name="IDX509"></a>
1538 </dt>
1539 <dt><u>Function:</u> bool <b>uc_is_property_other_id_start</b><i> (ucs4_t <var>uc</var>)</i>
1540 <a name="IDX510"></a>
1541 </dt>
1542 <dt><u>Function:</u> bool <b>uc_is_property_id_continue</b><i> (ucs4_t <var>uc</var>)</i>
1543 <a name="IDX511"></a>
1544 </dt>
1545 <dt><u>Function:</u> bool <b>uc_is_property_other_id_continue</b><i> (ucs4_t <var>uc</var>)</i>
1546 <a name="IDX512"></a>
1547 </dt>
1548 <dt><u>Function:</u> bool <b>uc_is_property_xid_start</b><i> (ucs4_t <var>uc</var>)</i>
1549 <a name="IDX513"></a>
1550 </dt>
1551 <dt><u>Function:</u> bool <b>uc_is_property_xid_continue</b><i> (ucs4_t <var>uc</var>)</i>
1552 <a name="IDX514"></a>
1553 </dt>
1554 <dt><u>Function:</u> bool <b>uc_is_property_pattern_white_space</b><i> (ucs4_t <var>uc</var>)</i>
1555 <a name="IDX515"></a>
1556 </dt>
1557 <dt><u>Function:</u> bool <b>uc_is_property_pattern_syntax</b><i> (ucs4_t <var>uc</var>)</i>
1558 <a name="IDX516"></a>
1559 </dt>
1560 </dl>
1561
1562 <p>The following properties have an influence on shaping and rendering.
1563 </p>
1564 <dl>
1565 <dt><u>Function:</u> bool <b>uc_is_property_join_control</b><i> (ucs4_t <var>uc</var>)</i>
1566 <a name="IDX517"></a>
1567 </dt>
1568 <dt><u>Function:</u> bool <b>uc_is_property_grapheme_base</b><i> (ucs4_t <var>uc</var>)</i>
1569 <a name="IDX518"></a>
1570 </dt>
1571 <dt><u>Function:</u> bool <b>uc_is_property_grapheme_extend</b><i> (ucs4_t <var>uc</var>)</i>
1572 <a name="IDX519"></a>
1573 </dt>
1574 <dt><u>Function:</u> bool <b>uc_is_property_other_grapheme_extend</b><i> (ucs4_t <var>uc</var>)</i>
1575 <a name="IDX520"></a>
1576 </dt>
1577 <dt><u>Function:</u> bool <b>uc_is_property_grapheme_link</b><i> (ucs4_t <var>uc</var>)</i>
1578 <a name="IDX521"></a>
1579 </dt>
1580 </dl>
1581
1582 <p>The following properties relate to bidirectional reordering.
1583 </p>
1584 <dl>
1585 <dt><u>Function:</u> bool <b>uc_is_property_bidi_control</b><i> (ucs4_t <var>uc</var>)</i>
1586 <a name="IDX522"></a>
1587 </dt>
1588 <dt><u>Function:</u> bool <b>uc_is_property_bidi_left_to_right</b><i> (ucs4_t <var>uc</var>)</i>
1589 <a name="IDX523"></a>
1590 </dt>
1591 <dt><u>Function:</u> bool <b>uc_is_property_bidi_hebrew_right_to_left</b><i> (ucs4_t <var>uc</var>)</i>
1592 <a name="IDX524"></a>
1593 </dt>
1594 <dt><u>Function:</u> bool <b>uc_is_property_bidi_arabic_right_to_left</b><i> (ucs4_t <var>uc</var>)</i>
1595 <a name="IDX525"></a>
1596 </dt>
1597 <dt><u>Function:</u> bool <b>uc_is_property_bidi_european_digit</b><i> (ucs4_t <var>uc</var>)</i>
1598 <a name="IDX526"></a>
1599 </dt>
1600 <dt><u>Function:</u> bool <b>uc_is_property_bidi_eur_num_separator</b><i> (ucs4_t <var>uc</var>)</i>
1601 <a name="IDX527"></a>
1602 </dt>
1603 <dt><u>Function:</u> bool <b>uc_is_property_bidi_eur_num_terminator</b><i> (ucs4_t <var>uc</var>)</i>
1604 <a name="IDX528"></a>
1605 </dt>
1606 <dt><u>Function:</u> bool <b>uc_is_property_bidi_arabic_digit</b><i> (ucs4_t <var>uc</var>)</i>
1607 <a name="IDX529"></a>
1608 </dt>
1609 <dt><u>Function:</u> bool <b>uc_is_property_bidi_common_separator</b><i> (ucs4_t <var>uc</var>)</i>
1610 <a name="IDX530"></a>
1611 </dt>
1612 <dt><u>Function:</u> bool <b>uc_is_property_bidi_block_separator</b><i> (ucs4_t <var>uc</var>)</i>
1613 <a name="IDX531"></a>
1614 </dt>
1615 <dt><u>Function:</u> bool <b>uc_is_property_bidi_segment_separator</b><i> (ucs4_t <var>uc</var>)</i>
1616 <a name="IDX532"></a>
1617 </dt>
1618 <dt><u>Function:</u> bool <b>uc_is_property_bidi_whitespace</b><i> (ucs4_t <var>uc</var>)</i>
1619 <a name="IDX533"></a>
1620 </dt>
1621 <dt><u>Function:</u> bool <b>uc_is_property_bidi_non_spacing_mark</b><i> (ucs4_t <var>uc</var>)</i>
1622 <a name="IDX534"></a>
1623 </dt>
1624 <dt><u>Function:</u> bool <b>uc_is_property_bidi_boundary_neutral</b><i> (ucs4_t <var>uc</var>)</i>
1625 <a name="IDX535"></a>
1626 </dt>
1627 <dt><u>Function:</u> bool <b>uc_is_property_bidi_pdf</b><i> (ucs4_t <var>uc</var>)</i>
1628 <a name="IDX536"></a>
1629 </dt>
1630 <dt><u>Function:</u> bool <b>uc_is_property_bidi_embedding_or_override</b><i> (ucs4_t <var>uc</var>)</i>
1631 <a name="IDX537"></a>
1632 </dt>
1633 <dt><u>Function:</u> bool <b>uc_is_property_bidi_other_neutral</b><i> (ucs4_t <var>uc</var>)</i>
1634 <a name="IDX538"></a>
1635 </dt>
1636 </dl>
1637
1638 <p>The following properties deal with number representations.
1639 </p>
1640 <dl>
1641 <dt><u>Function:</u> bool <b>uc_is_property_hex_digit</b><i> (ucs4_t <var>uc</var>)</i>
1642 <a name="IDX539"></a>
1643 </dt>
1644 <dt><u>Function:</u> bool <b>uc_is_property_ascii_hex_digit</b><i> (ucs4_t <var>uc</var>)</i>
1645 <a name="IDX540"></a>
1646 </dt>
1647 </dl>
1648
1649 <p>The following properties deal with CJK.
1650 </p>
1651 <dl>
1652 <dt><u>Function:</u> bool <b>uc_is_property_ideographic</b><i> (ucs4_t <var>uc</var>)</i>
1653 <a name="IDX541"></a>
1654 </dt>
1655 <dt><u>Function:</u> bool <b>uc_is_property_unified_ideograph</b><i> (ucs4_t <var>uc</var>)</i>
1656 <a name="IDX542"></a>
1657 </dt>
1658 <dt><u>Function:</u> bool <b>uc_is_property_radical</b><i> (ucs4_t <var>uc</var>)</i>
1659 <a name="IDX543"></a>
1660 </dt>
1661 <dt><u>Function:</u> bool <b>uc_is_property_ids_binary_operator</b><i> (ucs4_t <var>uc</var>)</i>
1662 <a name="IDX544"></a>
1663 </dt>
1664 <dt><u>Function:</u> bool <b>uc_is_property_ids_trinary_operator</b><i> (ucs4_t <var>uc</var>)</i>
1665 <a name="IDX545"></a>
1666 </dt>
1667 </dl>
1668
1669 <p>Other miscellaneous properties are:
1670 </p>
1671 <dl>
1672 <dt><u>Function:</u> bool <b>uc_is_property_zero_width</b><i> (ucs4_t <var>uc</var>)</i>
1673 <a name="IDX546"></a>
1674 </dt>
1675 <dt><u>Function:</u> bool <b>uc_is_property_space</b><i> (ucs4_t <var>uc</var>)</i>
1676 <a name="IDX547"></a>
1677 </dt>
1678 <dt><u>Function:</u> bool <b>uc_is_property_non_break</b><i> (ucs4_t <var>uc</var>)</i>
1679 <a name="IDX548"></a>
1680 </dt>
1681 <dt><u>Function:</u> bool <b>uc_is_property_iso_control</b><i> (ucs4_t <var>uc</var>)</i>
1682 <a name="IDX549"></a>
1683 </dt>
1684 <dt><u>Function:</u> bool <b>uc_is_property_format_control</b><i> (ucs4_t <var>uc</var>)</i>
1685 <a name="IDX550"></a>
1686 </dt>
1687 <dt><u>Function:</u> bool <b>uc_is_property_dash</b><i> (ucs4_t <var>uc</var>)</i>
1688 <a name="IDX551"></a>
1689 </dt>
1690 <dt><u>Function:</u> bool <b>uc_is_property_hyphen</b><i> (ucs4_t <var>uc</var>)</i>
1691 <a name="IDX552"></a>
1692 </dt>
1693 <dt><u>Function:</u> bool <b>uc_is_property_punctuation</b><i> (ucs4_t <var>uc</var>)</i>
1694 <a name="IDX553"></a>
1695 </dt>
1696 <dt><u>Function:</u> bool <b>uc_is_property_line_separator</b><i> (ucs4_t <var>uc</var>)</i>
1697 <a name="IDX554"></a>
1698 </dt>
1699 <dt><u>Function:</u> bool <b>uc_is_property_paragraph_separator</b><i> (ucs4_t <var>uc</var>)</i>
1700 <a name="IDX555"></a>
1701 </dt>
1702 <dt><u>Function:</u> bool <b>uc_is_property_quotation_mark</b><i> (ucs4_t <var>uc</var>)</i>
1703 <a name="IDX556"></a>
1704 </dt>
1705 <dt><u>Function:</u> bool <b>uc_is_property_sentence_terminal</b><i> (ucs4_t <var>uc</var>)</i>
1706 <a name="IDX557"></a>
1707 </dt>
1708 <dt><u>Function:</u> bool <b>uc_is_property_terminal_punctuation</b><i> (ucs4_t <var>uc</var>)</i>
1709 <a name="IDX558"></a>
1710 </dt>
1711 <dt><u>Function:</u> bool <b>uc_is_property_currency_symbol</b><i> (ucs4_t <var>uc</var>)</i>
1712 <a name="IDX559"></a>
1713 </dt>
1714 <dt><u>Function:</u> bool <b>uc_is_property_math</b><i> (ucs4_t <var>uc</var>)</i>
1715 <a name="IDX560"></a>
1716 </dt>
1717 <dt><u>Function:</u> bool <b>uc_is_property_other_math</b><i> (ucs4_t <var>uc</var>)</i>
1718 <a name="IDX561"></a>
1719 </dt>
1720 <dt><u>Function:</u> bool <b>uc_is_property_paired_punctuation</b><i> (ucs4_t <var>uc</var>)</i>
1721 <a name="IDX562"></a>
1722 </dt>
1723 <dt><u>Function:</u> bool <b>uc_is_property_left_of_pair</b><i> (ucs4_t <var>uc</var>)</i>
1724 <a name="IDX563"></a>
1725 </dt>
1726 <dt><u>Function:</u> bool <b>uc_is_property_combining</b><i> (ucs4_t <var>uc</var>)</i>
1727 <a name="IDX564"></a>
1728 </dt>
1729 <dt><u>Function:</u> bool <b>uc_is_property_composite</b><i> (ucs4_t <var>uc</var>)</i>
1730 <a name="IDX565"></a>
1731 </dt>
1732 <dt><u>Function:</u> bool <b>uc_is_property_decimal_digit</b><i> (ucs4_t <var>uc</var>)</i>
1733 <a name="IDX566"></a>
1734 </dt>
1735 <dt><u>Function:</u> bool <b>uc_is_property_numeric</b><i> (ucs4_t <var>uc</var>)</i>
1736 <a name="IDX567"></a>
1737 </dt>
1738 <dt><u>Function:</u> bool <b>uc_is_property_diacritic</b><i> (ucs4_t <var>uc</var>)</i>
1739 <a name="IDX568"></a>
1740 </dt>
1741 <dt><u>Function:</u> bool <b>uc_is_property_extender</b><i> (ucs4_t <var>uc</var>)</i>
1742 <a name="IDX569"></a>
1743 </dt>
1744 <dt><u>Function:</u> bool <b>uc_is_property_ignorable_control</b><i> (ucs4_t <var>uc</var>)</i>
1745 <a name="IDX570"></a>
1746 </dt>
1747 </dl>
1748
1749 <hr size="6">
1750 <a name="Scripts"></a>
1751 <a name="SEC33"></a>
1752 <h2 class="section"> <a href="libunistring.html#TOC33">8.9 Scripts</a> </h2>
1753
1754 <p>The Unicode characters are subdivided into scripts.
1755 </p>
1756 <p>The following type is used to represent a script:
1757 </p>
1758 <dl>
1759 <dt><u>Type:</u> <b>uc_script_t</b>
1760 <a name="IDX571"></a>
1761 </dt>
1762 <dd><p>This data type is a structure type that refers to statically allocated
1763 read-only data.  It contains the following fields:
1764 </p><table><tr><td>&nbsp;</td><td><pre class="smallexample">const char *name;
1765 </pre></td></tr></table>
1766
1767 <p>The <code>name</code> field contains the name of the script.
1768 </p></dd></dl>
1769
1770 <a name="IDX572"></a>
1771 <p>The following functions look up a script.
1772 </p>
1773 <dl>
1774 <dt><u>Function:</u> const uc_script_t * <b>uc_script</b><i> (ucs4_t <var>uc</var>)</i>
1775 <a name="IDX573"></a>
1776 </dt>
1777 <dd><p>Returns the script of a Unicode character.  Returns NULL if <var>uc</var> does not
1778 belong to any script.
1779 </p></dd></dl>
1780
1781 <dl>
1782 <dt><u>Function:</u> const uc_script_t * <b>uc_script_byname</b><i> (const char *<var>script_name</var>)</i>
1783 <a name="IDX574"></a>
1784 </dt>
1785 <dd><p>Returns the script given by its name, e.g. <code>&quot;HAN&quot;</code>.  Returns NULL if a
1786 script with the given name does not exist.
1787 </p></dd></dl>
1788
1789 <p>The following function views a script as a set of Unicode characters.
1790 </p>
1791 <dl>
1792 <dt><u>Function:</u> bool <b>uc_is_script</b><i> (ucs4_t <var>uc</var>, const uc_script_t *<var>script</var>)</i>
1793 <a name="IDX575"></a>
1794 </dt>
1795 <dd><p>Tests whether a Unicode character belongs to a given script.
1796 </p></dd></dl>
1797
1798 <p>The following gives a global picture of all scripts.
1799 </p>
1800 <dl>
1801 <dt><u>Function:</u> void <b>uc_all_scripts</b><i> (const uc_script_t **<var>scripts</var>, size_t *<var>count</var>)</i>
1802 <a name="IDX576"></a>
1803 </dt>
1804 <dd><p>Get the list of all scripts.  Stores a pointer to an array of all scripts in
1805 <code>*<var>scripts</var></code> and the length of this array in <code>*<var>count</var></code>.
1806 </p></dd></dl>
1807
1808 <hr size="6">
1809 <a name="Blocks"></a>
1810 <a name="SEC34"></a>
1811 <h2 class="section"> <a href="libunistring.html#TOC34">8.10 Blocks</a> </h2>
1812
1813 <p>The Unicode characters are subdivided into blocks.  A block is an interval of
1814 Unicode code points.
1815 </p>
1816 <p>The following type is used to represent a block.
1817 </p>
1818 <dl>
1819 <dt><u>Type:</u> <b>uc_block_t</b>
1820 <a name="IDX577"></a>
1821 </dt>
1822 <dd><p>This data type is a structure type that refers to statically allocated data.
1823 It contains the following fields:
1824 </p><table><tr><td>&nbsp;</td><td><pre class="smallexample">ucs4_t start;
1825 ucs4_t end;
1826 const char *name;
1827 </pre></td></tr></table>
1828
1829 <p>The <code>start</code> field is the first Unicode code point in the block.
1830 </p>
1831 <p>The <code>end</code> field is the last Unicode code point in the block.
1832 </p>
1833 <p>The <code>name</code> field is the name of the block.
1834 </p></dd></dl>
1835
1836 <a name="IDX578"></a>
1837 <p>The following function looks up a block.
1838 </p>
1839 <dl>
1840 <dt><u>Function:</u> const uc_block_t * <b>uc_block</b><i> (ucs4_t <var>uc</var>)</i>
1841 <a name="IDX579"></a>
1842 </dt>
1843 <dd><p>Returns the block a character belongs to.
1844 </p></dd></dl>
1845
1846 <p>The following function views a block as a set of Unicode characters.
1847 </p>
1848 <dl>
1849 <dt><u>Function:</u> bool <b>uc_is_block</b><i> (ucs4_t <var>uc</var>, const uc_block_t *<var>block</var>)</i>
1850 <a name="IDX580"></a>
1851 </dt>
1852 <dd><p>Tests whether a Unicode character belongs to a given block.
1853 </p></dd></dl>
1854
1855 <p>The following gives a global picture of all block.
1856 </p>
1857 <dl>
1858 <dt><u>Function:</u> void <b>uc_all_blocks</b><i> (const uc_block_t **<var>blocks</var>, size_t *<var>count</var>)</i>
1859 <a name="IDX581"></a>
1860 </dt>
1861 <dd><p>Get the list of all blocks.  Stores a pointer to an array of all blocks in
1862 <code>*<var>blocks</var></code> and the length of this array in <code>*<var>count</var></code>.
1863 </p></dd></dl>
1864
1865 <hr size="6">
1866 <a name="ISO-C-and-Java-syntax"></a>
1867 <a name="SEC35"></a>
1868 <h2 class="section"> <a href="libunistring.html#TOC35">8.11 ISO C and Java syntax</a> </h2>
1869
1870 <p>The following properties are taken from language standards.  The supported
1871 language standards are ISO C 99 and Java.
1872 </p>
1873 <dl>
1874 <dt><u>Function:</u> bool <b>uc_is_c_whitespace</b><i> (ucs4_t <var>uc</var>)</i>
1875 <a name="IDX582"></a>
1876 </dt>
1877 <dd><p>Tests whether a Unicode character is considered whitespace in ISO C 99.
1878 </p></dd></dl>
1879
1880 <dl>
1881 <dt><u>Function:</u> bool <b>uc_is_java_whitespace</b><i> (ucs4_t <var>uc</var>)</i>
1882 <a name="IDX583"></a>
1883 </dt>
1884 <dd><p>Tests whether a Unicode character is considered whitespace in Java.
1885 </p></dd></dl>
1886
1887 <p>The following enumerated values are the possible return values of the functions
1888 <code>uc_c_ident_category</code> and <code>uc_java_ident_category</code>.
1889 </p>
1890 <dl>
1891 <dt><u>Constant:</u> int <b>UC_IDENTIFIER_START</b>
1892 <a name="IDX584"></a>
1893 </dt>
1894 <dd><p>This return value means that the given character is valid as first or
1895 subsequent character in an identifier.
1896 </p></dd></dl>
1897
1898 <dl>
1899 <dt><u>Constant:</u> int <b>UC_IDENTIFIER_VALID</b>
1900 <a name="IDX585"></a>
1901 </dt>
1902 <dd><p>This return value means that the given character is valid as subsequent
1903 character only.
1904 </p></dd></dl>
1905
1906 <dl>
1907 <dt><u>Constant:</u> int <b>UC_IDENTIFIER_INVALID</b>
1908 <a name="IDX586"></a>
1909 </dt>
1910 <dd><p>This return value means that the given character is not valid in an identifier.
1911 </p></dd></dl>
1912
1913 <dl>
1914 <dt><u>Constant:</u> int <b>UC_IDENTIFIER_IGNORABLE</b>
1915 <a name="IDX587"></a>
1916 </dt>
1917 <dd><p>This return value (only for Java) means that the given character is ignorable.
1918 </p></dd></dl>
1919
1920 <p>The following function determine whether a given character can be a constituent
1921 of an identifier in the given programming language.
1922 </p>
1923 <a name="IDX588"></a>
1924 <dl>
1925 <dt><u>Function:</u> int <b>uc_c_ident_category</b><i> (ucs4_t <var>uc</var>)</i>
1926 <a name="IDX589"></a>
1927 </dt>
1928 <dd><p>Returns the categorization of a Unicode character with respect to the ISO C 99
1929 identifier syntax.
1930 </p></dd></dl>
1931
1932 <a name="IDX590"></a>
1933 <dl>
1934 <dt><u>Function:</u> int <b>uc_java_ident_category</b><i> (ucs4_t <var>uc</var>)</i>
1935 <a name="IDX591"></a>
1936 </dt>
1937 <dd><p>Returns the categorization of a Unicode character with respect to the Java
1938 identifier syntax.
1939 </p></dd></dl>
1940
1941 <hr size="6">
1942 <a name="Classifications-like-in-ISO-C"></a>
1943 <a name="SEC36"></a>
1944 <h2 class="section"> <a href="libunistring.html#TOC36">8.12 Classifications like in ISO C</a> </h2>
1945
1946 <p>The following character classifications mimic those declared in the ISO C
1947 header files <code>&lt;ctype.h&gt;</code> and <code>&lt;wctype.h&gt;</code>.  These functions are
1948 deprecated, because this set of functions was designed with ASCII in mind and
1949 cannot reflect the more diverse reality of the Unicode character set.  But
1950 they can be a quick-and-dirty porting aid when migrating from <code>wchar_t</code>
1951 APIs to Unicode strings.
1952 </p>
1953 <dl>
1954 <dt><u>Function:</u> bool <b>uc_is_alnum</b><i> (ucs4_t <var>uc</var>)</i>
1955 <a name="IDX592"></a>
1956 </dt>
1957 <dd><p>Tests for any character for which <code>uc_is_alpha</code> or <code>uc_is_digit</code> is
1958 true.
1959 </p></dd></dl>
1960
1961 <dl>
1962 <dt><u>Function:</u> bool <b>uc_is_alpha</b><i> (ucs4_t <var>uc</var>)</i>
1963 <a name="IDX593"></a>
1964 </dt>
1965 <dd><p>Tests for any character for which <code>uc_is_upper</code> or <code>uc_is_lower</code> is
1966 true, or any character that is one of a locale-specific set of characters for
1967 which none of <code>uc_is_cntrl</code>, <code>uc_is_digit</code>, <code>uc_is_punct</code>, or
1968 <code>uc_is_space</code> is true.
1969 </p></dd></dl>
1970
1971 <dl>
1972 <dt><u>Function:</u> bool <b>uc_is_cntrl</b><i> (ucs4_t <var>uc</var>)</i>
1973 <a name="IDX594"></a>
1974 </dt>
1975 <dd><p>Tests for any control character.
1976 </p></dd></dl>
1977
1978 <dl>
1979 <dt><u>Function:</u> bool <b>uc_is_digit</b><i> (ucs4_t <var>uc</var>)</i>
1980 <a name="IDX595"></a>
1981 </dt>
1982 <dd><p>Tests for any character that corresponds to a decimal-digit character.
1983 </p></dd></dl>
1984
1985 <dl>
1986 <dt><u>Function:</u> bool <b>uc_is_graph</b><i> (ucs4_t <var>uc</var>)</i>
1987 <a name="IDX596"></a>
1988 </dt>
1989 <dd><p>Tests for any character for which <code>uc_is_print</code> is true and
1990 <code>uc_is_space</code> is false.
1991 </p></dd></dl>
1992
1993 <dl>
1994 <dt><u>Function:</u> bool <b>uc_is_lower</b><i> (ucs4_t <var>uc</var>)</i>
1995 <a name="IDX597"></a>
1996 </dt>
1997 <dd><p>Tests for any character that corresponds to a lowercase letter or is one
1998 of a locale-specific set of characters for which none of <code>uc_is_cntrl</code>,
1999 <code>uc_is_digit</code>, <code>uc_is_punct</code>, or <code>uc_is_space</code> is true.
2000 </p></dd></dl>
2001
2002 <dl>
2003 <dt><u>Function:</u> bool <b>uc_is_print</b><i> (ucs4_t <var>uc</var>)</i>
2004 <a name="IDX598"></a>
2005 </dt>
2006 <dd><p>Tests for any printing character.
2007 </p></dd></dl>
2008
2009 <dl>
2010 <dt><u>Function:</u> bool <b>uc_is_punct</b><i> (ucs4_t <var>uc</var>)</i>
2011 <a name="IDX599"></a>
2012 </dt>
2013 <dd><p>Tests for any printing character that is one of a locale-specific set of
2014 characters for which neither <code>uc_is_space</code> nor <code>uc_is_alnum</code> is true.
2015 </p></dd></dl>
2016
2017 <dl>
2018 <dt><u>Function:</u> bool <b>uc_is_space</b><i> (ucs4_t <var>uc</var>)</i>
2019 <a name="IDX600"></a>
2020 </dt>
2021 <dd><p>Test for any character that corresponds to a locale-specific set of characters
2022 for which none of <code>uc_is_alnum</code>, <code>uc_is_graph</code>, or <code>uc_is_punct</code>
2023 is true.
2024 </p></dd></dl>
2025
2026 <dl>
2027 <dt><u>Function:</u> bool <b>uc_is_upper</b><i> (ucs4_t <var>uc</var>)</i>
2028 <a name="IDX601"></a>
2029 </dt>
2030 <dd><p>Tests for any character that corresponds to an uppercase letter or is one
2031 of a locale-specific set of characters for which none of <code>uc_is_cntrl</code>,
2032 <code>uc_is_digit</code>, <code>uc_is_punct</code>, or <code>uc_is_space</code> is true.
2033 </p></dd></dl>
2034
2035 <dl>
2036 <dt><u>Function:</u> bool <b>uc_is_xdigit</b><i> (ucs4_t <var>uc</var>)</i>
2037 <a name="IDX602"></a>
2038 </dt>
2039 <dd><p>Tests for any character that corresponds to a hexadecimal-digit character.
2040 </p></dd></dl>
2041
2042 <dl>
2043 <dt><u>Function:</u> bool <b>uc_is_blank</b><i> (ucs4_t <var>uc</var>)</i>
2044 <a name="IDX603"></a>
2045 </dt>
2046 <dd><p>Tests for any character that corresponds to a standard blank character or
2047 a locale-specific set of characters for which <code>uc_is_alnum</code> is false.
2048 </p></dd></dl>
2049 <hr size="6">
2050 <table cellpadding="1" cellspacing="1" border="0">
2051 <tr><td valign="middle" align="left">[<a href="#SEC20" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
2052 <td valign="middle" align="left">[<a href="libunistring_9.html#SEC37" title="Next chapter"> &gt;&gt; </a>]</td>
2053 <td valign="middle" align="left"> &nbsp; </td>
2054 <td valign="middle" align="left"> &nbsp; </td>
2055 <td valign="middle" align="left"> &nbsp; </td>
2056 <td valign="middle" align="left"> &nbsp; </td>
2057 <td valign="middle" align="left"> &nbsp; </td>
2058 <td valign="middle" align="left">[<a href="libunistring.html#SEC_Top" title="Cover (top) of document">Top</a>]</td>
2059 <td valign="middle" align="left">[<a href="libunistring.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
2060 <td valign="middle" align="left">[<a href="libunistring_18.html#SEC71" title="Index">Index</a>]</td>
2061 <td valign="middle" align="left">[<a href="libunistring_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
2062 </tr></table>
2063 <p>
2064  <font size="-1">
2065   This document was generated by <em>Bruno Haible</em> on <em>March, 30 2010</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.78a</em></a>.
2066  </font>
2067  <br>
2068
2069 </p>
2070 </body>
2071 </html>