src/swipl-devel/packages/utf8proc/README.md

SWI-Prolog binding to library utf8proc

This package wraps the utf8proc library, providing up-to-date inspection and transformation of Unicode strings and atoms. It is the foundation for SWI-Prolog's normalisation forms (NFC, NFD, NFKC, NFKD), case folding, grapheme-cluster iteration (UAX#29), and per-code-point property lookup (general category, bidi class, display width, combining class, case mappings, ...). The public Prolog API is exported from library(unicode); see the predicates unicode_nfc/2, unicode_property/2, atom_graphemes/2, and friends for details.

A second library, library(unicode_security), ships the UTS #39 security helpers (confusable skeleton, mixed-script resolution, identifier restriction levels) and UAX #24 script properties. Its tables are derived from the Unicode Character Database files under data/ by etc/gen_uts39.pl; the generated uts39_data.{c,h} is checked in. After a UCD version bump, refresh both with ninja regen-uts39 in the build directory.

This is a git submodule of the main swi-prolog/swipl-devel repository. It builds only when the system has libutf8proc installed (available in every major package manager); the upstream utf8proc source is no longer vendored. Issues and pull requests specific to this binding belong here; Unicode-data bugs should be reported upstream at the utf8proc tracker.



Try the rswipl package in your browser

Any scripts or data that you put into this service are public.

rswipl documentation built on June 16, 2026, 5:07 p.m.