3个版本 (稳定)
1.1.0+data-15.1.05 | 2024年4月24日 |
---|---|
1.0.0+data-15.1.05 | 2024年4月1日 |
0.1.0 | 2018年6月1日 |
#370 in 编码
用于 ectoplasm
1MB
276 行
unifont-rs
Unifont for Rust
提供覆盖整个Unicode基本多语言平面的单色位图字体。半角字符宽度为8x16像素,全角字符宽度为16x16像素。
功能
- 易于使用
- 访问原始二进制数据
#[no_std]
用于嵌入式使用- 内存占用小
- 基本的i18n支持
API
fn get_glyph(c: char) -> Option<&'static Glyph>;
fn enumerate_glyphs() -> impl Iterator<Item = (char, &'static Glyph)>;
enum Glyph {
Halfwidth([u8; 16]),
Fullwidth([u16; 16]),
}
impl Glyph {
fn get_pixel(&self, x: usize, y: usize) -> bool;
fn get_width(&self) -> usize;
fn is_fullwidth(&self) -> bool;
}
/// Preprocess text so that it may be rendered via Unifont.
pub fn preprocess_text(text: &str) -> String;
示例代码
示例代码位于 examples/banner.rs
。
使用以下命令运行二进制文件
cargo run --example banner UniFont
它将产生以下输出
#
# # # ###### #
# # # #
# # # ### ## # #### # ### #
# # ## # # # # # ## # #####
# # # # # ##### # # # # #
# # # # # # # # # # #
# # # # # # # # # # #
# # # # # # # # # # #
# # # # # # # # # # #
#### # # ##### # #### # # ##
i18n (国际化)
提供基本预处理以显示非拉丁语脚本中的文本,例如阿拉伯语。
尝试按以下方式运行示例
cargo run --example banner "أبجد"
它将产生以下输出
##
#
##
#
#
#
# #
# # #
# ### # #
# # ## # #
##################### #
#
#
工作原理
在编译时,build.rs
脚本解析 data/unifont-*.hex
文件并生成Rust代码。