Paratext.IcuFreeLdml
ICU-free implementation of ILdmlAdapter for reading and writing LDML writing system definitions. For Paratext.Data consumers that cannot or do not want to depend on ICU.
Install
| Product | Versions |
|---|---|
| .NET |
README
Paratext.IcuFreeLdml
ICU-free implementation of ILdmlAdapter for reading and writing LDML writing system definitions.
Use this package when you depend on ParatextData but cannot or do not want to ship ICU (for example Android, or other lightweight deployments).
Usage
using Paratext.Data;
using Paratext.IcuFreeLdml;
ScrTextCollection.LdmlAdapter = new IcuFreeLdmlAdapter();
The adapter provides read/write parity with SIL.WritingSystems.LdmlDataMapper for Paratext-supported LDML fields: identity, exemplar characters, delimiters, layout, collations (simple + ICU rules storage), and fonts.
Limitations
- Collation runtime still requires ICU where Paratext uses ICU collators; this library only parses and persists collation data.
sil:reorderedcollations are preserved on round-trip but not loaded into the writing system model.sil:needsCompilingcollations keepSimpleRulesand any existing<cr>rules for round-trip, but rules are not validated or compiled on read (unlike ICULdmlDataMapperwhich may compile on read).\p{...}property classes in exemplar sets are expanded on read (ICU-free); write emits explicit character lists.- Unknown LDML elements are preserved when writing with an existing LDML file as the round-trip base (
xmlTextReaderparameter).
Building the NuGet package
Version is defined in Paratext.IcuFreeLdml.csproj. Release builds produce .nupkg and .snupkg files in bin/Release.
./createIcuFreeLdmlNugetPackage.sh Release
Optional version override:
./createIcuFreeLdmlNugetPackage.sh Release 9.6.0.2-beta
On Windows:
createIcuFreeLdmlNugetPackage.bat Release
Changes from Previous Version
Adoption Assessment
Assess this package against its supported frameworks, license, maintenance signals and dependency graph before making it a project standard.
Related Guides & Workflows
Learn how to evaluate, integrate, or audit this package in your .NET project.