feat: 分栏对照开发,字体缩放、定位调整

This commit is contained in:
R524809
2026-04-16 18:04:57 +08:00
parent 4299c4e082
commit fdb2165dc7
8 changed files with 451 additions and 119 deletions
@@ -10,6 +10,7 @@ import {
type LetterTracingMode,
} from '../shared/generators/letter-tracing-generator';
import { LETTERS_UPPER } from '../shared/data/alphabet';
import { loadLetterFont } from '../shared/draw/drawTools';
/** 各 worksheetId 对应的页面标题和描述 */
const PAGE_META: Record<string, { title: string; desc: string }> = {
@@ -80,13 +81,34 @@ createPage(
modeOptions: [...MODE_OPTIONS],
} as unknown as PageData,
/** 页面加载:从路由参数获取 worksheetId 并应用 */
onLoad(options: { id?: string }) {
/** 页面加载:从路由参数获取 worksheetId、letter、case 并应用,同时预加载字体 */
onLoad(options: {
id?: string;
letter?: string;
case?: 'upper' | 'lower';
}) {
loadLetterFont().catch(() => {});
const worksheetId =
options.id && PAGE_META[options.id]
? options.id
: 'letter-tracing-single';
this.applyWorksheet(worksheetId);
const updates: Partial<PageData> = {};
if (options.letter) {
const normalized = normalizeLetter(options.letter);
if (normalized) updates.selectedLetter = normalized;
}
if (options.case === 'lower') {
updates.letterCaseLower = true;
} else if (options.case === 'upper') {
updates.letterCaseLower = false;
}
if (Object.keys(updates).length > 0) {
this.setData(
updates as Partial<PageData> & WechatMiniprogram.IAnyObject,
);
}
},
/** 用户点击模式选择器时切换 worksheet */
@@ -140,10 +162,11 @@ createPage(
});
},
/** 执行 Canvas 绘制:生成数据 → 调用 drawService 渲染 */
/** 执行 Canvas 绘制:等待字体就绪 → 生成数据 → 调用 drawService 渲染 */
async drawCanvas() {
if (!this.ctx || !this.drawService) return;
try {
await loadLetterFont();
const config = this.buildRuntimeConfig();
const data = generateLetterTracing(config);
console.log('drawCanvas data', data);