chore: 上线前测试修复与部署配置更新
- fix(test): 添加 useSearchParams mock,修正联系链接断言 - style(nav): 将"联系我们"改为"联系" - chore(deploy): 更新 Nginx 配置和部署文档 - style(logo): 更新 Logo SVG 文件 - feat(scripts): 添加字体处理和站点配置脚本
This commit was merged in pull request #9.
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
"""验证字体子集与原始字体的字形一致性"""
|
||||
|
||||
from fontTools.ttLib import TTFont
|
||||
from fontTools.ttLib.tables import _h_m_t_x, _g_a_s_p
|
||||
import os
|
||||
|
||||
# 修补表解析
|
||||
original_hmtx = _h_m_t_x.table__h_m_t_x.decompile
|
||||
def patched_hmtx(self, data, ttFont):
|
||||
try: return original_hmtx(self, data, ttFont)
|
||||
except: self.metrics = {}
|
||||
_h_m_t_x.table__h_m_t_x.decompile = patched_hmtx
|
||||
|
||||
original_gasp = _g_a_s_p.table__g_a_s_p.decompile
|
||||
def patched_gasp(self, data, ttFont):
|
||||
try: return original_gasp(self, data, ttFont)
|
||||
except: self.gaspRanges = {}
|
||||
_g_a_s_p.table__g_a_s_p.decompile = patched_gasp
|
||||
|
||||
base = 'src/app/fonts'
|
||||
|
||||
# 加载字体
|
||||
original = TTFont(f'{base}/AoyagiReisho.ttf')
|
||||
subset = TTFont(f'{base}/AoyagiReisho-subset.ttf')
|
||||
|
||||
print("=" * 50)
|
||||
print("字体对比验证")
|
||||
print("=" * 50)
|
||||
|
||||
# 文件大小
|
||||
orig_size = os.path.getsize(f'{base}/AoyagiReisho.ttf')
|
||||
sub_size = os.path.getsize(f'{base}/AoyagiReisho-subset.ttf')
|
||||
print(f"\n原始字体大小: {orig_size / 1024:.1f} KB ({orig_size} bytes)")
|
||||
print(f"子集字体大小: {sub_size / 1024:.1f} KB ({sub_size} bytes)")
|
||||
|
||||
# CMAP 对比
|
||||
orig_cmap = original.getBestCmap()
|
||||
sub_cmap = subset.getBestCmap()
|
||||
|
||||
target_chars = [0x20, 0x777f, 0x65b0, 0x81f4, 0x9060]
|
||||
char_names = {0x20: '空格', 0x777f: '睿', 0x65b0: '新', 0x81f4: '致', 0x9060: '遠'}
|
||||
|
||||
print("\n字符映射对比:")
|
||||
for code in target_chars:
|
||||
name = char_names[code]
|
||||
orig_glyph = orig_cmap.get(code, 'MISSING')
|
||||
sub_glyph = sub_cmap.get(code, 'MISSING')
|
||||
match = "✓" if orig_glyph == sub_glyph else "✗"
|
||||
print(f" U+{code:04X} ({name}): 原始={orig_glyph}, 子集={sub_glyph} {match}")
|
||||
|
||||
# 字形数量
|
||||
print(f"\n字形数量:")
|
||||
print(f" 原始: {len(original.getGlyphOrder())}")
|
||||
print(f" 子集: {len(subset.getGlyphOrder())}")
|
||||
|
||||
# 表对比
|
||||
print("\n字体表:")
|
||||
orig_tables = set(original.keys())
|
||||
sub_tables = set(subset.keys())
|
||||
print(f" 原始表: {sorted(orig_tables)}")
|
||||
print(f" 子集表: {sorted(sub_tables)}")
|
||||
|
||||
original.close()
|
||||
subset.close()
|
||||
|
||||
print("\n" + "=" * 50)
|
||||
Reference in New Issue
Block a user