mirror of
https://github.com/storytold/vectorcraft.git
synced 2026-10-25 10:17:02 -06:00
#2027 gave vectorcraft-text and vectorcraft-engine a `bundled-fonts` feature for an embedder that supplies every document font at run time, but vectorcraft-ui-egui (and vectorcraft-mcp) named the engine with its default features, so an embedder that hosts the panels got the fonts whatever it asked for. Each now has a `bundled-fonts` feature of its own, on by default, that turns the engine's on, so a downstream user keeps the fonts unless it asks otherwise. For a member to leave the engine's default features out, the workspace has to declare the engine without them, as it already declares vectorcraft-text; the crates that used the engine's default now ask for the fonts: the three apps and vectorcraft-testkit. Off, vectorcraft-text's copy of the fonts (3.4 MB) is left out; theme.rs's own copies of five of them, the panels' interface faces, stay either way. Nothing the workspace builds changes: for every workspace member and for the whole workspace, with and without dev-dependencies, for all targets, wasm32-unknown-unknown, aarch64-apple-darwin and x86_64-pc-windows-msvc, `cargo tree -e normal[,dev] -f '{p} [{f}]'` resolves the same features for every package as on main, apart from the new feature names (the engine's `default` no longer listed; ui-egui's and mcp's `bundled-fonts` and `default`). A test of the panels can't see their configuration without the fonts (their dev-dependencies turn them on), so `cargo xtask ci`'s `no-bundled-fonts` step now also reads that tree for vectorcraft-ui-egui and vectorcraft-mcp: with their default features it must show the fonts, and without them, for any target (a wasm-only dependency too), it must not. Documented in docs/development.md (Fonts › Leaving out the bundled fonts). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
53 lines
2.3 KiB
TOML
53 lines
2.3 KiB
TOML
[package]
|
|
name = "vectorcraft-text"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
license.workspace = true
|
|
description = "VectorCraft text: font database, shaping, layout, glyph outlines"
|
|
|
|
[lints]
|
|
workspace = true
|
|
|
|
[dependencies]
|
|
vectorcraft-geom = { workspace = true }
|
|
vectorcraft-doc = { workspace = true }
|
|
kurbo = { workspace = true }
|
|
skrifa = { workspace = true }
|
|
harfrust = { workspace = true }
|
|
log = { workspace = true }
|
|
# Font subsets for embedding (SVG @font-face); MIT OR Apache-2.0, already used by the PDF writer
|
|
# (which turns on `variable-fonts` too: named instances of variable fonts are instanced).
|
|
subsetter = { version = "0.2", default-features = false, features = ["variable-fonts"] }
|
|
unicode-bidi = "0.3.18"
|
|
unicode-general-category = "1"
|
|
unicode-script = "0.5"
|
|
# Word boundaries in scripts written without spaces between words (Thai, Lao, Khmer, Myanmar), where
|
|
# lines may break: ICU4X's line segmenter (Unicode-3.0, as icu_properties already in the build),
|
|
# with its dictionaries on the desktop and its far smaller LSTM models on the web.
|
|
icu_segmenter = "2.3"
|
|
# Grapheme clusters (a Thai consonant with its vowel and tone marks, an accented letter, an emoji
|
|
# sequence) for caret movement; MIT OR Apache-2.0, already in the build.
|
|
unicode-segmentation = "1.13"
|
|
# Builds a small variable font for tests (`test_fonts`; no font file is committed). MIT OR
|
|
# Apache-2.0, already in the build through subsetter.
|
|
write-fonts = { version = "0.48", optional = true }
|
|
|
|
[features]
|
|
default = ["bundled-fonts"]
|
|
# The OFL fonts of `assets/fonts` (Source Sans 3, Source Serif 4, Inter, JetBrains Mono) compiled
|
|
# in: 3.4 MB of the binary. Off, the font database starts without them (craft-fonts and system
|
|
# fonts are unaffected), for an embedder that adds its own with `FontDb::add_font` and would ship
|
|
# these twice. vectorcraft-engine turns it on by default (its `bundled-fonts` feature), and
|
|
# vectorcraft-ui-egui and vectorcraft-mcp by default through the engine.
|
|
bundled-fonts = []
|
|
# `vectorcraft_text::test_fonts` for other crates' tests (dev-dependencies only).
|
|
test-fonts = ["dep:write-fonts"]
|
|
|
|
[dev-dependencies]
|
|
write-fonts = "0.48"
|
|
|
|
# Fonts registered with Windows outside its font folders ("install as shortcut", installers);
|
|
# MIT OR Apache-2.0, a safe wrapper of the registry API from the windows-rs project.
|
|
[target.'cfg(windows)'.dependencies]
|
|
windows-registry = "0.6"
|