Skip to content

0006 — A dependency-free core; native code only by opt-in

Status: Accepted

Context

Every native dependency narrows where a library can run (sandboxed hosts, WASM, unusual architectures) and adds a supply-chain and packaging burden. Some capabilities, though, are only realistic with native code: complex-script shaping (HarfBuzz) and high-quality rasterisation (Skia).

Decision

Package Contents Dependencies
Rustaveli.Pdf layout, PDF writer, font subsetting, basic OpenType shaping (kerning, standard ligatures) none
Rustaveli.Pdf.Shaping complex scripts (Arabic, Indic, Thai), bidi HarfBuzzSharp
Rustaveli.Pdf.Raster pages as PNG/JPEG/WebP SkiaSharp
Rustaveli.Pdf.Svg SVG to vector PDF none
Rustaveli.Pdf.Operations merge, overlay, attachments, encryption none
Rustaveli.Pdf.Preview developer preview tool —

Basic shaping covers Latin, Cyrillic, Greek, Georgian and CJK without native code.

Consequences

  • The default install is pure managed code and runs everywhere .NET does.
  • Complex-script users add one package; the text engine must expose a shaping seam that package plugs into.