//! **¿La negrita existe de verdad en esta máquina?** //! //! CÑ3 (2026-10-05). El operador ve el texto de claude plano y en otros IDEs lo //! ve con negritas. Ya está medido que el camino entero existe: el bold de la //! celda del PTY viaja a `StyledSpan { weight: 700 }`, el text-editor lo pasa a //! `TextSpanStyle`, y de ahí sale a `parley::FontWeight`. Lo que falta saber es si //! **la fuente resuelve otra cara** — porque si la mono del sistema no tiene //! variante bold, pedir 700 no cambia un píxel y todo lo anterior es correcto y //! no se ve. //! //! No alcanza con medir el ancho: en una monoespaciada la negrita mide **lo //! mismo** por definición. Lo que distingue es la **cara resuelta** (el id de la //! fuente que parley eligió) y, si eso no basta, el id de los glifos. //! //! ```text //! cargo run -p llimphi-text --example hay_negrita //! ``` fn caras(ts: &mut llimphi_text::Typesetter, texto: &str, familia: Option<&str>, peso: f32) -> Vec { let l = ts.layout( texto, 13.0, None, llimphi_text::Alignment::Start, 18.0, false, familia, peso, false, false, 0.0, 0.0, ); let mut out = Vec::new(); for linea in l.lines() { for item in linea.items() { if let parley::PositionedLayoutItem::GlyphRun(g) = item { let run = g.run(); let f = run.font(); out.push(format!("{:?}#{}", f.data.id(), f.index)); } } } out } fn main() { let mut ts = llimphi_text::Typesetter::new(); let texto = "Negrita de prueba"; // Las familias que importan: la que pide la terminal (mono) y la de la UI. for familia in [None, Some("monospace"), Some("DejaVu Sans Mono"), Some("Liberation Mono")] { let normal = caras(&mut ts, texto, familia, 400.0); let negra = caras(&mut ts, texto, familia, 700.0); let nombre = familia.unwrap_or("(por defecto)"); let distinta = normal != negra; println!( "{nombre:22} 400={normal:?}\n{:22} 700={negra:?} → {}", "", if distinta { "✓ resuelve OTRA cara: la negrita existe" } else { "✗ MISMA cara: pedir 700 no cambia nada" } ); } }