diff --git a/.gitmodules b/.gitmodules index 86da64f528..3cf8efd5b5 100644 --- a/.gitmodules +++ b/.gitmodules @@ -209,3 +209,7 @@ path = crates/cadcraft-dwg url = bun-forge:aphrody-dev/bun-crate-cadcraft-dwg.git branch = os +[submodule "crates/cadcraft-fonts"] + path = crates/cadcraft-fonts + url = bun-forge:aphrody-dev/bun-crate-cadcraft-fonts.git + branch = os diff --git a/Cargo.lock b/Cargo.lock index c205b990c0..70e1a8509d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -620,6 +620,16 @@ dependencies = [ "thiserror 2.0.21", ] +[[package]] +name = "cadcraft-fonts" +version = "1.4.4" +dependencies = [ + "cadcraft-geom", + "harfrust", + "skrifa 0.48.0", + "unicode-bidi", +] + [[package]] name = "cadcraft-geom" version = "1.4.4" @@ -4763,6 +4773,12 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" +[[package]] +name = "unicode-bidi" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" + [[package]] name = "unicode-general-category" version = "1.1.0" diff --git a/Cargo.toml b/Cargo.toml index 73a9959fea..5fc7fed801 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -17,6 +17,7 @@ members = [ "crates/cadcraft-constraints", "crates/cadcraft-dxf", "crates/cadcraft-dwg", + "crates/cadcraft-fonts", "crates/gridcraft-pdf", "crates/aphrody-a2a", "crates/aphrody-agent-proto", @@ -61,6 +62,7 @@ cadcraft-doc = { path = "crates/cadcraft-doc", version = "=1.4.4" } cadcraft-constraints = { path = "crates/cadcraft-constraints", version = "=1.4.4" } cadcraft-dxf = { path = "crates/cadcraft-dxf", version = "=1.4.4" } cadcraft-dwg = { path = "crates/cadcraft-dwg", version = "=1.4.4" } +cadcraft-fonts = { path = "crates/cadcraft-fonts", version = "=1.4.4" } gridcraft-pdf = { path = "crates/gridcraft-pdf", version = "=1.4.4" } aphrody-a2a = { path = "crates/aphrody-a2a", version = "=1.4.4" } aphrody-agent-proto = { path = "crates/aphrody-agent-proto", version = "=1.4.4" } @@ -89,6 +91,7 @@ egui_kittest = { version = "=0.36.2", default-features = false } encoding_rs = "=0.8.35" getrandom = { version = "=0.4.3", default-features = false } futures = { version = "=0.3.34", default-features = false, features = ["std", "async-await"] } +harfrust = "=0.12.0" image = { version = "=0.25.10", default-features = false } libc = { version = "=0.2.190", default-features = false } log = { version = "=0.4.34", default-features = false } @@ -118,6 +121,7 @@ tokio = { version = "=1.53.2", default-features = false } tracing = { version = "=0.1.44", default-features = false } url = { version = "=2.5.8", default-features = false } uuid = { version = "=1.28.0", default-features = false } +unicode-bidi = "=0.3.18" windows = { version = "=0.62.2", default-features = false } winsafe = { version = "=0.0.29", default-features = false } winprint = { git = "https://github.com/storytold/winprint.rs", rev = "5f80b9baf6b58937c401656634e42d33f00ddf49", default-features = false } diff --git a/MEMORY.md b/MEMORY.md index 05bb636278..25581e2c6a 100644 --- a/MEMORY.md +++ b/MEMORY.md @@ -52,6 +52,16 @@ metadata resolves 479 CADCraft packages; root metadata resolves 572 packages, the DWG crate check and root format pass. Ten CADCraft workspace members remain; tests and full product qualification are unclaimed. +The font-layout source history is split from CADCraft +`88e15b5b11e3b844b6dfff97a0210daa3ae73051` at `crates/fonts` +(`ddb2e5b0db66a8fc6e5be24331a905b7f758d233`). Its private forge branch is +`ae107d5ba70f0b2ac10dadbdb7d5ba1a18acb4c1`; the consumer branch is +`533857d44f193c709fe66a650605e53d5d0f8ed0`. It uses root `skrifa 0.48.0` +with `std` and `autohint_shaping`; the optional font asset input remains +external. Locked offline CADCraft metadata resolves 479 packages; root +metadata resolves 574, crate check and root format pass. Nine CADCraft members +remain; tests and full product qualification are unclaimed. + The refreshed inventory at root revision `dceda086f7a0b5cd0ffeb0f8696f723a9ae34d8c` reports 46 pinned sources, 856 Cargo packages, 555 declared workspace crates, 30 flat owners and 525 remaining declared crates. The new CADCraft owners have diff --git a/PLAN.md b/PLAN.md index 4766b1ae18..1c99023c39 100644 --- a/PLAN.md +++ b/PLAN.md @@ -60,6 +60,14 @@ - [x] Pass locked offline metadata, `cadcraft-dwg` check, and root Rust format. - [ ] Migrate the remaining 10 CADCraft workspace members. +### CADCraft font owner — 2026-10-14 + +- [x] Split `cadcraft-fonts`, preserve source history and licenses, publish the + private forge owner, and redirect CADCraft to the flat root crate. +- [x] Align its `skrifa` features with source defaults and root version 0.48; + locked offline metadata, crate check, and root Rust format pass. +- [ ] Migrate the remaining 9 CADCraft workspace members. + ### Cargo source-owner inventory — 2026-10-14 - [x] Refresh the ignored inventory at root revision diff --git a/crates/cadcraft-fonts b/crates/cadcraft-fonts new file mode 160000 index 0000000000..ae107d5ba7 --- /dev/null +++ b/crates/cadcraft-fonts @@ -0,0 +1 @@ +Subproject commit ae107d5ba70f0b2ac10dadbdb7d5ba1a18acb4c1 diff --git a/docs/CRATE-MIGRATION.md b/docs/CRATE-MIGRATION.md index 14c86f1073..eea0deafe3 100644 --- a/docs/CRATE-MIGRATION.md +++ b/docs/CRATE-MIGRATION.md @@ -90,6 +90,24 @@ Locked offline metadata resolves 479 CADCraft packages. Root locked offline metadata resolves 572 packages, `cargo check --locked --offline -p cadcraft-dwg` passes, and the complete root Rust format check passes. Tests were not run. +## CADCraft font layout — 2026-10-14 + +`cadcraft-fonts` is split from CADCraft source revision +`88e15b5b11e3b844b6dfff97a0210daa3ae73051`, prefix `crates/fonts`. The split +commit is `ddb2e5b0db66a8fc6e5be24331a905b7f758d233`; its tree matches the +source prefix. The private forge `os` branch is at +`ae107d5ba70f0b2ac10dadbdb7d5ba1a18acb4c1`, retaining the source license +import at `680006dcda26f88fb84cd6ec15250c5176801ddf` and workspace integration +at `c00471e3872302529d57f698de386044ce10da5f`. CADCraft consumer branch `os` is at +`533857d44f193c709fe66a650605e53d5d0f8ed0`; it redirects the dependency and +retires the original 12 tracked files. The crate uses root `skrifa 0.48.0` +with the source default `std` and `autohint_shaping` features, plus exact +`harfrust 0.12.0` and `unicode-bidi 0.3.18` pins. Its optional font input stays +external; with no `CRAFT_FONTS_DIR`, the build emits an empty font catalog. +Locked offline metadata resolves 479 CADCraft packages. Root metadata resolves +574 packages, `cargo check --locked --offline -p cadcraft-fonts` passes, and +the root Rust format check passes. Tests were not run. + The subsequent complete root build with all features succeeds for all 28 members and supplies 28 hashed final artifacts. The revalidated vendor receipt now reports `compiled: true` and `buildProof: valid`; this remains scoped to diff --git a/docs/crate-submodules.md b/docs/crate-submodules.md index 3a6507856b..46cf8901f1 100644 --- a/docs/crate-submodules.md +++ b/docs/crate-submodules.md @@ -10,13 +10,13 @@ toolchain, `build/rust`, `target`, `node_modules`, and `install`. Use `just setu `just check`, and `just test`. Setup initializes direct submodules without recursively fetching unrelated upstream asset repositories. -The root currently contains 30 flat crate owners, including the six CADCraft +The root currently contains 31 flat crate owners, including the seven CADCraft crates `cadcraft-color`, `cadcraft-geom`, `cadcraft-doc`, -`cadcraft-constraints`, `cadcraft-dxf` and `cadcraft-dwg`. Every crate tracks -its forge `os` branch. The CADCraft consumer workspace resolves its migrated -edges to these root owners in version 1.4.4; 10 other members remain to -migrate. Source histories, licenses and notices remain with each component. -Licensed font assets remain in `fonts/`. +`cadcraft-constraints`, `cadcraft-dxf`, `cadcraft-dwg` and `cadcraft-fonts`. +Every crate tracks its forge `os` branch. The CADCraft consumer workspace +resolves its migrated edges to these root owners in version 1.4.4; 9 other +members remain to migrate. Source histories, licenses and notices remain with +each component. Licensed font assets remain in `fonts/`. Forge access uses `bun-forge` through the private VPS transport. Aphrody Infra owns provisioned repositories and machine identities; private credentials diff --git a/libraries/cadcraft b/libraries/cadcraft index 88e15b5b11..533857d44f 160000 --- a/libraries/cadcraft +++ b/libraries/cadcraft @@ -1 +1 @@ -Subproject commit 88e15b5b11e3b844b6dfff97a0210daa3ae73051 +Subproject commit 533857d44f193c709fe66a650605e53d5d0f8ed0