update at 2026-02-08 18:28:39

This commit is contained in:
douboer
2026-02-08 18:28:39 +08:00
parent e2a46e413a
commit 0f5a7f0d85
97 changed files with 22029 additions and 59 deletions

View File

@@ -0,0 +1,60 @@
#!/usr/bin/env node
const fs = require('fs')
const path = require('path')
const { wrapTextByChars } = require('../miniprogram/utils/core/text-layout')
const { generateSvgFromFont } = require('../miniprogram/utils/core/svg-builder')
const opentype = require('../frontend/node_modules/opentype.js/dist/opentype.js')
function findFirstFontFile(rootDir) {
const entries = fs.readdirSync(rootDir, { withFileTypes: true })
for (const entry of entries) {
const fullPath = path.join(rootDir, entry.name)
if (entry.isDirectory()) {
const nested = findFirstFontFile(fullPath)
if (nested) return nested
continue
}
if (/\.(ttf|otf)$/i.test(entry.name)) {
return fullPath
}
}
return null
}
function assert(condition, message) {
if (!condition) {
throw new Error(message)
}
}
function run() {
console.log('开始执行小程序核心模块测试...')
const wrapped = wrapTextByChars('123456', 2)
assert(wrapped === '12\n34\n56', 'wrapTextByChars 结果不符合预期')
const fontFile = findFirstFontFile(path.join(__dirname, '..', 'frontend', 'public', 'fonts'))
assert(fontFile, '未找到可用字体文件')
const buffer = fs.readFileSync(fontFile)
const font = opentype.parse(buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength))
const result = generateSvgFromFont({
text: '星程字体转换',
font,
fontSize: 120,
fillColor: '#000000',
letterSpacing: 0,
})
assert(typeof result.svg === 'string' && result.svg.includes('<svg'), 'SVG 内容无效')
assert(result.svg.includes('<path'), 'SVG 未生成路径')
assert(result.width > 0 && result.height > 0, 'SVG 尺寸计算无效')
console.log('小程序核心模块测试通过。')
}
run()