65 lines
2.0 KiB
Plaintext
65 lines
2.0 KiB
Plaintext
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>
|