Skip to content

Commit 2f7493a

Browse files
committed
fix: 修复图片名称及 gsub 的判断缺失
1 parent 079e42e commit 2f7493a

File tree

4 files changed

+16
-4
lines changed

4 files changed

+16
-4
lines changed

packages/ffi-js/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "cn-font-split",
3-
"version": "7.0.0-beta.4",
3+
"version": "7.0.1",
44
"description": "划时代的字体切割工具,CJK与任何字符!支持 otf、ttf、woff2 字体多线程切割,完美地细颗粒度地进行包大小控制。A revolutionary font subetter that supports CJK and any characters! It enables multi-threaded subset of otf, ttf, and woff2 fonts, allowing for precise control over package size.",
55
"main": "./dist/node/index.js",
66
"module": "./dist/node/index.mjs",

src/lib.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ fn main_test() {
1212
use cn_font_utils::{output_file, read_binary_file};
1313
use log::info;
1414

15-
let path = "./src/国标宋体.ttf";
15+
let path = "./src/白路棒棒手写体.ttf";
1616
let font_file = read_binary_file(&path).expect("Failed to read file");
1717
let input = InputTemplate {
1818
input: font_file,

src/pre_subset/features/gsub.rs

+8-1
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,22 @@ pub fn analyze_gsub(
88
font: &Font,
99
font_file: &mut Cursor<&Vec<u8>>,
1010
) -> Vec<Vec<u16>> {
11+
// 丑陋的多层 unwrap 处理
1112
let temp: Result<Option<GlyphSubstitution>, std::io::Error> =
1213
font.take(font_file);
1314
// 国标宋体,解析就报错,所以干脆先不解析
1415
if temp.is_err() {
1516
error!("{}", temp.unwrap_err());
1617
return vec![vec![]];
1718
}
19+
1820
// GSUB
19-
let data: GlyphSubstitution = temp.unwrap().unwrap();
21+
let temp1 = temp.unwrap();
22+
if temp1.is_none() {
23+
error!("Font without GSUB table");
24+
return vec![vec![]];
25+
}
26+
let data: GlyphSubstitution = temp1.unwrap();
2027

2128
// let mut feature_tags: Vec<&str> = data
2229
// .features

src/pre_subset/gen_svg.rs

+6-1
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,13 @@ pub fn gen_svg_from_font_file(file: &[u8], text: &str) -> String {
1818
pub fn gen_svg_from_ctx(ctx: &mut Context) {
1919
if let Some(preview) = &ctx.input.preview_image {
2020
let text = gen_svg(&mut ctx.face, &preview.text);
21+
let name = if preview.name == "" {
22+
String::from("preview")
23+
} else {
24+
preview.name.clone()
25+
};
2126
(ctx.callback)(EventMessage::output_data(
22-
format!("{}.svg", preview.name).as_str(),
27+
format!("{}.svg", name).as_str(),
2328
text.as_bytes().to_vec(),
2429
));
2530
}

0 commit comments

Comments
 (0)