Overview of the ICU Data Build Tool
main.dat file suitable for resource-constrained environments like smartphone apps or embedded devices.repository·main·Indexed 25 days ago
https://github.com/unicode-org/icuA library providing robust support for Unicode, internationalization, and localization. Includes implementations for C/C++ (ICU4C) and Java (ICU4J), as well as tools for converting CLDR XML data to ICU resource files, managing break iterator rule source data, and building unsafe-backward collator data.
.dat file suitable for resource-constrained environments like smartphone apps or embedded devices.ICU Transforms provide a mechanism for processing Unicode text through various specialized operations. Key capabilities include:
ICU provides internationalization utilities for C, C++, and Java. While they share the same development goals and track the latest Unicode standard, they are distributed as distinct versions:
Both versions maintain a single, portable source code base.
ICU4J (International Components for Unicode for Java) is an add-on to the standard Java Runtime Environment (JRE) that provides advanced Unicode and internationalization services. It is designed to stay current with the evolving Unicode standard and provides richer, more performant APIs than the standard J2SE implementation.
Key features include:
By default, ICU treats spaces and punctuation as "variable" characters. These characters add primary (base character) differences and typically sort less-than digits and letters.
To change this behavior, ICU provides "Variable Weighting" or "Alternate Handling" options. These options allow you to control how variable characters affect sorting at different collation levels (Primary, Secondary, Tertiary, and Quaternary).
| Option | Behavior Summary |
|---|---|
| Non-ignorable (Default) | Maps variable characters to their normal primary collation elements. |
| Blanked | Ignores variable characters entirely (effectively removes them before comparison). |
| Shifted | Sorts variable characters at the quaternary level, typically before regular characters. |
| Shift-Trimmed | Not implemented in ICU. Sorts variable characters such that inserting one makes a string sort greater-than the original. |
| Variable-After | Not implemented in ICU. Sorts variable characters after regular characters. |
ICU provides two primary calendar classes for parsing and formatting calendar information:
Calendar: An abstract base class defining the calendar API. It supports converting UDate to specific fields and performing field arithmetic.GregorianCalendar: A concrete subclass of Calendar implementing the standard international Gregorian calendar.ICU also provides specialized subclasses for non-Gregorian systems, including Buddhist, Chinese, Coptic, Ethiopic, Hebrew, Indian, Islamic, Japanese, and Persian calendars.
ICU provides a converter API designed to convert text between Unicode and other character encodings. The API is optimized for high performance, streaming (buffered) data, and consistent behavior across different computer platforms.
Key features include:
ICU 76 is a major release that updates to Unicode 16 and CLDR 46.
Key updates include:
night, light-speed), and improved Han Radical-Stroke order.java.time (Temporal) types using existing ICU4J date/time formatting classes.Initial release version: 76.1 (Released 2024-10-24).
ICU4C (International Components for Unicode) provides robust Unicode services for global software support. Key capabilities include:
UText is a text abstraction facility in ICU designed to allow ICU services (like Regular Expressions and Break Iteration) to work with various text formats.
Supported formats:
char*)UChar* or UnicodeString)Replaceable objectsExtensibility: Developers can extend UText to support custom formats (e.g., UTF-32, discontiguous memory chunks, or non-Unicode code pages) by implementing a set of Text Provider Functions.
ICU provides four primary classes for handling date and time logic:
Calendar: An abstract base class that maps UDate values to and from individual calendar fields (year, month, day, etc.) and performs field computations.GregorianCalendar: A concrete subclass of Calendar implementing Julian and Gregorian calendar rules.TimeZone: An abstract base class that maps between Universal Coordinated Time (UTC) and local time.SimpleTimeZone: A concrete subclass of TimeZone that implements standard time and daylight savings time (DST) according to real-world rules.The tools/py/libs directory contains a set of reusable Python helper modules designed to make ICU integration scripts succinct and reliable. These modules are intended to facilitate the migration of shell scripts to Python by providing standardized behaviors for logging, filesystem management, and process execution.
Key modules include:
iculog: Handles progress reporting. It outputs colorized status messages to standard output while logging detailed information to log files for debugging.icufs: Provides filesystem operations such as creating/removing directories and changing the current working directory.icuproc: Manages external process execution with integrated logging and robust error detection.