يوفر أحرفًا مسبقًا من خط "Noto Sans Mono" بأحجام مختلفة وأوزان الخطية لنطاقات Unicode متعددة. هذا الصندوق هو no_std ولا يحتاج إلى تخصيصات أو عمليات تعوية. مفيدة في kernels ومواد التحمل عندما يتوفر فقط "حلو ناعم". بالمعنى الدقيق للكلمة ، فإن هذا الصندوق هو أكثر من خط نقطية أساسي ، لأنه يشفر كل بكسل كبايت وليس قليلاً ، مما يؤدي إلى نتيجة أجمل كثيرًا على الشاشة.
no_std ، تخصيصات الصفر ، لا توجد عمليات عائمة
يرجى التحقق من المساهمة.
عادةً ما تشير خطوط Bitmap Legacy (8x8) إلى خط حيث يتم ترميز كل رمز في 8 بت. تعني تلك الموجودة في البايت ( 0b00110000 ) "البكسل على" و "الأصفار" تعني "Pixel Off". ومع ذلك ، فإن خط بلدي يشفر فعليًا شدة كل بكسل كبايت من 0 إلى 255. وبالتالي ، فهذا أقل كفاءة في الحجم من خطوط الصورة النقطية القديمة ، ولكنها تبدو أفضل بكثير. ما زلت أستخدم مصطلح خط النقطات ، لأن هذا المصطلح يستخدم ومعروفًا عند الحديث عن خطوط/خطوط مسبقة ما قبل الدرجات في سياقات منخفضة المستوى ، مثل عملية التمهيد.
إذا كنت ترغب في الطباعة على Framebuffer ، وإذا قمت بتطوير محملة التمهيد أو نواة ، فعادةً ما لا ترغب في تمكين FPU والامتناع عن تعليمات النقطة العائمة (أي فقط استخدم العائمة الناعمة). يعد قفصتي خيارًا جيدًا لطباعة الأحرف بشكل جيد على الشاشة في مثل هذه السيناريوهات. يعتمد تقديم خطوط حية لطيفة لخطوط TTF اعتمادًا كبيرًا على العديد من عمليات النقطة العائمة ، والتي ليست مثالية داخل ثنائي منخفض المستوى. الخطوط Legacy 8x8 Bitmap هي قبيحة عند طباعتها على الشاشة. يمكن اعتبار noto_sans_mono_bitmap بديلاً لطيفًا مع مكافحة التخزين اللطيفة للغاية.
إذا كان لديك بيئة قياسية أو دعم لعمليات النقطة العائمة ، فقد ترغب في نقل الخط بنفسك باستخدام fontdue Crate وبعض خطوط TTF بدلاً من استخدام قفصتي.
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 ) ;
}
}
} يوفر لك صندوق external/check-size رؤى على النفقات العامة لتجميع هذه المكتبة بشكل ثابت في الثنائي.
بشكل افتراضي ، يتم تضمين مجموعة فرعية معقولة فقط من الميزات المحتملة. حجم الصناديق الخام هو عدد قليل من MIB في الحجم ولكن بعد التجميع وتجاهل الأجزاء غير ذات الصلة (أي الحجم 14 ، الخط العادي ، ASCII فقط) ، يجب أن يكون النفقات العامة أقل من 120 KIB في الحجم الثنائي ، وفقا لقياسات بلدي. ومع ذلك ، حتى مع all الميزة ، بناءً على الكود الخاص بك ، يمكن للمترجم أن يتجاهل بشكل موثوق مسارات التعليمات البرمجية غير القابلة للوصول أو غير المستخدمة. ومع ذلك ، يوصى بتضمين ميزات أكثر من اللازم.
مع كل الميزات المدرجة داخل الثنائي ، وبدون أي تجاهل من قبل المترجم ، يمكنك توقع 5 أو أكثر من MIB من استهلاك الذاكرة. ومع ذلك ، فإن هذا يتطلب الحالة غير المرجح إلى حد ما باستخدام أحجام مختلفة وأوزان الخط في وقت واحد وجميع نطاقات Unicode.
$ cargo run --example show_chars_in_window
إذا كنت ترغب في استخدام chars خاصة ، مثل {ä, ö, ü, �} ، في المثال ، يمكنك استخدامه
$ cargo run --example show_chars_in_window --features all
� قطع الحرف البديل � على اليسار واليمين. :تم تنقيح النقطية مع fontdue رهيبة. بفضل المؤلف الأصلي!
انظر ملف الترخيص في المستودع.
الصدأ مستقر 1.56.1.