| libgrapheme | |
| =========== | |
| libgrapheme is an extremely simple freestanding C99 library providing | |
| utilities for properly handling strings according to the latest Unicode | |
| standard 15.0.0. It offers fully Unicode compliant | |
| - grapheme cluster (i.e. user-perceived character) segmentation | |
| - word segmentation | |
| - sentence segmentation | |
| - detection of permissible line break opportunities | |
| - case detection (lower-, upper- and title-case) | |
| - case conversion (to lower-, upper- and title-case) | |
| on UTF-8 strings and codepoint arrays, which both can also be | |
| null-terminated. | |
| The necessary lookup-tables are automatically generated from the Unicode | |
| standard data (contained in the tarball) and heavily compressed. Over | |
| 10,000 automatically generated conformance tests and over 150 unit tests | |
| ensure conformance and correctness. | |
| There is no complicated build-system involved and it's all done using one | |
| POSIX-compliant Makefile. All you need is a C99 compiler, given the | |
| lookup-table-generators and compressors are also written in C99. The | |
| resulting library is freestanding and thus not even dependent on a | |
| standard library to be present at runtime, making it a suitable choice | |
| for bare metal applications. | |
| It is also way smaller and much faster than the other established | |
| Unicode string libraries (ICU, GNU's libunistring, libutf8proc). | |
| Requirements | |
| ------------ | |
| A C99-compiler and POSIX make. | |
| Installation | |
| ------------ | |
| Run ./configure, which automatically edits config.mk to match your local | |
| setup. Edit config.mk by hand if necessary or desired for further | |
| customization. | |
| Afterwards enter the following command to build and install libgrapheme | |
| (if necessary as root): | |
| make install | |
| Conformance | |
| ----------- | |
| The libgrapheme library is compliant with the Unicode 15.0.0 | |
| specification (September 2022). The tests can be run with | |
| make test | |
| to check standard conformance and correctness. | |
| Usage | |
| ----- | |
| Include the header grapheme.h in your code and link against libgrapheme | |
| with "-lgrapheme" either statically ("-static") or dynamically. | |
| Author | |
| ------ | |
| Laslo Hunhold <dev@frign.de> |