feat:修改为从网络端获取字体svg

This commit is contained in:
R524809
2025-10-27 10:31:59 +08:00
parent 42a37a324f
commit 643a7e23e7
4 changed files with 329 additions and 23 deletions
+35 -23
View File
@@ -1,6 +1,7 @@
import WordDrawService from '../../service/wordDrawService';
import { checkAndSaveImage } from '../../utils/saveImage';
import { PAPER_SIZE } from '../../constants/colors';
import { getWordsSvgData } from '../../utils/getWordsSvgJson';
Page({
canvas: null as Canvas | null,
@@ -35,30 +36,41 @@ Page({
this.initCanvas()
},
loadSvgWords() {
const fs = wx.getFileSystemManager();
fs.readFile({
filePath: 'constants/svgWords.json', // JSON文件路径,相对于项目根目录
encoding: 'utf8', // 重要:指定编码为utf8以读取文本内容
success: (res) => {
try {
wx.showToast({ title: '加载中...', icon: 'loading' });
const parsedData = JSON.parse(res.data as string);
this.svgWords = parsedData;
wx.hideToast();
const { words } = this.data as any;
if (words && words.length > 0) {
this.drawPracticeSheet().catch(console.error);
}
} catch (e) {
console.error('解析JSON失败', e);
}
},
fail: (err) => {
console.error('读取文件失败', err);
wx.hideToast();
async loadSvgWords() {
try {
wx.showToast({ title: '加载字体中...', icon: 'loading' });
// 使用带缓存的SVG汉字数据获取函数
const svgWordsData = await getWordsSvgData();
this.svgWords = svgWordsData;
wx.hideToast();
console.log('SVG汉字数据加载成功,共', Object.keys(this.svgWords).length, '个汉字');
const { words } = this.data as any;
if (words && words.length > 0) {
this.drawPracticeSheet().catch(console.error);
}
});
} catch (error) {
console.error('加载SVG汉字数据失败:', error);
wx.hideToast();
// 显示错误提示
wx.showModal({
title: '加载失败',
content: '无法加载汉字数据,请检查网络连接后重试',
showCancel: true,
cancelText: '取消',
confirmText: '重试',
success: (res) => {
if (res.confirm) {
// 用户点击重试,重新加载
this.loadSvgWords();
}
}
});
}
},
// 输入组件回调