Add Unicode script support
[platform/upstream/glib.git] / docs / reference / glib / tmpl / unicode.sgml
1 <!-- ##### SECTION Title ##### -->
2 Unicode Manipulation
3
4 <!-- ##### SECTION Short_Description ##### -->
5 functions operating on Unicode characters and UTF-8 strings.
6
7 <!-- ##### SECTION Long_Description ##### -->
8 <para>
9 This section describes a number of functions for dealing with
10 Unicode characters and strings.  There are analogues of the
11 traditional <filename>ctype.h</filename> character classification
12 and case conversion functions, UTF-8 analogues of some string utility 
13 functions, functions to perform normalization, case conversion and
14 collation on UTF-8 strings and finally functions to convert between
15 the UTF-8, UTF-16 and UCS-4 encodings of Unicode.
16 </para>
17
18 <para>
19 The implementations of the Unicode functions in GLib are based
20 on the Unicode Character Data tables, which are available from
21 <ulink url="http://www.unicode.org">www.unicode.org</ulink>.
22 GLib 2.8 supports Unicode 4.0, GLib 2.10 supports Unicode 4.1,
23 GLib 2.12 supports Unicode 5.0.
24 </para>
25
26 <!-- ##### SECTION See_Also ##### -->
27 <para>
28 <variablelist>
29
30 <varlistentry>
31 <term>g_locale_to_utf8(), g_locale_from_utf8()</term>
32 <listitem><para>
33 Convenience functions for converting between UTF-8 and the locale encoding. 
34 </para></listitem>
35 </varlistentry>
36
37 </variablelist>
38 </para>
39
40 <!-- ##### SECTION Stability_Level ##### -->
41
42
43 <!-- ##### TYPEDEF gunichar ##### -->
44 <para>
45 A type which can hold any UCS-4 character code. 
46 </para>
47
48
49 <!-- ##### TYPEDEF gunichar2 ##### -->
50 <para>
51 A type which can hold any UTF-16 code 
52 point<footnote id="utf16_surrogate_pairs">UTF-16 also has so called 
53 <firstterm>surrogate pairs</firstterm> to encode characters beyond the 
54 BMP as pairs of 16bit numbers. Surrogate pairs cannot be stored in a 
55 single gunichar2 field, but all GLib functions accepting gunichar2 arrays 
56 will correctly interpret surrogate pairs.</footnote>.
57 </para>
58
59
60 <!-- ##### FUNCTION g_unichar_validate ##### -->
61 <para>
62
63 </para>
64
65 @ch: 
66 @Returns: 
67
68
69 <!-- ##### FUNCTION g_unichar_isalnum ##### -->
70 <para>
71
72 </para>
73
74 @c: 
75 @Returns: 
76
77
78 <!-- ##### FUNCTION g_unichar_isalpha ##### -->
79 <para>
80
81 </para>
82
83 @c: 
84 @Returns: 
85
86
87 <!-- ##### FUNCTION g_unichar_iscntrl ##### -->
88 <para>
89
90 </para>
91
92 @c: 
93 @Returns: 
94
95
96 <!-- ##### FUNCTION g_unichar_isdigit ##### -->
97 <para>
98
99 </para>
100
101 @c: 
102 @Returns: 
103
104
105 <!-- ##### FUNCTION g_unichar_isgraph ##### -->
106 <para>
107
108 </para>
109
110 @c: 
111 @Returns: 
112
113
114 <!-- ##### FUNCTION g_unichar_islower ##### -->
115 <para>
116
117 </para>
118
119 @c: 
120 @Returns: 
121
122
123 <!-- ##### FUNCTION g_unichar_isprint ##### -->
124 <para>
125
126 </para>
127
128 @c: 
129 @Returns: 
130
131
132 <!-- ##### FUNCTION g_unichar_ispunct ##### -->
133 <para>
134
135 </para>
136
137 @c: 
138 @Returns: 
139
140
141 <!-- ##### FUNCTION g_unichar_isspace ##### -->
142 <para>
143
144 </para>
145
146 @c: 
147 @Returns: 
148
149
150 <!-- ##### FUNCTION g_unichar_isupper ##### -->
151 <para>
152
153 </para>
154
155 @c: 
156 @Returns: 
157
158
159 <!-- ##### FUNCTION g_unichar_isxdigit ##### -->
160 <para>
161
162 </para>
163
164 @c: 
165 @Returns: 
166
167
168 <!-- ##### FUNCTION g_unichar_istitle ##### -->
169 <para>
170
171 </para>
172
173 @c: 
174 @Returns: 
175
176
177 <!-- ##### FUNCTION g_unichar_isdefined ##### -->
178 <para>
179
180 </para>
181
182 @c: 
183 @Returns: 
184
185
186 <!-- ##### FUNCTION g_unichar_iswide ##### -->
187 <para>
188
189 </para>
190
191 @c: 
192 @Returns: 
193
194
195 <!-- ##### FUNCTION g_unichar_iswide_cjk ##### -->
196 <para>
197
198 </para>
199
200 @c: 
201 @Returns: 
202
203
204 <!-- ##### FUNCTION g_unichar_toupper ##### -->
205 <para>
206
207 </para>
208
209 @c: 
210 @Returns: 
211
212
213 <!-- ##### FUNCTION g_unichar_tolower ##### -->
214 <para>
215
216 </para>
217
218 @c: 
219 @Returns: 
220
221
222 <!-- ##### FUNCTION g_unichar_totitle ##### -->
223 <para>
224
225 </para>
226
227 @c: 
228 @Returns: 
229
230
231 <!-- ##### FUNCTION g_unichar_digit_value ##### -->
232 <para>
233
234 </para>
235
236 @c: 
237 @Returns: 
238
239
240 <!-- ##### FUNCTION g_unichar_xdigit_value ##### -->
241 <para>
242
243 </para>
244
245 @c: 
246 @Returns: 
247
248
249 <!-- ##### ENUM GUnicodeType ##### -->
250 <para>
251 These are the possible character classifications.
252 See <ulink url="http://www.unicode.org/Public/UNIDATA/UnicodeData.html"
253 >http://www.unicode.org/Public/UNIDATA/UnicodeData.html</ulink>.
254 </para>
255
256 @G_UNICODE_CONTROL: 
257 @G_UNICODE_FORMAT: 
258 @G_UNICODE_UNASSIGNED: 
259 @G_UNICODE_PRIVATE_USE: 
260 @G_UNICODE_SURROGATE: 
261 @G_UNICODE_LOWERCASE_LETTER: 
262 @G_UNICODE_MODIFIER_LETTER: 
263 @G_UNICODE_OTHER_LETTER: 
264 @G_UNICODE_TITLECASE_LETTER: 
265 @G_UNICODE_UPPERCASE_LETTER: 
266 @G_UNICODE_COMBINING_MARK: 
267 @G_UNICODE_ENCLOSING_MARK: 
268 @G_UNICODE_NON_SPACING_MARK: 
269 @G_UNICODE_DECIMAL_NUMBER: 
270 @G_UNICODE_LETTER_NUMBER: 
271 @G_UNICODE_OTHER_NUMBER: 
272 @G_UNICODE_CONNECT_PUNCTUATION: 
273 @G_UNICODE_DASH_PUNCTUATION: 
274 @G_UNICODE_CLOSE_PUNCTUATION: 
275 @G_UNICODE_FINAL_PUNCTUATION: 
276 @G_UNICODE_INITIAL_PUNCTUATION: 
277 @G_UNICODE_OTHER_PUNCTUATION: 
278 @G_UNICODE_OPEN_PUNCTUATION: 
279 @G_UNICODE_CURRENCY_SYMBOL: 
280 @G_UNICODE_MODIFIER_SYMBOL: 
281 @G_UNICODE_MATH_SYMBOL: 
282 @G_UNICODE_OTHER_SYMBOL: 
283 @G_UNICODE_LINE_SEPARATOR: 
284 @G_UNICODE_PARAGRAPH_SEPARATOR: 
285 @G_UNICODE_SPACE_SEPARATOR: 
286
287 <!-- ##### FUNCTION g_unichar_type ##### -->
288 <para>
289
290 </para>
291
292 @c: 
293 @Returns: 
294
295
296 <!-- ##### ENUM GUnicodeBreakType ##### -->
297 <para>
298 These are the possible line break classifications.
299 The five Hangul types were added in Unicode 4.1, so, has been
300 introduced in GLib 2.10.  Note that new types may be added in the future.
301 Applications should be ready to handle unknown values.
302 They may be regarded as %G_UNICODE_BREAK_UNKNOWN.
303 See <ulink url="http://www.unicode.org/unicode/reports/tr14/"
304 >http://www.unicode.org/unicode/reports/tr14/</ulink>.
305 </para>
306
307 @G_UNICODE_BREAK_MANDATORY: 
308 @G_UNICODE_BREAK_CARRIAGE_RETURN: 
309 @G_UNICODE_BREAK_LINE_FEED: 
310 @G_UNICODE_BREAK_COMBINING_MARK: 
311 @G_UNICODE_BREAK_SURROGATE: 
312 @G_UNICODE_BREAK_ZERO_WIDTH_SPACE: 
313 @G_UNICODE_BREAK_INSEPARABLE: 
314 @G_UNICODE_BREAK_NON_BREAKING_GLUE: 
315 @G_UNICODE_BREAK_CONTINGENT: 
316 @G_UNICODE_BREAK_SPACE: 
317 @G_UNICODE_BREAK_AFTER: 
318 @G_UNICODE_BREAK_BEFORE: 
319 @G_UNICODE_BREAK_BEFORE_AND_AFTER: 
320 @G_UNICODE_BREAK_HYPHEN: 
321 @G_UNICODE_BREAK_NON_STARTER: 
322 @G_UNICODE_BREAK_OPEN_PUNCTUATION: 
323 @G_UNICODE_BREAK_CLOSE_PUNCTUATION: 
324 @G_UNICODE_BREAK_QUOTATION: 
325 @G_UNICODE_BREAK_EXCLAMATION: 
326 @G_UNICODE_BREAK_IDEOGRAPHIC: 
327 @G_UNICODE_BREAK_NUMERIC: 
328 @G_UNICODE_BREAK_INFIX_SEPARATOR: 
329 @G_UNICODE_BREAK_SYMBOL: 
330 @G_UNICODE_BREAK_ALPHABETIC: 
331 @G_UNICODE_BREAK_PREFIX: 
332 @G_UNICODE_BREAK_POSTFIX: 
333 @G_UNICODE_BREAK_COMPLEX_CONTEXT: 
334 @G_UNICODE_BREAK_AMBIGUOUS: 
335 @G_UNICODE_BREAK_UNKNOWN: 
336 @G_UNICODE_BREAK_NEXT_LINE: 
337 @G_UNICODE_BREAK_WORD_JOINER: 
338 @G_UNICODE_BREAK_HANGUL_L_JAMO: 
339 @G_UNICODE_BREAK_HANGUL_V_JAMO: 
340 @G_UNICODE_BREAK_HANGUL_T_JAMO: 
341 @G_UNICODE_BREAK_HANGUL_LV_SYLLABLE: 
342 @G_UNICODE_BREAK_HANGUL_LVT_SYLLABLE: 
343
344 <!-- ##### FUNCTION g_unichar_break_type ##### -->
345 <para>
346
347 </para>
348
349 @c: 
350 @Returns: 
351
352
353 <!-- ##### FUNCTION g_unicode_canonical_ordering ##### -->
354 <para>
355
356 </para>
357
358 @string: 
359 @len: 
360
361
362 <!-- ##### FUNCTION g_unicode_canonical_decomposition ##### -->
363 <para>
364
365 </para>
366
367 @ch: 
368 @result_len: 
369 @Returns: 
370
371
372 <!-- ##### FUNCTION g_unichar_get_mirror_char ##### -->
373 <para>
374
375 </para>
376
377 @ch: 
378 @mirrored_ch: 
379 @Returns: 
380
381
382 <!-- ##### ENUM GUnicodeScript ##### -->
383 <para>
384 The #GUnicodeScript enumeration identifies different writing
385 systems. The values correspond to the names as defined in the
386 Unicode standard. The enumeration has been added in GLib 2.14. 
387 Note that new types may be added in the future. Applications 
388 should be ready to handle unknown values.
389 See <ulink
390 url="http://www.unicode.org/reports/tr24/">Unicode Standard Annex
391 #24: Script names</ulink>.
392 </para>
393
394 @G_UNICODE_SCRIPT_INVALID_CODE: a value never returned from g_unichar_get_script()
395 @G_UNICODE_SCRIPT_COMMON:     a character used by multiple different scripts
396 @G_UNICODE_SCRIPT_INHERITED:  a mark glyph that takes its script from the
397                               base glyph to which it is attached
398 @G_UNICODE_SCRIPT_ARABIC:     Arabic
399 @G_UNICODE_SCRIPT_ARMENIAN:   Armenian
400 @G_UNICODE_SCRIPT_BENGALI:    Bengali
401 @G_UNICODE_SCRIPT_BOPOMOFO:   Bopomofo
402 @G_UNICODE_SCRIPT_CHEROKEE:   Cherokee
403 @G_UNICODE_SCRIPT_COPTIC:     Coptic
404 @G_UNICODE_SCRIPT_CYRILLIC:   Cyrillic
405 @G_UNICODE_SCRIPT_DESERET:    Deseret
406 @G_UNICODE_SCRIPT_DEVANAGARI: Devanagari
407 @G_UNICODE_SCRIPT_ETHIOPIC:   Ethiopic
408 @G_UNICODE_SCRIPT_GEORGIAN:   Georgian
409 @G_UNICODE_SCRIPT_GOTHIC:     Gothic
410 @G_UNICODE_SCRIPT_GREEK:      Greek
411 @G_UNICODE_SCRIPT_GUJARATI:   Gujarati
412 @G_UNICODE_SCRIPT_GURMUKHI:   Gurmukhi
413 @G_UNICODE_SCRIPT_HAN:        Han
414 @G_UNICODE_SCRIPT_HANGUL:     Hangul
415 @G_UNICODE_SCRIPT_HEBREW:     Hebrew
416 @G_UNICODE_SCRIPT_HIRAGANA:   Hiragana
417 @G_UNICODE_SCRIPT_KANNADA:    Kannada
418 @G_UNICODE_SCRIPT_KATAKANA:   Katakana
419 @G_UNICODE_SCRIPT_KHMER:      Khmer
420 @G_UNICODE_SCRIPT_LAO:        Lao
421 @G_UNICODE_SCRIPT_LATIN:      Latin
422 @G_UNICODE_SCRIPT_MALAYALAM:  Malayalam
423 @G_UNICODE_SCRIPT_MONGOLIAN:  Mongolian
424 @G_UNICODE_SCRIPT_MYANMAR:    Myanmar
425 @G_UNICODE_SCRIPT_OGHAM:      Ogham
426 @G_UNICODE_SCRIPT_OLD_ITALIC: Old Italic
427 @G_UNICODE_SCRIPT_ORIYA:      Oriya
428 @G_UNICODE_SCRIPT_RUNIC:      Runic
429 @G_UNICODE_SCRIPT_SINHALA:    Sinhala
430 @G_UNICODE_SCRIPT_SYRIAC:     Syriac
431 @G_UNICODE_SCRIPT_TAMIL:      Tamil
432 @G_UNICODE_SCRIPT_TELUGU:     Telugu
433 @G_UNICODE_SCRIPT_THAANA:     Thaana
434 @G_UNICODE_SCRIPT_THAI:       Thai
435 @G_UNICODE_SCRIPT_TIBETAN:    Tibetan
436 @G_UNICODE_SCRIPT_CANADIAN_ABORIGINAL: 
437                               Canadian Aboriginal
438 @G_UNICODE_SCRIPT_YI:         Yi
439 @G_UNICODE_SCRIPT_TAGALOG:    Tagalog
440 @G_UNICODE_SCRIPT_HANUNOO:    Hanunoo
441 @G_UNICODE_SCRIPT_BUHID:      Buhid
442 @G_UNICODE_SCRIPT_TAGBANWA:   Tagbanwa
443 @G_UNICODE_SCRIPT_BRAILLE:    Braille
444 @G_UNICODE_SCRIPT_CYPRIOT:    Cypriot
445 @G_UNICODE_SCRIPT_LIMBU:      Limbu
446 @G_UNICODE_SCRIPT_OSMANYA:    Osmanya
447 @G_UNICODE_SCRIPT_SHAVIAN:    Shavian
448 @G_UNICODE_SCRIPT_LINEAR_B:   Linear B
449 @G_UNICODE_SCRIPT_TAI_LE:     Tai Le
450 @G_UNICODE_SCRIPT_UGARITIC:   Ugaritic
451 @G_UNICODE_SCRIPT_NEW_TAI_LUE: New Tai Lue
452 @G_UNICODE_SCRIPT_BUGINESE:   Buginese
453 @G_UNICODE_SCRIPT_GLAGOLITIC: Glagolitic
454 @G_UNICODE_SCRIPT_TIFINAGH:   Tifinagh
455 @G_UNICODE_SCRIPT_SYLOTI_NAGRI: Syloti Nagri
456 @G_UNICODE_SCRIPT_OLD_PERSIAN: Old Persian
457 @G_UNICODE_SCRIPT_KHAROSHTHI: Kharoshthi
458 @G_UNICODE_SCRIPT_UNKNOWN:    an unassigned code point
459 @G_UNICODE_SCRIPT_BALINESE:   Balinese
460 @G_UNICODE_SCRIPT_CUNEIFORM:  Cuneiform
461 @G_UNICODE_SCRIPT_PHOENICIAN: Phoenician
462 @G_UNICODE_SCRIPT_PHAGS_PA:   Phags-pa
463 @G_UNICODE_SCRIPT_NKO:        N'Ko
464
465
466 <!-- ##### FUNCTION g_unichar_get_script ##### -->
467 <para>
468
469 </para>
470
471 @ch: 
472 @Returns: 
473
474
475 <!-- ##### MACRO g_utf8_next_char ##### -->
476 <para>
477 Skips to the next character in a UTF-8 string. The string must be
478 valid; this macro is as fast as possible, and has no error-checking.
479 You would use this macro to iterate over a string character by
480 character. The macro returns the start of the next UTF-8 character.
481 Before using this macro, use g_utf8_validate() to validate strings
482 that may contain invalid UTF-8.
483 </para>
484
485 @p: Pointer to the start of a valid UTF-8 character.
486
487
488 <!-- ##### FUNCTION g_utf8_get_char ##### -->
489 <para>
490
491 </para>
492
493 @p: 
494 @Returns: 
495
496
497 <!-- ##### FUNCTION g_utf8_get_char_validated ##### -->
498 <para>
499
500 </para>
501
502 @p: 
503 @max_len: 
504 @Returns: 
505
506
507 <!-- ##### FUNCTION g_utf8_offset_to_pointer ##### -->
508 <para>
509
510 </para>
511
512 @str: 
513 @offset: 
514 @Returns: 
515
516
517 <!-- ##### FUNCTION g_utf8_pointer_to_offset ##### -->
518 <para>
519
520 </para>
521
522 @str: 
523 @pos: 
524 @Returns: 
525
526
527 <!-- ##### FUNCTION g_utf8_prev_char ##### -->
528 <para>
529
530 </para>
531
532 @p: 
533 @Returns: 
534
535
536 <!-- ##### FUNCTION g_utf8_find_next_char ##### -->
537 <para>
538
539 </para>
540
541 @p: 
542 @end: 
543 @Returns: 
544
545
546 <!-- ##### FUNCTION g_utf8_find_prev_char ##### -->
547 <para>
548
549 </para>
550
551 @str: 
552 @p: 
553 @Returns: 
554
555
556 <!-- ##### FUNCTION g_utf8_strlen ##### -->
557 <para>
558
559 </para>
560
561 @p: 
562 @max: 
563 @Returns: 
564
565
566 <!-- ##### FUNCTION g_utf8_strncpy ##### -->
567 <para>
568
569 </para>
570
571 @dest: 
572 @src: 
573 @n: 
574 @Returns: 
575
576
577 <!-- ##### FUNCTION g_utf8_strchr ##### -->
578 <para>
579
580 </para>
581
582 @p: 
583 @len: 
584 @c: 
585 @Returns: 
586
587
588 <!-- ##### FUNCTION g_utf8_strrchr ##### -->
589 <para>
590
591 </para>
592
593 @p: 
594 @len: 
595 @c: 
596 @Returns: 
597
598
599 <!-- ##### FUNCTION g_utf8_strreverse ##### -->
600 <para>
601
602 </para>
603
604 @str: 
605 @len: 
606 @Returns: 
607
608
609 <!-- ##### FUNCTION g_utf8_validate ##### -->
610 <para>
611
612 </para>
613
614 @str: 
615 @max_len: 
616 @end: 
617 @Returns: 
618
619
620 <!-- ##### FUNCTION g_utf8_strup ##### -->
621 <para>
622
623 </para>
624
625 @str: 
626 @len: 
627 @Returns: 
628
629
630 <!-- ##### FUNCTION g_utf8_strdown ##### -->
631 <para>
632
633 </para>
634
635 @str: 
636 @len: 
637 @Returns: 
638
639
640 <!-- ##### FUNCTION g_utf8_casefold ##### -->
641 <para>
642
643 </para>
644
645 @str: 
646 @len: 
647 @Returns: 
648
649
650 <!-- ##### FUNCTION g_utf8_normalize ##### -->
651 <para>
652
653 </para>
654
655 @str: 
656 @len: 
657 @mode: 
658 @Returns: 
659
660
661 <!-- ##### ENUM GNormalizeMode ##### -->
662 <para>
663 Defines how a Unicode string is transformed in a canonical 
664 form, standardizing such issues as whether a character with an accent is 
665 represented as a base character and combining accent or as a single precomposed
666 character. Unicode strings should generally be normalized before comparing them.
667 </para>
668
669 @G_NORMALIZE_DEFAULT: standardize differences that do not affect the
670   text content, such as the above-mentioned accent representation.
671 @G_NORMALIZE_NFD: another name for %G_NORMALIZE_DEFAULT.
672 @G_NORMALIZE_DEFAULT_COMPOSE: like %G_NORMALIZE_DEFAULT, but with composed
673   forms rather than a maximally decomposed form.
674 @G_NORMALIZE_NFC: another name for %G_NORMALIZE_DEFAULT_COMPOSE.
675 @G_NORMALIZE_ALL: beyond %G_NORMALIZE_DEFAULT also standardize the 
676   "compatibility" characters in Unicode, such as SUPERSCRIPT THREE to the 
677   standard forms (in this case DIGIT THREE). Formatting information may be 
678   lost but for most text operations such characters should be considered the 
679   same.
680 @G_NORMALIZE_NFKD: another name for %G_NORMALIZE_ALL.
681 @G_NORMALIZE_ALL_COMPOSE: like %G_NORMALIZE_ALL, but with composed
682   forms rather than a maximally decomposed form.
683 @G_NORMALIZE_NFKC: another name for %G_NORMALIZE_ALL_COMPOSE.
684
685 <!-- ##### FUNCTION g_utf8_collate ##### -->
686 <para>
687
688 </para>
689
690 @str1: 
691 @str2: 
692 @Returns: 
693
694
695 <!-- ##### FUNCTION g_utf8_collate_key ##### -->
696 <para>
697
698 </para>
699
700 @str: 
701 @len: 
702 @Returns: 
703
704
705 <!-- ##### FUNCTION g_utf8_collate_key_for_filename ##### -->
706 <para>
707
708 </para>
709
710 @str: 
711 @len: 
712 @Returns: 
713
714
715 <!-- ##### FUNCTION g_utf8_to_utf16 ##### -->
716 <para>
717
718 </para>
719
720 @str: 
721 @len: 
722 @items_read: 
723 @items_written: 
724 @error: 
725 @Returns: 
726
727
728 <!-- ##### FUNCTION g_utf8_to_ucs4 ##### -->
729 <para>
730
731 </para>
732
733 @str: 
734 @len: 
735 @items_read: 
736 @items_written: 
737 @error: 
738 @Returns: 
739
740
741 <!-- ##### FUNCTION g_utf8_to_ucs4_fast ##### -->
742 <para>
743
744 </para>
745
746 @str: 
747 @len: 
748 @items_written: 
749 @Returns: 
750
751
752 <!-- ##### FUNCTION g_utf16_to_ucs4 ##### -->
753 <para>
754
755 </para>
756
757 @str: 
758 @len: 
759 @items_read: 
760 @items_written: 
761 @error: 
762 @Returns: 
763
764
765 <!-- ##### FUNCTION g_utf16_to_utf8 ##### -->
766 <para>
767
768 </para>
769
770 @str: 
771 @len: 
772 @items_read: 
773 @items_written: 
774 @error: 
775 @Returns: 
776
777
778 <!-- ##### FUNCTION g_ucs4_to_utf16 ##### -->
779 <para>
780
781 </para>
782
783 @str: 
784 @len: 
785 @items_read: 
786 @items_written: 
787 @error: 
788 @Returns: 
789
790
791 <!-- ##### FUNCTION g_ucs4_to_utf8 ##### -->
792 <para>
793
794 </para>
795
796 @str: 
797 @len: 
798 @items_read: 
799 @items_written: 
800 @error: 
801 @Returns: 
802
803
804 <!-- ##### FUNCTION g_unichar_to_utf8 ##### -->
805 <para>
806
807 </para>
808
809 @c: 
810 @outbuf: 
811 @Returns: 
812
813