Memberikan karakter pra-rasterisasi dari font "Noto sans mono" dalam berbagai ukuran dan bobot font untuk beberapa rentang unicode. Peti ini adalah no_std dan tidak membutuhkan alokasi atau operasi titik mengambang. Berguna dalam kernel dan bootloader ketika hanya "soft-float" yang tersedia. Sebenarnya, peti ini lebih dari sekadar font bitmap dasar, karena mengkodekan setiap piksel sebagai byte dan tidak sedikit, yang menghasilkan hasil yang jauh lebih baik pada layar.
no_std , nol alokasi, tidak ada operasi titik mengambang
Silakan periksa Contributing.md.
Font Bitmap Legacy (8x8) biasanya merujuk ke font di mana setiap simbol dikodekan dalam 8 bit. Yang dalam byte ( 0b00110000 ) berarti "piksel pada" dan nol berarti "piksel off". Namun, font saya sebenarnya mengkodekan intensitas masing -masing piksel sebagai byte dari 0 hingga 255. Oleh karena itu, ini lebih sedikit ukuran efisien daripada font bitmap lama, tetapi terlihat jauh lebih baik. Saya masih menggunakan istilah font bitmap, karena istilah itu digunakan dan diketahui ketika berbicara tentang render font/font pra-raster dalam konteks tingkat rendah, seperti proses boot.
Jika Anda ingin mencetak ke framebuffer dan jika Anda mengembangkan bootloader atau kernel, Anda biasanya tidak ingin mengaktifkan FPU dan menahan diri dari instruksi floating point (yaitu hanya menggunakan soft float). Peti saya adalah pilihan yang baik untuk mencetak karakter dengan baik ke layar dalam skenario seperti itu. Sebagai rendering font hidup yang bagus dari font TTF sangat bergantung pada banyak operasi floating point, yang tidak optimal di dalam biner tingkat rendah. Font Bitmap Legacy 8x8 sangat jelek saat dicetak ke layar. noto_sans_mono_bitmap dapat dilihat sebagai pengganti yang bagus dengan anti-aliasing yang sangat bagus.
Jika Anda memiliki lingkungan standar atau dukungan untuk operasi floating point, Anda mungkin ingin merasterisasi font sendiri dengan peti fontdue dan beberapa font TTF daripada menggunakan peti saya.
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 ) ;
}
}
} Peti external/check-size memberi Anda wawasan tentang overhead memiliki perpustakaan ini secara statis dikompilasi ke dalam biner.
Secara default, hanya sebagian besar fitur yang mungkin disertakan. Ukuran peti mentah berukuran beberapa MIB tetapi setelah kompilasi dan membuang bagian yang tidak relevan (yaitu, ukuran 14, font biasa, hanya ASCII), overhead harus berada pada ukuran biner kurang dari 120 kib, sesuai dengan pengukuran saya. Namun, bahkan dengan fitur all , tergantung pada kode Anda, kompiler dapat dengan andal membuang jalur kode yang tidak terjangkau atau tidak digunakan. Namun demikian, disarankan untuk memasukkan tidak ada lagi fitur dari yang diperlukan.
Dengan semua fitur yang termasuk di dalam biner, dan tanpa buang oleh kompiler, Anda dapat mengharapkan 5 atau lebih MIB konsumsi memori. Namun, ini akan membutuhkan kasus yang agak tidak mungkin Anda menggunakan berbagai ukuran dan bobot font secara bersamaan dan semua rentang unicode.
$ cargo run --example show_chars_in_window
Jika Anda ingin menggunakan karakter khusus, seperti {ä, ö, ü, �} , dalam contoh, Anda dapat menggunakan
$ cargo run --example show_chars_in_window --features all
� di sebelah kiri dan kanan. :Rasterisasi dilakukan dengan fontdue-crate yang mengagumkan. Terima kasih kepada penulis asli!
Lihat File Lisensi di Repositori.
Rust Stable 1.56.1.