This project has a deliberately broad dependency surface because it targets multiple shaping/rendering backends across platforms. This document records the major external dependencies and why they exist.
Source of truth for versions: Cargo.toml ([workspace.dependencies]) and individual crate Cargo.toml files.
skrifa,read-fonts: Font parsing, metrics, outlines, and OpenType table access (including color tables).
harfbuzz_rs: HarfBuzz shaping backend (typf-shape-hb).harfrust: Rust shaping experiments / alternative backend (typf-shape-hr).icu,icu_properties,icu_segmenter: Unicode normalization/segmentation foricu-hbshaping.
kurbo: Curve/path geometry primitives used across renderers.tiny-skia: CPU rasterization used directly and as an engine intypf-render-color.resvg,usvg: OpenType-SVG glyph rendering (typf-render-colorSVG feature).png: PNG decode/encode for bitmap glyphs and exports.
wgpu: GPU abstraction for thevellorenderer backend.- Vendored
vello_*crates underexternal/vello/…: GPU (hybrid) and CPU rendering engines used bytypf-render-vello/typf-render-vello-cpu.
moka: Bounded cache with TinyLFU admission (scan-resistant), used for shaping/rendering caches.parking_lot: Low-overhead synchronization primitives.rayon: Optional parallelism for CPU-heavy workloads.lru: Legacy/auxiliary LRU usage (gradually being replaced bymoka).
thiserror: Typed error enums.anyhow: Application-level error composition (primarily CLIs/tools).log,env_logger: Logging facade + default logger.
language-tags: BCP 47 language-tag parsing/canonicalization for CLI, batch, and JSONL language hints.
objc2+objc2-*crates: macOS CoreText/CoreGraphics integration.
maturin: Builds thetypfpyextension module from Rust.fire: Python CLI wrapper.
- Prefer well-maintained, widely-used crates over bespoke code.
- Avoid adding new dependencies unless they remove complexity or are required for a backend.