Bietet vorhandene Zeichen aus der Schriftart "Noto Sans Mono" in verschiedenen Größen und Schriftgewichten für mehrere Unicode-Bereiche. Diese Kiste ist no_std und braucht keine Zuteilungen oder schwimmenden Punktvorgänge. Nützlich in Kerneln und Bootloadern, wenn nur "Soft-Float" verfügbar ist. Streng genommen ist diese Kiste mehr als eine grundlegende Bitmap -Schriftart, da sie jedes Pixel als Byte und nicht als ein bisschen codiert, was zu einem viel schöneren Ergebnis auf dem Bildschirm führt.
no_std , Nullzuweisungen, keine schwimmenden Punktvorgänge
Bitte überprüfen Sie den Beitrag.md.
Legacy (8x8) Bitmap -Schriftarten beziehen sich normalerweise auf eine Schriftart, bei der jedes Symbol in 8 Bit codiert ist. Die in einem Byte ( 0b00110000 ) bedeutet "Pixel on" und die Nullen "Pixel aus". Meine Schriftart kodiert jedoch tatsächlich die Intensität jedes Pixels als Byte von 0 bis 255. Daher ist dies weniger effizient als Legacy -Bitmap -Schriftarten, sieht aber viel besser aus. Ich verwende immer noch den Begriff Bitmap-Schriftart, da dieser Begriff verwendet und bekannt ist, wenn ich über vorpassiver Schriftarten/Schriftarten in Kontexten auf niedriger Ebene wie dem Startprozess spreche.
Wenn Sie in einen FrameBuffer drucken möchten und einen Bootloader oder einen Kernel entwickeln, möchten Sie normalerweise nicht die FPU aktivieren und die Anweisung des schwimmenden Punktes unterlassen (dh nur verwenden Soft Float). Meine Kiste ist eine gute Option, um Zeichen in solchen Szenarien gut auf den Bildschirm zu drucken. Als schöne Live -Schriftart von TTF -Schriftarten stützt sich stark auf viele schwimmende Punktvorgänge, was innerhalb eines Binärnetzes nicht optimal ist. Legacy 8x8 Bitmap -Schriftarten sind hässlich, wenn sie auf den Bildschirm gedruckt werden. noto_sans_mono_bitmap kann als schöner Ersatz mit sehr schönem Anti-Aliasing angesehen werden.
Wenn Sie über eine Standardumgebung oder Unterstützung für Gleitkommaoperationen verfügen, möchten Sie die Schriftart mit der Kisten fontdue und einigen TTF -Schriftarten möglicherweise selbst rasterisieren, anstatt meine Kiste zu verwenden.
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 ) ;
}
}
} Die external/check-size Kiste bietet Ihnen Einblicke in den Overhead, dass diese Bibliothek statisch in die Binärdatei zusammengestellt wird.
Standardmäßig ist nur eine angemessene Teilmenge möglicher Funktionen enthalten. Die rohe Kistengröße hat eine gewisse Größe, aber nach Zusammenstellung und Verwerfen irrelevanter Teile (dh Größe 14, reguläre Schriftart, nur ASCII) sollte der Overhead gemäß meinen Messungen eine Binärgröße von weniger als 120 KIB in binärer Größe liegen. Trotz all Funktionen kann der Compiler je nach Code nicht zuverlässig oder nicht verwendete Codepfade verwerfen. Dennoch wird empfohlen, nicht mehr Funktionen als nötig einzubeziehen.
Bei allen in der Binary enthaltenen Funktionen und ohne den Compiler können Sie 5 oder mehr MIB -Speicherverbrauch erwarten. Dies würde jedoch den eher unwahrscheinlichen Fall erfordern, dass Sie gleichzeitig unterschiedliche Größen und Schriftgewichte und alle Unicode -Bereiche verwenden.
$ cargo run --example show_chars_in_window
Wenn Sie spezielle Zeichen verwenden möchten, wie {ä, ö, ü, �} , können Sie im Beispiel verwenden
$ cargo run --example show_chars_in_window --features all
� links und rechts abgeschnitten. :Die Rasterisierung wurde mit dem fantastischen Fontdue-Crates durchgeführt. Vielen Dank an die ursprünglichen Autoren!
Siehe Lizenzdatei in Repository.
Rost stabil 1,56.1.