[package]
name = "round2-textkit"
version = "0.1.0"
edition.workspace = true
publish.workspace = true

# Packet 2A-i (ROUND2_TEXT_RECIPE.md, governed by
# spec/CONTRACT_EDITOR_T4_SPIKE.md pins 8, 9, 10, 13, 14, and
# spec/ANALYSIS_TEXT_RUN_PRIMITIVES.md §3E / §5): the candidate-neutral text
# fixture set. This crate mirrors W3's proposed `ResolvedText` shape
# (non-canonically — see `src/lib.rs`), resolves the two declared faces,
# shapes/itemizes/segments the five committed fixture strings with
# `rustybuzz` + `unicode-bidi` + `unicode-segmentation`, asserts every W3 §5
# invariant on the result, and writes `fixtures.json` + `FIXTURES_SUMMARY.md`
# for candidates to consume in a later packet. It renders nothing itself —
# the SVG reference emitter (recipe §9) and the bounded visual differential
# (recipe §10/§11, `round2-diff`) are separate, parallel packets.
#
# Dependency versions are pinned exactly as the recipe measured them (§4):
# a version bump would change what the generator's precommitted expectations
# describe, which is the same discipline the Round 1 oracle applies to its
# own frozen inputs.

[dependencies]
rustybuzz = "=0.20.1"
unicode-bidi = "=0.3.18"
unicode-segmentation = "=1.13.3"
ttf-parser = "=0.25.1"
sha2 = "0.10"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
epiphany-layout-ir = { path = "../../../crates/epiphany-layout-ir" }
epiphany-determinism = { path = "../../../crates/epiphany-determinism" }
epiphany-core = { path = "../../../crates/epiphany-core" }

[[bin]]
name = "generate"
path = "src/bin/generate.rs"

[[bin]]
name = "generate_hittest"
path = "src/bin/generate_hittest.rs"
