feat: 添加古风官职特殊字符 + 优化字体子集化脚本

字符添加:
- 添加破折号(—)
- 添加庶、尉、谏、簿、丞
- 确保古风官职文本完整显示

脚本优化:
- 修改subset-font-safe.py,保留现有字符
- 合并新提取的字符,避免覆盖手动添加的字符
- 字体大小:740.7 KB(减少39.6%)
This commit is contained in:
Vaica committed 2026-06-03 14:53:56 +08:00
1 parent 1d7f63bc0c
commit b7ee4e007f
6 files changed
+144 -11

No files matched your search

+45
View File
@@ -0,0 +1,45 @@
#!/usr/bin/env python3
"""
添加古风官职缺失字符到字体子集
"""
import os
# 缺失的字符
missing_chars = ['—', '庶', '尉', '谏', '簿', '丞']
print("🔧 添加古风官职缺失字符")
print("=" * 60)
# 读取现有字符
chars_file = "themes/Ying/static/font/used_chars.txt"
with open(chars_file, 'r', encoding='utf-8') as f:
existing_chars = set(f.read())
print(f"📊 现有字符数: {len(existing_chars)}")
# 检查哪些字符真正缺失
chars_to_add = []
for char in missing_chars:
if char not in existing_chars:
chars_to_add.append(char)
print(f"➕ 需要添加: '{char}'")
else:
print(f"✅ 已存在: '{char}'")
# 添加缺失字符
if chars_to_add:
# 添加到字符集合
all_chars = existing_chars | set(chars_to_add)
# 保存更新后的字符列表
with open(chars_file, 'w', encoding='utf-8') as f:
f.write(''.join(sorted(all_chars)))
print(f"\n✅ 已添加 {len(chars_to_add)} 个字符")
print(f"📊 更新后字符数: {len(all_chars)}")
print(f"\n📝 添加的字符: {''.join(chars_to_add)}")
else:
print("\n✅ 所有字符都已存在,无需添加")
print(f"\n✅ 字符列表已更新: {chars_file}")
+23 -10
View File
@@ -139,6 +139,7 @@ def main():
# 配置路径
font_dir = "themes/Ying/static/font"
input_font = os.path.join(font_dir, "zql-v2.woff2")
chars_file = os.path.join(font_dir, "used_chars.txt")
# 检查输入文件
if not os.path.exists(input_font):
@@ -146,7 +147,16 @@ def main():
print(f" 请确保在博客根目录运行此脚本")
sys.exit(1)
# 扫描目录(只扫描实际使用的目录)
# 读取现有的字符列表(如果存在)
existing_chars = set()
if os.path.exists(chars_file):
with open(chars_file, 'r', encoding='utf-8') as f:
existing_chars = set(f.read())
print(f"📖 读取现有字符: {len(existing_chars)} 个")
else:
print(f"⚠️ 现有字符文件不存在,将创建新文件")
# 扫描目录
scan_dirs = ["content", "layouts"]
# 检查public目录是否存在
@@ -160,35 +170,38 @@ def main():
print(f"\n🔍 扫描目录: {', '.join(scan_dirs)}")
# 提取字符
chars = extract_chars_from_files(scan_dirs)
print(f"\n📝 提取了 {len(chars)} 个唯一字符")
new_chars = extract_chars_from_files(scan_dirs)
print(f"\n📝 从文件中提取了 {len(new_chars)} 个唯一字符")
if len(chars) == 0:
# 合并字符(保留现有字符 + 新提取的字符)
all_chars = existing_chars | new_chars
print(f"📊 合并后字符数: {len(all_chars)}")
if len(all_chars) == 0:
print("❌ 未找到任何字符,请检查扫描目录")
sys.exit(1)
# 保存字符列表(用于调试)
chars_file = os.path.join(font_dir, "used_chars.txt")
# 保存合并后的字符列表
with open(chars_file, 'w', encoding='utf-8') as f:
sorted_chars = sorted(chars)
sorted_chars = sorted(all_chars)
f.write(''.join(sorted_chars))
print(f"💾 字符列表已保存到: {chars_file}")
# 显示部分字符(用于验证)
sample_chars = sorted(list(chars))[:50]
sample_chars = sorted(list(all_chars))[:50]
print(f"📋 前50个字符: {''.join(sample_chars)}")
# 生成woff2子集字体
output_woff2 = os.path.join(font_dir, "zql-v2-subset.woff2")
print(f"\n{'='*50}")
print(f"🎯 生成 woff2 子集字体...")
success_woff2 = subset_font(input_font, output_woff2, chars)
success_woff2 = subset_font(input_font, output_woff2, all_chars)
# 生成woff子集字体
output_woff = os.path.join(font_dir, "zql-v2-subset.woff")
print(f"\n{'='*50}")
print(f"🎯 生成 woff 子集字体...")
success_woff = subset_font(input_font, output_woff, chars)
success_woff = subset_font(input_font, output_woff, all_chars)
# 总结
print(f"\n{'='*50}")
+75
View File
@@ -0,0 +1,75 @@
#!/usr/bin/env python3
"""
验证古风官职字符是否在字体子集中
"""
# 需要验证的古风官职字符
ancient_chars = [
'—', # 破折号
'庶', # 庶民
'民', # 庶民
'太', # 太师、太尉
'尉', # 太尉
'谏', # 谏议大夫
'给', # 给事中
'簿', # 主簿
'司', # 司户参军
'户', # 司户参军
'录', # 录事参军
'丞', # 御史中丞
'判', # 通判
'殿', # 殿中侍御史
]
# 读取字符列表
with open("themes/Ying/static/font/used_chars.txt", 'r', encoding='utf-8') as f:
existing_chars = set(f.read())
print("🔍 验证古风官职字符是否在字体子集中")
print("=" * 60)
# 检查每个字符
found_chars = []
missing_chars = []
for char in ancient_chars:
if char in existing_chars:
found_chars.append(char)
print(f"✅ '{char}' - 已存在")
else:
missing_chars.append(char)
print(f"❌ '{char}' - 缺失")
print("\n" + "=" * 60)
print(f"📊 验证结果:")
print(f" ✅ 已存在: {len(found_chars)} 个字符")
print(f" ❌ 缺失: {len(missing_chars)} 个字符")
if missing_chars:
print(f"\n⚠️ 缺失的字符: {''.join(missing_chars)}")
print(f"\n💡 需要将这些字符添加到 used_chars.txt")
else:
print(f"\n🎉 所有古风官职字符都已存在!")
# 显示完整的古风官职文本
print("\n" + "=" * 60)
print("📜 古风官职文本:")
print("正一品 太师 2000")
print("从一品 太尉 1400")
print("正二品 参知政事 1050")
print("从二品 节度使 800")
print("正三品 御史中丞 600")
print("从三品 秘书监 480")
print("正四品 谏议大夫 380")
print("从四品 侍读学士 300")
print("正五品 给事中 240")
print("从五品 知州 190")
print("正六品 侍御史 150")
print("从六品 通判 115")
print("正七品 知县 85")
print("从七品 殿中侍御史 60")
print("正八品 大理评事 40")
print("从八品 录事参军 25")
print("正九品 主簿 15")
print("从九品 司户参军 5")
print("— 庶民 0")
+1 -1
View File
@@ -1 +1 @@
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~、。「」一丁七万三上下不与丑专且世丘业东丝丢两严丧个中丰串临为主丽举久么义之乌乎乏乐乒乓乘九也习乡书买乱了予争事二于亏云互五井亚些亡交亦产享京亮亲人亿什仁仅今介仍从仓仔他仗付仙代令以仪们仰件价任份仿企伏伐休众优伙会伞传伤伦伪伫估伴伸似但位低住佐佑体何余佛作你佩佬佳使例供依侠侣侧便促俄俗保信俩俭修俱倍倒候借债值假偎偏做停健偶偷偿傅傍储催傲傻像儿兀允元兄充兆先光克免兑兔党兜入全八公六共关兴其具典养兼冀内册再冒冗写军农冠冤冥冬冰冲决况冷冻净准凉凌减凑凛几凡凭凳凶出击函刀刃分切划列刘则刚创初删判利别刮到制刷券刹刺刻前剔剖剥剧剩剪副割力劝办功加务劣动助努励劲劳势勇勉勒勤勾勿包匆匍匐匕化北匙匠匹区医匾十千升午半华协卓单卖南博占卡卢卦卧卫卯印危即却卷卸厂厅历厉压厌厕厘厚原厢厨去县参又及友双反发叒叔叕取受变叙叠口古句另叨只叫召可台史右叶号司叹吃各合吉同名后吐向吓吗吞否吧吨含听启吱吴吵吸吹吾呀呆呈告呕呗员呛呢呦周味呵呼命咄咋和咐咕咙咨咩咪咬咱咳咸咽哀品哄哆哇哈响哒哗哥哦哨哪哭哲唉唐唤唬售唯唾商啊啥啦啸喂善喉喊喜喝喧喵喷喻嗓嗖嗜嗡嗦嗨嗯嗽嘀嘎嘛嘱嘲嘴嘿器噩噪嚣囊四回因团园困围固国图圆圈土圣在地圳场址均坊坎坏坐坑块坚坛坞坟坠坡坦坷垄型垢埋城埔域培基堂堆堑堡堤堪堵塌塑塔塘塞填境墓墙增墨壁士壮声壳壶处备复夏夕外多夜够大天太夫失头夸夹夺奇奈奋奏奖套奢女奶奸她好如妄妇妈妒妙妥妨妹妻始姐姑姓委姨姿威娃娜娱婆媒媚嫁嫉嫌嫖嫩子孔字存季孤学孩宁它守安宋完宏宗官定宛宜宝实宠审客宣室宫宰害宵家容宽宾宿寂寄密寇富寒寓寝察寸对寺寻导寿封射将尊小少尔尖尘尝尤尬就尴尸尺尼尽尾局层居屈届屋屎屏屑展属屠屯山岁岂岔岖岗岛岸峨峰崎崩嵌巍川州工左巧巨差己已巴巷巾币市布师希帖帘带帧帮常帽幅幕幢干平年并幸幺幻幼幽广庄庆床序库应底店度座庭康庸延建廿开异弃弄弈弊式引弟张弥弯弱弹强归当录形彩彰影彻彼往征径待很律徐徒得徙御循微德心必忆忍忐忑志忘忙忧快念忽怀态怎怒怔怕思怠怡急怦性怨怪怯总怼恋恍恐恒恢恨恩恭息恰恶恼悄悉悍悔悖悚悟患悦您悬悲情惊惑惕惜惠惧惨惫惬惯惰想惹愁愈愉意愚感愣愤愧愿慎慕慢慨憧憨憬憾懂懈懑懒懦懵戏成我或战戚截戳戴户戾房所扇手才扎扑打扔托扣执扩扫扬扰批扼找承技抄抉把抑抓投抖抗折抛抢护报抬抱抵抹抽担拆拉拌拍拒拓拔拖拘拙招拜拟拥拦拧拨择括拳拼拽拾拿持挂指按挑挖挚挡挣挤挥挨挫振挺捉捏捕捞损捡换捧据捷掂授掉掌掐排探接控推掩措掰掺描提插握揣揭搁搏搓搜搞搬搭携摁摄摆摇摊摔摘摧摩摸撑撒撞撤播撰撸撼擅操擎擦攒支收改攻放政故效敌敏救教敛敞敢散敬数敲整敷文斑斗料斜斥斧斩断斯新方施旁旅族旗无既日旦旧旨早旬时旷明易星映春昨是昵昼显晃晒晕晚晦晨普景晰晶智暂暇暑暖暗暴曦曲更曾替最月有朋服望朝期朦木未末本术朴朵机杀杂权杆李杏材村杜束杠条来杨杭杯東松板极构析枕林枚果枪枫枯架某柒染柔柜查柯柳柴柿栀标栈栋栏树校样核根格栽桂桃框案桌桑档桥桶梁梦梯械梳检棉棒棘棚森棵椅植椒楚楼概榜槛槽樊模横橙欠次欢欣欧欲欺款歉歌止正此步武歪死殉殊残段殿毁毅毋母每毒比毕毛毫氏民气氛氧水永汁求汇汉汕汗江池污汤汪汲沉沙沟没沦沮河油治沾沿泄泉泌法泛泡波泣泥注泪泯泳泽洁洋洒洗洛洞津洪洲活派流浅浇测济浏浑浓浪浮浴海浸涂消涉润涨涩涯液涵淀淋淘淡淫深淳混添清渐渗渠渡温港渲渴游湖湘湾湿溃源溢溯滋滑滚滞满滤滥滴漂漏漓演漫漱潘潜潦潭潮澎澡澳激瀑火灭灯灰灵灾炉炎炒炕炫炮炸点炼烁烂烈烟烤烦烧烫热烽焉焕焖焦然煌煎照煲熄熊熙熟熬熵燥爆爬爱父爷爸爽片版牌牙牛物牲牵特牺犊犯状犹狂狗狠独狱狼猛猜猝猫献猴玄率玉王玛玩环现玻珍珠班球理琐琢瑞璃瓜瓢瓦瓶甚甜生甥用甩田由甲申电男画畅界留略番畴疏疑疗疙疫疮疯疲疼疾病症痍痒痕痘痛痪瘦瘩瘫瘾癌登白百的皇皑皮盆盈益监盒盖盗盘盛盟目盯盲直相盼盾省眉看真眠眩眶眼着睁睛睡督睹睿瞅瞎瞥瞬矛知矩短石矿码砌砍研砖砥破砺础硅硌硬确碌碍碎碑碗碰磁磨示礼社祖祝神票祸禁福离秀私秉秋种科秒租积称移稀程稍税稚稳稿究穷空穿突窃窄窒窗窝立站竞竟章童端竹笑笔Line truncated
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~—、。「」一丁七万三上下不与丑专且世丘业东丝丞丢两严丧个中丰串临为主丽举久么义之乌乎乏乐乒乓乘九也习乡书买乱了予争事二于亏云互五井亚些亡交亦产享京亮亲人亿什仁仅今介仍从仓仔他仗付仙代令以仪们仰件价任份仿企伏伐休众优伙会伞传伤伦伪伫估伴伸似但位低住佐佑体何余佛作你佩佬佳使例供依侠侣侧便促俄俗保信俩俭修俱倍倒候借债值假偎偏做停健偶偷偿傅傍储催傲傻像儿兀允元兄充兆先光克免兑兔党兜入全八公六共关兴其具典养兼冀内册再冒冗写军农冠冤冥冬冰冲决况冷冻净准凉凌减凑凛几凡凭凳凶出击函刀刃分切划列刘则刚创初删判利别刮到制刷券刹刺刻前剔剖剥剧剩剪副割力劝办功加务劣动助努励劲劳势勇勉勒勤勾勿包匆匍匐匕化北匙匠匹区医匾十千升午半华协卓单卖南博占卡卢卦卧卫卯印危即却卷卸厂厅历厉压厌厕厘厚原厢厨去县参又及友双反发叒叔叕取受变叙叠口古句另叨只叫召可台史右叶号司叹吃各合吉同名后吐向吓吗吞否吧吨含听启吱吴吵吸吹吾呀呆呈告呕呗员呛呢呦周味呵呼命咄咋和咐咕咙咨咩咪咬咱咳咸咽哀品哄哆哇哈响哒哗哥哦哨哪哭哲唉唐唤唬售唯唾商啊啥啦啸喂善喉喊喜喝喧喵喷喻嗓嗖嗜嗡嗦嗨嗯嗽嘀嘎嘛嘱嘲嘴嘿器噩噪嚣囊四回因团园困围固国图圆圈土圣在地圳场址均坊坎坏坐坑块坚坛坞坟坠坡坦坷垄型垢埋城埔域培基堂堆堑堡堤堪堵塌塑塔塘塞填境墓墙增墨壁士壮声壳壶处备复夏夕外多夜够大天太夫失头夸夹夺奇奈奋奏奖套奢女奶奸她好如妄妇妈妒妙妥妨妹妻始姐姑姓委姨姿威娃娜娱婆媒媚嫁嫉嫌嫖嫩子孔字存季孤学孩宁它守安宋完宏宗官定宛宜宝实宠审客宣室宫宰害宵家容宽宾宿寂寄密寇富寒寓寝察寸对寺寻导寿封射将尉尊小少尔尖尘尝尤尬就尴尸尺尼尽尾局层居屈届屋屎屏屑展属屠屯山岁岂岔岖岗岛岸峨峰崎崩嵌巍川州工左巧巨差己已巴巷巾币市布师希帖帘带帧帮常帽幅幕幢干平年并幸幺幻幼幽广庄庆床序库应底店度座庭庶康庸延建廿开异弃弄弈弊式引弟张弥弯弱弹强归当录形彩彰影彻彼往征径待很律徐徒得徙御循微德心必忆忍忐忑志忘忙忧快念忽怀态怎怒怔怕思怠怡急怦性怨怪怯总怼恋恍恐恒恢恨恩恭息恰恶恼悄悉悍悔悖悚悟患悦您悬悲情惊惑惕惜惠惧惨惫惬惯惰想惹愁愈愉意愚感愣愤愧愿慎慕慢慨憧憨憬憾懂懈懑懒懦懵戏成我或战戚截戳戴户戾房所扇手才扎扑打扔托扣执扩扫扬扰批扼找承技抄抉把抑抓投抖抗折抛抢护报抬抱抵抹抽担拆拉拌拍拒拓拔拖拘拙招拜拟拥拦拧拨择括拳拼拽拾拿持挂指按挑挖挚挡挣挤挥挨挫振挺捉捏捕捞损捡换捧据捷掂授掉掌掐排探接控推掩措掰掺描提插握揣揭搁搏搓搜搞搬搭携摁摄摆摇摊摔摘摧摩摸撑撒撞撤播撰撸撼擅操擎擦攒支收改攻放政故效敌敏救教敛敞敢散敬数敲整敷文斑斗料斜斥斧斩断斯新方施旁旅族旗无既日旦旧旨早旬时旷明易星映春昨是昵昼显晃晒晕晚晦晨普景晰晶智暂暇暑暖暗暴曦曲更曾替最月有朋服望朝期朦木未末本术朴朵机杀杂权杆李杏材村杜束杠条来杨杭杯東松板极构析枕林枚果枪枫枯架某柒染柔柜查柯柳柴柿栀标栈栋栏树校样核根格栽桂桃框案桌桑档桥桶梁梦梯械梳检棉棒棘棚森棵椅植椒楚楼概榜槛槽樊模横橙欠次欢欣欧欲欺款歉歌止正此步武歪死殉殊残段殿毁毅毋母每毒比毕毛毫氏民气氛氧水永汁求汇汉汕汗江池污汤汪汲沉沙沟没沦沮河油治沾沿泄泉泌法泛泡波泣泥注泪泯泳泽洁洋洒洗洛洞津洪洲活派流浅浇测济浏浑浓浪浮浴海浸涂消涉润涨涩涯液涵淀淋淘淡淫深淳混添清渐渗渠渡温港渲渴游湖湘湾湿溃源溢溯滋滑滚滞满滤滥滴漂漏漓演漫漱潘潜潦潭潮澎澡澳激瀑火灭灯灰灵灾炉炎炒炕炫炮炸点炼烁烂烈烟烤烦烧烫热烽焉焕焖焦然煌煎照煲熄熊熙熟熬熵燥爆爬爱父爷爸爽片版牌牙牛物牲牵特牺犊犯状犹狂狗狠独狱狼猛猜猝猫献猴玄率玉王玛玩环现玻珍珠班球理琐琢瑞璃瓜瓢瓦瓶甚甜生甥用甩田由甲申电男画畅界留略番畴疏疑疗疙疫疮疯疲疼疾病症痍痒痕痘痛痪瘦瘩瘫瘾癌登白百的皇皑皮盆盈益监盒盖盗盘盛盟目盯盲直相盼盾省眉看真眠眩眶眼着睁睛睡督睹睿瞅瞎瞥瞬矛知矩短石矿码砌砍研砖砥破砺础硅硌硬确碌碍碎碑碗碰磁磨示礼社祖祝神票祸禁福离秀私秉秋种科秒租积称移稀程稍税稚稳稿究穷空穿突窃窄窒窗窝立站竞竟章童Line truncated
Binary file not shown.
Binary file not shown.