Proporciona caracteres pre-rasterizados de la fuente "noto sans mono" en diferentes tamaños y pesas de fuentes para múltiples rangos unicode. Esta caja es no_std y no necesita asignaciones ni operaciones de puntos flotantes. Útil en núcleos y cargadores de arranque cuando solo está disponible "Float Soft". Estrictamente hablando, esta caja es más que una fuente básica de mapa de bits, porque codifica cada píxel como un byte y no como un poco, lo que resulta en un resultado mucho mejor en la pantalla.
no_std , asignaciones cero, sin operaciones de puntos flotantes
Por favor, consulte la contribución.
Las fuentes de mapa de bits Legacy (8x8) generalmente se refieren a una fuente donde cada símbolo está codificado en 8 bits. Los que están en un byte ( 0b00110000 ) significa "píxel encendido" y el cero "significa" píxel apagado ". Sin embargo, mi fuente en realidad codifica la intensidad de cada píxel como un byte de 0 a 255. Por lo tanto, esto es menos eficiente en el tamaño que las fuentes de mapa de bits heredados, pero se ve mucho mejor. Todavía uso el término fuente de mapa de bits, porque ese término se usa y se conoce cuando se habla de fuentes/fuentes pre-rasterizadas en contextos de bajo nivel, como el proceso de arranque.
Si desea imprimir en un FrameBuffer y si desarrolla un cargador de arranque o un núcleo, generalmente no desea habilitar la FPU y abstenerse de la instrucción del punto flotante (es decir, solo use flotador suave). Mi caja es una buena opción para imprimir personajes bien en la pantalla en tales escenarios. A medida que la buena representación de fuentes de TTF se basa en gran medida en muchas operaciones de puntos flotantes, lo que no es óptimo dentro de un binario de bajo nivel. Las fuentes Legacy 8x8 Bitmap son feas cuando se imprimen en la pantalla. noto_sans_mono_bitmap puede verse como un buen reemplazo con muy agradable anti-alias.
Si tiene un entorno estándar o soporte para las operaciones de puntos flotantes, es posible que desee rasterizar la fuente usted mismo con el fontdue de caja y algunas fuentes TTF en lugar de usar mi caja.
use noto_sans_mono_bitmap :: { get_raster , get_raster_width , FontWeight , RasterHeight } ;
// Minimal example.
fn main ( ) {
let width = get_raster_width ( FontWeight :: Regular , RasterHeight :: Size16 ) ;
println ! (
"Each char of the mono-spaced font will be {}px in width if the font
weight={:?} and the bitmap height={}" ,
width ,
FontWeight :: Regular ,
RasterHeight :: Size16 . val ( )
) ;
let char_raster =
get_raster ( 'A' , FontWeight :: Regular , RasterHeight :: Size16 ) . expect ( "unsupported char" ) ;
println ! ( "{:?}" , char_raster ) ;
for ( row_i , row ) in char_raster . raster ( ) . iter ( ) . enumerate ( ) {
for ( col_i , pixel ) in row . iter ( ) . enumerate ( ) {
println ! ( "[{:02}][{:02}]: {:03}" , row_i , col_i , pixel ) ;
}
}
} La caja external/check-size le proporciona información sobre la sobrecarga de que esta biblioteca se compiló estáticamente en el binario.
Por defecto, solo se incluye un subconjunto razonable de posibles características. El tamaño de la caja cruda tiene un tamaño de MIB, pero después de la compilación y el descarte de piezas irrelevantes (es decir, tamaño 14, fuente regular, solo ASCII), la sobrecarga debe estar a menos de 120 kib de kib en tamaño binario, según mis mediciones. Sin embargo, incluso con la característica all , dependiendo de su código, el compilador puede descartar de manera confiable las rutas de código inalcanzables o no utilizadas. Sin embargo, se recomienda incluir más características de las necesarias.
Con todas las características incluidas dentro del binario, y sin ningún desechado por el compilador, puede esperar 5 o más MIB de consumo de memoria. Sin embargo, esto requeriría el caso bastante improbable de que use diferentes tamaños y pesas de fuentes simultáneamente y todos los rangos de unicode.
$ cargo run --example show_chars_in_window
Si desea usar caracteres especiales, como {ä, ö, ü, �} , en el ejemplo, puede usar
$ cargo run --example show_chars_in_window --features all
� corta a la izquierda y a la derecha. :La rasterización se realizó con el impresionante fontdue-frate. ¡Gracias a los autores originales!
Consulte el archivo de licencia en el repositorio.
Estable de óxido 1.56.1.