4 个版本
0.1.3 | 2024年6月12日 |
---|---|
0.1.2 | 2023年12月9日 |
0.1.1 | 2023年7月28日 |
0.1.0 | 2023年7月28日 |
235 在 GUI 中排名
每月下载 21 次
2MB
18K SLoC
egui_nerdfonts
为 Nerd Fonts 图标 提供 egui 的捆绑包。
安装
在 Cargo.toml 中将 crate 作为依赖项添加
egui_nerdfonts = "0.1.3"
或在你的项目中输入 cargo add egui_nerdfonts
使用
首先,更新你的 egui 上下文中的字体
let mut fonts = egui::FontDefinitions::default();
egui_nerdfonts::add_to_fonts(&mut fonts, egui_nerdfonts::Variant::Regular);
let egui_ctx = Context::default();
egui_ctx.set_fonts(fonts);
从 这里 选择你想要使用的 nerdfonts 图标。
然后按以下方式使用 nerdfonts 图标
ui.label(format!("{}", egui_nerdfonts::regular::NF_DEV_RUST));
示例
cargo run --example rust_logo
关于
受 egui_phosphor 启发,代码使用相同的结构。
使用的 .ttf 是 这个,而 src/variants/regular.rs
是使用以下 Python 脚本生成的,其中 nerdfonts_regular.ttf
作为第一个参数
from itertools import chain
from fontTools.ttLib import TTFont
from fontTools.unicode import Unicode
import sys
with TTFont(
sys.argv[1], 0, allowVID=0, ignoreDecompileErrors=True, fontNumber=-1
) as ttf:
chars = chain.from_iterable(
[y + (Unicode[y[0]],) for y in x.cmap.items()] for x in ttf["cmap"].tables
)
for char in chars:
symbol_name = char[1].upper().replace('-', '_').replace(' ', '_').replace('#', '_').replace('!', '')
code = r"\u" + "{" + f"{char[0]:X}" + "}"
print(f"pub const {symbol_name}: &str = \"{code}\";")
依赖项
~4.5–9.5MB
~82K SLoC