Fontdue هو بسيط ، no_std (لا يستخدم المكتبة القياسية لقابلية النقل) ، الصدأ النقي ، truetype ( .ttf/.ttc ) و Opentype ( .otf ) font rasterizer و tool. تسعى جاهدة إلى جعل التفاعل مع الخطوط في أسرع وقت ممكن ، ولديه حاليًا أدنى كاتبة نهاية لإنهاء لمدرس الخط.
تم تصميم fontdue ليكون بديلًا لـ rusttype (Link) و ab_glyph (Link) و Parts of glyph_brush (Link) و glyph_brush_layout (Link). هذه فئة من مكتبات الخطوط التي لا تعالج التشكيل.
من غير المحتمل أن يكون لدي وقت للاندماج مع مكتبة تشكيل. إذا كنت بحاجة إلى محرك خط أكثر اكتمالا ، فيجب عليك التحقق من مشروع النص الكوني الرائع ، وهو مكتبة نصية صدأ نقية للغاية.
يجب أن يكون عدم تخصيص هذه المكتبة خالية من التخصيص وأن يكون لديك تحميل أولي "تكلفة الصفر". هذه المكتبة تقدم تخصيصات وتعتمد على قفص alloc . يتم تحليل الخطوط بالكامل على الإنشاء ويتم تخزين المعلومات ذات الصلة في شكل أكثر ملاءمة للوصول. على عكس مكتبات الخطوط الأخرى ، ليس لها هياكل الخطوط تبعيات مدى الحياة لأنها تخصص مساحة خاصة بها.
عرض حي. هذا العرض التوضيحي عبارة عن بناء تجمع على شبكة الإنترنت من fontdue Conflisting to the Browser Canvas. إنه يوفر جنبًا إلى جنب من الشخصيات التي يتم تنفيذها بين fontdue و API النص القماشي للمستعرض المقدم مع نفس المعلمات.
يمكن العثور على بعض الأمثلة الأخرى تحت./dev/examples.
يجب ألا ترى واجهة برمجة تطبيقات النقطية تغييرات كبيرة في المستقبل القريب.
// Read the font data.
let font = include_bytes ! ( "../resources/Roboto-Regular.ttf" ) as & [ u8 ] ;
// Parse it into the font type.
let font = fontdue :: Font :: from_bytes ( font , fontdue :: FontSettings :: default ( ) ) . unwrap ( ) ;
// Rasterize and get the layout metrics for the letter 'g' at 17px.
let ( metrics , bitmap ) = font . rasterize ( 'g' , 17.0 ) ; واجهة برمجة تطبيقات التصميم غير ناضجة وقد ترى تغييرات كسر. يوفر Layout fontdue ساذجًا وهو مصمم فقط ليكون على قدم المساواة مع المكتبات الموجودة مثل glyph_brush .
// Read the font data.
let font = include_bytes ! ( "../resources/fonts/Roboto-Regular.ttf" ) as & [ u8 ] ;
// Parse it into the font type.
let roboto_regular = Font :: from_bytes ( font , fontdue :: FontSettings :: default ( ) ) . unwrap ( ) ;
// The list of fonts that will be used during layout.
let fonts = & [ roboto_regular ] ;
// Create a layout context. Laying out text needs some heap allocations; reusing this context
// reduces the need to reallocate space. We inform layout of which way the Y axis points here.
let mut layout = Layout :: new ( CoordinateSystem :: PositiveYUp ) ;
// By default, layout is initialized with the default layout settings. This call is redundant, but
// demonstrates setting the value with your custom settings.
layout . reset ( & LayoutSettings {
.. LayoutSettings :: default ( )
} ) ;
// The text that will be laid out, its size, and the index of the font in the font list to use for
// that section of text.
layout . append ( fonts , & TextStyle :: new ( "Hello " , 35.0 , 0 ) ) ;
layout . append ( fonts , & TextStyle :: new ( "world!" , 40.0 , 0 ) ) ;
// Prints the layout for "Hello world!"
println ! ( "{:?}" , layout . glyphs ( ) ) ;
// If you wanted to attached metadata based on the TextStyle to the glyphs returned in the
// glyphs() function, you can use the TextStyle::with_metadata function. In this example, the
// Layout type is now parameterized with u8 (Layout<u8>). All styles need to share the same
// metadata type.
let mut layout = Layout :: new ( CoordinateSystem :: PositiveYUp ) ;
layout . append ( fonts , & TextStyle :: with_user_data ( "Hello " , 35.0 , 0 , 10u8 ) ) ;
layout . append ( fonts , & TextStyle :: with_user_data ( "world!" , 40.0 , 0 , 20u8 ) ) ;
println ! ( "{:?}" , layout . glyphs ( ) ) ; تقيس هذه المعايير الوقت الذي يستغرقه توليد مقاييس الرحم وقطعة النقطة النقطية لنص "sphinx من الكوارتز الأسود ، تحكم على تعهدتي." على مجموعة من الأحجام. انخفض الخط في الرسم البياني كلما كان ذلك أفضل.


يقيس هذا المعيار الوقت الذي يستغرقه تخطيط الأحرف اللاتينية لنص عينة مع التفاف على حدود الكلمات.

مرخصة تحت أي واحد
في خيارك.
ما لم تقل بشكل صريح على خلاف ذلك ، يجب أن تكون أي مساهمة مقدمة عن عمد لإدراجها في العمل بواسطتك ، كما هو محدد في ترخيص Apache-2.0 ، على النحو الوارد أعلاه ، دون أي شروط أو شروط إضافية.
يرجى تحمل معي على ميزات جديدة أو المراوغات التي تجدها. سوف تأخذ الأخطاء الأولوية ، لكن ليس لدي الكثير من الوقت كما أرغب في العمل على Fontdue ، لذا يرجى التحلي بالصبر ، هذا مشروع منفرد.
يعتمد FontDue على ttf-parser (Link) لحلية الخطوط ، والتي تدعم مجموعة واسعة من ميزات truetype و opentype.
بدأ Fontdue كطوكية أكثر غموضًا على استعداد من font-rs (LINK) بسبب السرعة التي تبدو بها نقطية ، ومدى البساطة في صناديق rusttype (LINK) التي جعلت تحليل الخط. منذ ذلك الحين ، قرأت الكثير من مواصفات الخطوط وتقنيات النقطية الحديثة ، وإعادة كتابة fontdue من الألف إلى الياء في هذه العملية إلى وحشها الفريد.