Fontdue เป็นแบบง่าย, no_std (ไม่ได้ใช้ไลบรารีมาตรฐานสำหรับการพกพา), Pure Rust, Truetype ( .ttf/.ttc ) & Opentype ( .otf ) Font Rasterizer และเครื่องมือเลย์เอาต์ มันมุ่งมั่นที่จะทำให้การโต้ตอบกับฟอนต์ให้เร็วที่สุดเท่าที่จะเป็นไปได้และในปัจจุบันมีความล่าช้าต่ำสุดไปจนถึงแบบฟอนต์ Rasterizer
fontdue ได้รับการออกแบบมาเพื่อทดแทน rusttype (ลิงก์), ab_glyph (ลิงก์), ส่วนหนึ่งของ glyph_brush (ลิงก์) และ glyph_brush_layout (ลิงก์) นี่คือชั้นเรียนของห้องสมุดตัวอักษรที่ไม่ได้จัดการกับรูปร่าง
ไม่น่าเป็นไปได้ที่ฉันจะมีเวลารวมเข้ากับห้องสมุดรูปร่าง หากคุณต้องการเอ็นจิ้นแบบอักษรที่สมบูรณ์ยิ่งขึ้นคุณควรตรวจสอบโครงการข้อความจักรวาลที่ยอดเยี่ยมซึ่งเป็นไลบรารีข้อความสนิมบริสุทธิ์ที่สมบูรณ์แบบมาก
ห้องสมุด ที่ไม่ใช่เป้าหมาย นี้คือการจัดสรรฟรีและมีโหลดเริ่มต้นที่รวดเร็ว "เป็นศูนย์" ห้องสมุดนี้ ทำการ จัดสรรและขึ้นอยู่กับลัง alloc แบบอักษรจะถูกแยกวิเคราะห์อย่างเต็มที่ในการสร้างและข้อมูลที่เกี่ยวข้องจะถูกเก็บไว้ในรูปแบบการเข้าถึงที่สะดวกยิ่งขึ้น ซึ่งแตกต่างจากไลบรารีฟอนต์อื่น ๆ โครงสร้างตัวอักษรไม่มีการพึ่งพาตลอดชีวิตเนื่องจากจัดสรรพื้นที่ของตัวเอง
การสาธิตสด การสาธิตนี้เป็นเว็บประกอบการสร้าง fontdue Rasterizing ไปยังผืนผ้าใบเบราว์เซอร์ มันให้ตัวละครที่อยู่ข้างตัวละครที่ถูกแรสเตอร์ระหว่าง fontdue และ API ข้อความผืนผ้าใบของเบราว์เซอร์ที่มีพารามิเตอร์เดียวกัน
ตัวอย่างอื่น ๆ สามารถพบได้ภายใต้./dev/examples
Rasterization API ไม่ควรเห็นการเปลี่ยนแปลงที่สำคัญในอนาคตอันใกล้
// 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 API ยังไม่บรรลุนิติภาวะและอาจเห็นการเปลี่ยนแปลงที่แตกหัก 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 ( ) ) ; เกณฑ์มาตรฐานเหล่านี้วัดเวลาที่ใช้ในการสร้างตัวชี้วัดและบิตแมปสำหรับข้อความ "สฟิงซ์ของ Black Quartz ตัดสินคำสาบานของฉัน" ในช่วงของขนาด เส้นที่ต่ำกว่าในกราฟจะดีกว่า


เกณฑ์มาตรฐานนี้วัดเวลาที่ใช้ในการจัดวางอักขระละตินของข้อความตัวอย่างด้วยการห่อขอบเขตของคำ

ได้รับใบอนุญาตภายใต้ใด ๆ
ตามตัวเลือกของคุณ
หากคุณไม่ได้ระบุอย่างชัดเจนเป็นอย่างอื่นการมีส่วนร่วมใด ๆ ที่ส่งโดยเจตนาเพื่อรวมไว้ในงานโดยคุณตามที่กำหนดไว้ในใบอนุญาต Apache-2.0 จะต้องได้รับใบอนุญาตหลายใบดังกล่าวข้างต้นโดยไม่มีข้อกำหนดหรือเงื่อนไขเพิ่มเติมใด ๆ
โปรดอดทนกับฉันในคุณสมบัติใหม่หรือนิสัยใจคอที่คุณพบ ข้อบกพร่องจะมีความสำคัญ แต่ฉันไม่มีเวลามากเท่าที่ฉันต้องการทำงานกับ Fontdue ดังนั้นโปรดอดทนรอนี่เป็นโครงการเดี่ยว
Fontdue ขึ้นอยู่กับ ttf-parser (ลิงก์) สำหรับการแยกวิเคราะห์แบบอักษรซึ่งรองรับคุณสมบัติ Truetype และ opentype ที่หลากหลาย
Fontdue เริ่มต้นจากการผลิตที่มีการผลิตมากขึ้นเรื่อย ๆ ของ font-rs (ลิงก์) เนื่องจากมันดูเร็วแค่ไหนและวิธีที่ง่ายเพียงใดที่ rusttype (ลิงก์) ทำจากการแยกวิเคราะห์แบบอักษร ตั้งแต่นั้นมาฉันได้อ่านข้อกำหนดฟอนต์จำนวนมากและเทคนิคการแรสเตอร์ที่ทันสมัยโดยการเขียน fontdue ใหม่จากพื้นดินในกระบวนการลงในสัตว์ร้ายที่เป็นเอกลักษณ์ของตัวเอง