Expand description
llimphi-text — Texto sobre vello vía parley.
parley hace shaping completo (bidi, ligatures, kerning), line break y alineación; fontique resuelve fuentes del sistema con fallback CJK/emoji. Aquí lo envolvemos en una API mínima centrada en el caso común: un bloque de texto con color uniforme, ancho máximo opcional y alineación.
Re-exports§
Structs§
- Cache
Stats - Estadísticas del caché de shaping (evidencia/benchmark).
entrieses el total vivo entre las dos generaciones. - Measurement
- Medidas resultantes de un layout.
- RunBrush
- Brush por-run para texto multicolor. Newtype sobre
Colorporque parley exige que el brush genérico implementeDefault(queColorno garantiza); aquí proveemos uno explícito (negro opaco) que nunca se ve en la práctica: todo run lleva su color o eldefault_colordel bloque. - Text
Block - Especificación de un bloque de texto a rasterizar.
- Text
Span - Un span de RichText: rango de bytes
[start, end)+ overrides de estilo (style). Los rangos pueden superponerse — parley aplica losStylePropertyen orden de inserción, así el caller debería pushar de menor a mayor especificidad. - Text
Span Style - Overrides de estilo aplicables a un rango de bytes dentro de un
bloque de texto, para
Typesetter::layout_spans(RichText). Cada campo es opcional:Nonehereda del default del bloque. La granularidad es por bytes (convención de parley), igual que elrunsmulticolor. - Typesetter
- Estado compartido del motor de texto. Una instancia por proceso es lo
recomendado:
FontContextcachea la base de fuentes yLayoutContextreutiliza allocaciones entre layouts.
Enums§
- Alignment
- Alineación horizontal del bloque dentro de su ancho máximo.
Constants§
- MONOSPACE
- Nombre de familia de la fuente monoespaciada embebida. Pasalo como
font_family: Some(llimphi_text::MONOSPACE)en unTextBlock(o elfont_familydelayout) para render de ancho fijo garantizado. - MONO_
FONT_ BYTES - Bytes de la fuente monospace embebida (Liberation Mono TTF). Pública
para que otros crates (p. ej.
llimphi-widget-terminal, que necesita rasterizar glifos para su atlas GPU) usen exactamente la misma fuente que el render normal, sin volver a embeber el archivo. - UI_SANS
- Nombre de familia de la fuente de UI embebida (Inter).
Es el default proporcional cuando un bloque no especifica
font_family(la enganchamos como primera familia del genéricosans-serif). Exponemos el nombre por si un caller quiere pedirla explícitamente.
Functions§
- draw_
block - Rasteriza el bloque en
scenehaciendo shaping una sola vez. Equivale alayout_block+draw_layoutconblock.origin. - draw_
layout - Pinta un layout ya resuelto en
sceneconcolory un offsetorigin(esquina superior-izquierda del bloque). No alloca: los glifos van directo del iterador de parley al builder de vello. - draw_
layout_ brush_ xf - Igual que
draw_layout_xfpero con unBrusharbitrario en vez de un color sólido: permite rellenar los glifos con un gradiente o una imagen (p. ej. CSSbackground-clip: text). El brush se interpreta en el espacio local del layout (origen 0,0) ytransformlo lleva al lugar final — así un gradiente construido en coords (0,0)-(w,h) queda alineado con los glifos. Para texto normal usádraw_layout_xf(solid = máxima compat). - draw_
layout_ runs - Pinta un layout multicolor (
Typesetter::layout_runs): cadaglyph_runusa el color de su propio brush (RunBrush) en vez de un color uniforme.origines la esquina superior-izquierda del bloque. - draw_
layout_ runs_ xf - Igual que
draw_layout_runspero con una afín completa en vez de sólo un desplazamiento — el equivalente multicolor dedraw_layout_xf. Lo necesita el compositor para que el texto multicolor herede la transformación acumulada del subárbol (scroll/rotación del padre): sin esto, el texto conrunsse pintaba en coords de layout crudas, ignorando el transform, y se desalineaba del resto (p. ej. el cuerpo coloreado del shell no seguía el scroll del panel). El origen del layout (0,0) lo mapeatransform; las posiciones de glifo se aplican en ese espacio. - draw_
layout_ xf - Igual que
draw_layoutpero con una afín completa en vez de sólo un desplazamiento: permite pintar texto girado/escalado (p. ej. dentro de un marco rotado en una presentación espacial). El origen del layout (0,0) es el que mapeatransform; las posiciones de glifo se aplican en ese espacio. - layout_
block - Construye el layout (shaping + line break + alineación) listo para medir
y/o pintar. Usá esta API cuando necesitás el alto antes de elegir el
origen (p. ej. centrado vertical) y no querés repetir el shaping en el
draw: medís sobre el layout retornado y luego lo pasás adraw_layout. - measure
- Mide sin pintar. Atajo de
layout_block+measurementpara llamadores que sólo necesitan el bounding box. - measurement
- Devuelve las medidas de un layout ya resuelto. Equivalente conceptual a
(layout.width(), layout.height())pero envuelto enMeasurement.