Files
lishanpi/tools/check_pixels.py
T
hm 97f7d200a2 refactor: 将工具类文件迁移到 tools/ 目录
- 移动 10 个 Python 字体工具脚本到 tools/
- 移动 5 个 C 字体测试文件到 tools/
- 更新脚本路径引用适配新目录结构
- 清理 vue/vue3 前端模板文件
2026-05-07 17:10:39 +08:00

41 lines
1.5 KiB
Python

# -*- coding: utf-8 -*-
import re
import os
project_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
def check_bitmap(filepath):
with open(filepath, 'r', encoding='utf-8') as f:
content = f.read()
m = re.search(r'/\* U\+4E2D.*?\*/(.*?)(?:/\* U\+|static const lv_font_fmt_txt_glyph_dsc_t)', content, re.DOTALL)
if m:
data_str = m.group(1)
bytes_vals = []
for x in data_str.split(','):
x = x.strip()
if not x:
continue
if x.startswith('0x') or x.startswith('0X'):
bytes_vals.append(int(x, 16))
else:
try:
bytes_vals.append(int(x))
except:
pass
pixels = []
for b in bytes_vals:
pixels.append((b >> 4) & 0x0F)
pixels.append(b & 0x0F)
max_val = max(pixels)
nonzero = [v for v in pixels if v > 0]
min_nonzero = min(nonzero) if nonzero else 0
avg_nonzero = sum(nonzero) / len(nonzero) if nonzero else 0
print(f'{filepath}: max={max_val}/15, min_nonzero={min_nonzero}/15, avg_nonzero={avg_nonzero:.1f}/15')
else:
print(f'{filepath}: no match')
check_bitmap(os.path.join(project_root, 'app/tasks/custom_cjk_40.c'))
check_bitmap(os.path.join(project_root, 'app/tasks/custom_cjk_30.c'))
check_bitmap(os.path.join(project_root, 'app/tasks/custom_cjk_20.c'))
check_bitmap(os.path.join(project_root, 'app/tasks/custom_cjk_16.c'))