feat(pdf): searchable text layer with per-style subset font embedding

Real BT/Tj text objects ride alongside the vector outlines (Tr 3,
zero visual change): runs preserved at layout time, TTF styles embedded
as allsorts subsets with ToUnicode, width-matched Tm, clip-culled.
WireModel literals moved to ..Default::default() tails.
This commit is contained in:
Karim Jerbi committed 2026-10-01 23:30:35 +01:00
1 parent 443b935a3f
commit 02c470aac7
44 files changed
+1534 -127

No files matched your search

+6 -2
View File
@@ -366,7 +366,9 @@ impl CadCommand for AlignedDimensionCommand {
plinegen: true,
fill_tris: vec![],
fill_tris_low: Vec::new(),
})
..Default::default()
})
}
fn dyn_spec(&self) -> Option<crate::command::DynSpec> {
@@ -482,7 +484,9 @@ fn preview_aligned(p1: DVec3, p2: DVec3, dim_pt: DVec3) -> WireModel {
plinegen: true,
fill_tris: vec![],
fill_tris_low: Vec::new(),
}
..Default::default()
}
}
+3 -1
View File
@@ -1275,7 +1275,9 @@ fn preview_wire(points: Vec<DVec3>) -> WireModel {
plinegen: true,
fill_tris: vec![],
fill_tris_low: Vec::new(),
}
..Default::default()
}
}
inventory::submit!(crate::command::CommandRegistration { names: &["DIMANGULAR"] });
+3 -1
View File
@@ -134,7 +134,9 @@ impl DataLinkPlaceCommand {
plinegen: true,
fill_tris: Vec::new(),
fill_tris_low: Vec::new(),
}
..Default::default()
}
}
}
+3 -1
View File
@@ -364,7 +364,9 @@ fn preview_line(far_chord: Vec3, chord: Vec3, text: Vec3) -> WireModel {
plinegen: true,
fill_tris: vec![],
fill_tris_low: Vec::new(),
}
..Default::default()
}
}
inventory::submit!(crate::command::CommandRegistration { names: &["DIMDIAMETER"] });
+3 -1
View File
@@ -755,7 +755,9 @@ fn preview_for_dimension(dimension: &Dimension) -> WireModel {
plinegen: true,
fill_tris: Vec::new(),
fill_tris_low: Vec::new(),
}
..Default::default()
}
}
fn linear_preview(
+3 -1
View File
@@ -506,7 +506,9 @@ fn preview_wire(points: Vec<Vec3>) -> WireModel {
plinegen: true,
fill_tris: Vec::new(),
fill_tris_low: Vec::new(),
}
..Default::default()
}
}
inventory::submit!(crate::command::CommandRegistration {
+3 -1
View File
@@ -470,7 +470,9 @@ fn preview_wire(pts: &[Vec3], arrow_size: f32) -> WireModel {
plinegen: true,
fill_tris: vec![],
fill_tris_low: Vec::new(),
}
..Default::default()
}
}
pub fn arrowhead_wings(tip: Vec3, next: Vec3, size: f32) -> [Vec3; 2] {
+3 -1
View File
@@ -590,7 +590,9 @@ fn preview_wire(points: Vec<DVec3>) -> WireModel {
plinegen: true,
fill_tris: vec![],
fill_tris_low: Vec::new(),
}
..Default::default()
}
}
/// Project the two extension origins onto the dimension line, which passes
+3 -1
View File
@@ -799,7 +799,9 @@ fn preview_wire(pts: &[Vec3], arrow_size: f32) -> WireModel {
plinegen: true,
fill_tris: vec![],
fill_tris_low: Vec::new(),
}
..Default::default()
}
}
fn arrowhead_wings(tip: Vec3, next: Vec3, size: f32) -> [Vec3; 2] {
+3 -1
View File
@@ -523,7 +523,9 @@ fn preview_wire(pts: &[Vec3]) -> WireModel {
plinegen: true,
fill_tris: vec![],
fill_tris_low: Vec::new(),
}
..Default::default()
}
}
fn point_segment_distance_xy(point: Vector3, start: Vector3, end: Vector3) -> f64 {
+3 -1
View File
@@ -315,7 +315,9 @@ fn preview_wire(points: Vec<Vec3>) -> WireModel {
plinegen: true,
fill_tris: vec![],
fill_tris_low: Vec::new(),
}
..Default::default()
}
}
+3 -1
View File
@@ -376,7 +376,9 @@ fn preview_wire(points: Vec<Vec3>) -> WireModel {
plinegen: true,
fill_tris: vec![],
fill_tris_low: Vec::new(),
}
..Default::default()
}
}
inventory::submit!(crate::command::CommandRegistration { names: &["DIMRADIUS"] });
+3 -1
View File
@@ -341,7 +341,9 @@ impl TableCommand {
plinegen: true,
fill_tris: Vec::new(),
fill_tris_low: Vec::new(),
}
..Default::default()
}
}
}
+3 -1
View File
@@ -114,7 +114,9 @@ impl CadCommand for ToleranceCommand {
plinegen: true,
fill_tris: vec![],
fill_tris_low: Vec::new(),
})
..Default::default()
})
}
}