Files
font2pic/scripts/check-miniprogram-core-test.js
2026-02-09 16:09:44 +08:00

68 lines
2.0 KiB
JavaScript
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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 fontRootCandidates = [
path.join(__dirname, '..', 'fonts'),
path.join(__dirname, '..', 'frontend', 'public', 'fonts'),
]
const fontRoot = fontRootCandidates.find((dir) => fs.existsSync(dir))
assert(fontRoot, '未找到字体目录fonts 或 frontend/public/fonts')
const fontFile = findFirstFontFile(fontRoot)
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()