libunistring

Text files are nowadays usually encoded in Unicode, and may consist of
very different scripts – from Latin letters to Chinese Hanzi –,
with many kinds of special characters – accents, right-to-left
writing marks, hyphens, Roman numbers, and much more. But the POSIX
platform APIs for text do not contain adequate functions for dealing with
particular properties of many Unicode characters. In fact, the POSIX APIs
for text have several assumptions at their base which don't hold for Unicode
text.

This library provides functions for manipulating Unicode strings and
for manipulating C strings according to the Unicode standard.

Details

This library consists of the following parts:

<unistr.h>

elementary string functions

<uniconv.h>

conversion from/to legacy encodings

<unistdio.h>

formatted output to strings

<uniname.h>

character names

<unictype.h>

character classification and properties

<uniwidth.h>

string width when using nonproportional fonts

<uniwbrk.h>

word breaks

<unilbrk.h>

line breaking algorithm

<uninorm.h>

normalization (composition and decomposition)

<unicase.h>

case folding

<uniregex.h>

regular expressions (not yet implemented)

Who needs libunistring?

libunistring is for you if your application involves non-trivial text
processing, such as upper/lower case conversions, line breaking, operations
on words, or more advanced analysis of text. Text provided by the user can,
in general, contain characters of all kinds of scripts. The text processing
functions provided by this library handle all scripts and all languages.

libunistring is for you if your application already uses the ISO C / POSIX
<ctype.h>, <wctype.h> functions and the
text it operates on is provided by the user and can be in any language.

libunistring is also for you if your application uses Unicode strings as
internal in-memory representation.