| libgrapheme | |
| =========== | |
| The libgrapheme library provides functions to properly handle Unicode | |
| strings according to the Unicode specification. Unicode strings are made | |
| up of user-perceived characters (so-called "grapheme clusters") that are | |
| made up of one or more Unicode codepoints, which in turn are encoded in | |
| one or more bytes in an encoding like UTF-8. | |
| There is a widespread misconception that it was enough to simply | |
| determine codepoints in a string and treat them as user-perceived | |
| characters to be Unicode compliant. While this may work in some cases, | |
| this assumption quickly breaks, especially for non-Western languages and | |
| decomposed Unicode strings where user-perceived characters are usually | |
| represented using multiple codepoints. | |
| Despite the complicated multilevel structure of Unicode strings, | |
| libgrapheme provides methods to work with them at the byte-level (i.e. | |
| UTF-8 ‘char’ arrays) while also providing codepoint-level methods. | |
| See libgrapheme(7) to get started and try out the self-contained examples | |
| given on the manual pages for each function. | |
| Requirements | |
| ------------ | |
| A C99-compiler and POSIX make. | |
| Installation | |
| ------------ | |
| Edit config.mk to match your local setup (usually not necessary, the | |
| default prefix is /usr/local). | |
| 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). | |
| To ensure conformance, libgrapheme includes hundreds of tests including | |
| all provided with the standard-provided test-data that is parsed | |
| automatically. The tests can be run with | |
| make test | |
| to check standard conformance. | |
| 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> |