Skip to main content
net10.0

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.

NuGetCompare
Published
Jul 20, 2026
3mo ago
Total Downloads
173
173

Install

dotnet add package Paratext.IcuFreeLdml --version 9.6.0.2-beta
ProductVersions
.NET
net10.0

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:reordered collations are preserved on round-trip but not loaded into the writing system model.
  • sil:needsCompiling collations keep SimpleRules and any existing <cr> rules for round-trip, but rules are not validated or compiled on read (unlike ICU LdmlDataMapper which 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 (xmlTextReader parameter).

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

No structural changes between v9.6.0.1-beta and v9.6.0.2-beta.

Adoption Assessment

Assess this package against its supported frameworks, license, maintenance signals and dependency graph before making it a project standard.

This version is marked prerelease. Validate its API and upgrade path before production use.No SPDX license expression is published. Review the license text and your organisation's policy before redistribution.Compatibility metadata lists 1 target framework; confirm the exact target used by your application.

Related Guides & Workflows

Learn how to evaluate, integrate, or audit this package in your .NET project.