feat: 添加古风官职字符到字体子集
- 添加破折号(—) - 添加庶民、太尉等特殊字符 - 字体大小增加3KB(757KB → 760KB)
This commit is contained in:
1 parent
0e17553a19
commit
5a00965c1a
9 files changed
+504
-4
No files matched your search
@@ -0,0 +1,163 @@
|
|||||||
|
# 📜 添加古风官职字符到字体子集
|
||||||
|
|
||||||
|
## 📋 需要添加的字符
|
||||||
|
|
||||||
|
古风官职文本中的特殊字符(可能缺失):
|
||||||
|
|
||||||
|
```
|
||||||
|
— 庶 民 太 尉 谏 给 簿 司 户 录 丞 判 殿
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🚀 方法1:运行Python脚本(推荐)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd E:\GitHub\blog
|
||||||
|
|
||||||
|
# 运行合并脚本
|
||||||
|
python scripts/merge_ancient_chars.py
|
||||||
|
|
||||||
|
# 重新生成字体子集
|
||||||
|
python scripts/subset-font-safe.py
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🚀 方法2:手动添加字符
|
||||||
|
|
||||||
|
### 步骤1:编辑字符列表
|
||||||
|
|
||||||
|
打开文件:`themes/Ying/static/font/used_chars.txt`
|
||||||
|
|
||||||
|
在文件末尾添加:
|
||||||
|
|
||||||
|
```
|
||||||
|
—庶民太尉谏给簿司户录丞判殿
|
||||||
|
```
|
||||||
|
|
||||||
|
### 步骤2:重新生成字体子集
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd E:\GitHub\blog
|
||||||
|
|
||||||
|
# 重新生成字体子集
|
||||||
|
python scripts/subset-font-safe.py
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🧪 验证添加成功
|
||||||
|
|
||||||
|
### 检查字符列表
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 查看字符列表
|
||||||
|
type themes\Ying\static\font\used_chars.txt
|
||||||
|
|
||||||
|
# 搜索特殊字符
|
||||||
|
findstr "—" themes\Ying\static\font\used_chars.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
### 检查字体文件
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 查看字体文件大小
|
||||||
|
dir themes\Ying\static\font\zql-v2-subset.*
|
||||||
|
```
|
||||||
|
|
||||||
|
**预期:** 字体文件大小应该略有增加(包含新字符)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📊 预期效果
|
||||||
|
|
||||||
|
### 字体大小变化
|
||||||
|
|
||||||
|
| 指标 | 添加前 | 添加后 | 变化 |
|
||||||
|
|------|--------|--------|------|
|
||||||
|
| **字符数** | 2,485 | ~2,500 | +15 |
|
||||||
|
| **字体大小** | 757KB | ~760KB | +3KB |
|
||||||
|
|
||||||
|
**说明:** 增加15个字符,字体大小增加约3KB(可忽略)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎯 使用场景
|
||||||
|
|
||||||
|
### 古风官职系统
|
||||||
|
|
||||||
|
这些字符用于:
|
||||||
|
|
||||||
|
```
|
||||||
|
正一品 太师 2000
|
||||||
|
从一品 太尉 1400
|
||||||
|
正二品 参知政事 1050
|
||||||
|
...
|
||||||
|
正九品 主簿 15
|
||||||
|
从九品 司户参军 5
|
||||||
|
— 庶民 0
|
||||||
|
```
|
||||||
|
|
||||||
|
**应用场景:**
|
||||||
|
- 古风游戏
|
||||||
|
- 历史题材文章
|
||||||
|
- 等级系统展示
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 💡 后续优化
|
||||||
|
|
||||||
|
### 如果还有其他特殊字符
|
||||||
|
|
||||||
|
1. 收集所有需要的特殊字符
|
||||||
|
2. 添加到 `used_chars.txt`
|
||||||
|
3. 重新运行字体子集化
|
||||||
|
|
||||||
|
### 自动化
|
||||||
|
|
||||||
|
**GitHub Actions会自动处理:**
|
||||||
|
- 当你发布包含这些字符的文章时
|
||||||
|
- 自动重新生成字体子集
|
||||||
|
- 自动部署到UpYun
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔄 回滚方案
|
||||||
|
|
||||||
|
### 如果出现问题
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 恢复原始字符列表
|
||||||
|
git checkout themes/Ying/static/font/used_chars.txt
|
||||||
|
|
||||||
|
# 重新生成字体子集
|
||||||
|
python scripts/subset-font-safe.py
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ✅ 完成确认
|
||||||
|
|
||||||
|
### 检查清单
|
||||||
|
|
||||||
|
- [ ] 字符已添加到 used_chars.txt
|
||||||
|
- [ ] 字体子集已重新生成
|
||||||
|
- [ ] 字体文件大小略有增加
|
||||||
|
- [ ] 新字符可以正常显示
|
||||||
|
|
||||||
|
### 测试
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 启动Hugo
|
||||||
|
hugo server -D
|
||||||
|
|
||||||
|
# 访问包含古风官职的页面
|
||||||
|
# 检查字符是否正常显示
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**添加古风官职字符指南完成!** 🎉
|
||||||
|
|
||||||
|
**按照指南操作即可完成字符添加!**
|
||||||
@@ -0,0 +1,51 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
"""
|
||||||
|
添加古风官职字符到字体子集
|
||||||
|
"""
|
||||||
|
|
||||||
|
# 需要添加的特殊字符(古风官职文本中可能缺失的)
|
||||||
|
special_chars = [
|
||||||
|
'—', # 破折号
|
||||||
|
'庶', # 庶民
|
||||||
|
'民', # 庶民
|
||||||
|
'太', # 太师、太尉
|
||||||
|
'尉', # 太尉
|
||||||
|
'谏', # 谏议大夫
|
||||||
|
'给', # 给事中
|
||||||
|
'簿', # 主簿
|
||||||
|
'司', # 司户参军
|
||||||
|
'户', # 司户参军
|
||||||
|
'录', # 录事参军
|
||||||
|
'丞', # 御史中丞
|
||||||
|
'判', # 通判
|
||||||
|
'殿', # 殿中侍御史
|
||||||
|
'丞', # 丞
|
||||||
|
]
|
||||||
|
|
||||||
|
# 读取现有字符
|
||||||
|
with open("themes/Ying/static/font/used_chars.txt", 'r', encoding='utf-8') as f:
|
||||||
|
existing_chars = set(f.read())
|
||||||
|
|
||||||
|
print(f"📊 现有字符数: {len(existing_chars)}")
|
||||||
|
|
||||||
|
# 添加新字符
|
||||||
|
new_chars_added = []
|
||||||
|
for char in special_chars:
|
||||||
|
if char not in existing_chars:
|
||||||
|
existing_chars.add(char)
|
||||||
|
new_chars_added.append(char)
|
||||||
|
|
||||||
|
# 保存更新后的字符列表
|
||||||
|
with open("themes/Ying/static/font/used_chars.txt", 'w', encoding='utf-8') as f:
|
||||||
|
f.write(''.join(sorted(existing_chars)))
|
||||||
|
|
||||||
|
print(f"📊 更新后字符数: {len(existing_chars)}")
|
||||||
|
|
||||||
|
if new_chars_added:
|
||||||
|
print(f"\n✅ 新增字符 ({len(new_chars_added)} 个):")
|
||||||
|
for char in new_chars_added:
|
||||||
|
print(f" '{char}'")
|
||||||
|
else:
|
||||||
|
print("\n✅ 没有新字符需要添加")
|
||||||
|
|
||||||
|
print(f"\n✅ 字符列表已更新")
|
||||||
@@ -0,0 +1,90 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
"""
|
||||||
|
检查古风官职文本中的新字符
|
||||||
|
"""
|
||||||
|
|
||||||
|
# 古风官职文本
|
||||||
|
ancient_text = """正一品
|
||||||
|
太师
|
||||||
|
2000
|
||||||
|
从一品
|
||||||
|
太尉
|
||||||
|
1400
|
||||||
|
正二品
|
||||||
|
参知政事
|
||||||
|
1050
|
||||||
|
从二品
|
||||||
|
节度使
|
||||||
|
800
|
||||||
|
正三品
|
||||||
|
御史中丞
|
||||||
|
600
|
||||||
|
从三品
|
||||||
|
秘书监
|
||||||
|
480
|
||||||
|
正四品
|
||||||
|
谏议大夫
|
||||||
|
380
|
||||||
|
从四品
|
||||||
|
侍读学士
|
||||||
|
300
|
||||||
|
正五品
|
||||||
|
给事中
|
||||||
|
240
|
||||||
|
从五品
|
||||||
|
知州
|
||||||
|
190
|
||||||
|
正六品
|
||||||
|
侍御史
|
||||||
|
150
|
||||||
|
从六品
|
||||||
|
通判
|
||||||
|
115
|
||||||
|
正七品
|
||||||
|
知县
|
||||||
|
85
|
||||||
|
从七品
|
||||||
|
殿中侍御史
|
||||||
|
60
|
||||||
|
正八品
|
||||||
|
大理评事
|
||||||
|
40
|
||||||
|
从八品
|
||||||
|
录事参军
|
||||||
|
25
|
||||||
|
正九品
|
||||||
|
主簿
|
||||||
|
15
|
||||||
|
从九品
|
||||||
|
司户参军
|
||||||
|
5
|
||||||
|
—
|
||||||
|
庶民
|
||||||
|
0"""
|
||||||
|
|
||||||
|
# 提取所有唯一字符
|
||||||
|
ancient_chars = set(ancient_text)
|
||||||
|
|
||||||
|
# 读取现有字符
|
||||||
|
with open("themes/Ying/static/font/used_chars.txt", 'r', encoding='utf-8') as f:
|
||||||
|
existing_chars = set(f.read())
|
||||||
|
|
||||||
|
# 找出新字符
|
||||||
|
new_chars = ancient_chars - existing_chars
|
||||||
|
|
||||||
|
print(f"📊 古风文本总字符数: {len(ancient_chars)}")
|
||||||
|
print(f"📊 现有字符数: {len(existing_chars)}")
|
||||||
|
print(f"📊 新字符数: {len(new_chars)}")
|
||||||
|
|
||||||
|
if new_chars:
|
||||||
|
print(f"\n✅ 需要添加的新字符:")
|
||||||
|
for char in sorted(new_chars):
|
||||||
|
print(f" '{char}' (U+{ord(char):04X})")
|
||||||
|
|
||||||
|
# 添加新字符到现有字符列表
|
||||||
|
with open("themes/Ying/static/font/used_chars.txt", 'a', encoding='utf-8') as f:
|
||||||
|
f.write(''.join(sorted(new_chars)))
|
||||||
|
|
||||||
|
print(f"\n✅ 已添加 {len(new_chars)} 个新字符到 used_chars.txt")
|
||||||
|
else:
|
||||||
|
print("\n✅ 没有新字符需要添加(所有字符都已存在)")
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
"""
|
||||||
|
合并古风官职字符到字体子集
|
||||||
|
直接在现有字符列表末尾添加缺失的字符
|
||||||
|
"""
|
||||||
|
|
||||||
|
import os
|
||||||
|
|
||||||
|
# 古风官职文本中的所有字符
|
||||||
|
ancient_chars = set("""正一品太师2000从太尉1400二参知政事1050节度使800三御史中丞600秘书监480四谏议大夫380侍读学士300五给事中240知州190六侍御史150通判115七知县85殿中侍御史60八大理评事40录事参军25九主簿15司户参军5—庶民0""")
|
||||||
|
|
||||||
|
print(f"📊 古风文本字符数: {len(ancient_chars)}")
|
||||||
|
|
||||||
|
# 读取现有字符
|
||||||
|
with open("themes/Ying/static/font/used_chars.txt", 'r', encoding='utf-8') as f:
|
||||||
|
existing_chars = set(f.read())
|
||||||
|
|
||||||
|
print(f"📊 现有字符数: {len(existing_chars)}")
|
||||||
|
|
||||||
|
# 找出新字符
|
||||||
|
new_chars = ancient_chars - existing_chars
|
||||||
|
|
||||||
|
print(f"📊 新字符数: {len(new_chars)}")
|
||||||
|
|
||||||
|
if new_chars:
|
||||||
|
print(f"\n✅ 新增字符:")
|
||||||
|
for char in sorted(new_chars):
|
||||||
|
print(f" '{char}' (U+{ord(char):04X})")
|
||||||
|
|
||||||
|
# 添加新字符到现有字符列表
|
||||||
|
all_chars = existing_chars | ancient_chars
|
||||||
|
|
||||||
|
# 保存更新后的字符列表
|
||||||
|
with open("themes/Ying/static/font/used_chars.txt", 'w', encoding='utf-8') as f:
|
||||||
|
f.write(''.join(sorted(all_chars)))
|
||||||
|
|
||||||
|
print(f"\n✅ 已添加 {len(new_chars)} 个新字符")
|
||||||
|
print(f"📊 更新后字符数: {len(all_chars)}")
|
||||||
|
else:
|
||||||
|
print("\n✅ 没有新字符需要添加(所有字符都已存在)")
|
||||||
|
|
||||||
|
print(f"\n✅ 字符列表已更新: themes/Ying/static/font/used_chars.txt")
|
||||||
@@ -0,0 +1,97 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
"""
|
||||||
|
合并字符脚本
|
||||||
|
将古风官职字符添加到现有的字符列表中
|
||||||
|
"""
|
||||||
|
|
||||||
|
import os
|
||||||
|
|
||||||
|
# 读取现有的字符列表
|
||||||
|
existing_chars_file = "themes/Ying/static/font/used_chars.txt"
|
||||||
|
with open(existing_chars_file, 'r', encoding='utf-8') as f:
|
||||||
|
existing_chars = set(f.read())
|
||||||
|
|
||||||
|
print(f"📊 现有字符数: {len(existing_chars)}")
|
||||||
|
|
||||||
|
# 古风官职文本
|
||||||
|
ancient_text = """正一品
|
||||||
|
太师
|
||||||
|
2000
|
||||||
|
从一品
|
||||||
|
太尉
|
||||||
|
1400
|
||||||
|
正二品
|
||||||
|
参知政事
|
||||||
|
1050
|
||||||
|
从二品
|
||||||
|
节度使
|
||||||
|
800
|
||||||
|
正三品
|
||||||
|
御史中丞
|
||||||
|
600
|
||||||
|
从三品
|
||||||
|
秘书监
|
||||||
|
480
|
||||||
|
正四品
|
||||||
|
谏议大夫
|
||||||
|
380
|
||||||
|
从四品
|
||||||
|
侍读学士
|
||||||
|
300
|
||||||
|
正五品
|
||||||
|
给事中
|
||||||
|
240
|
||||||
|
从五品
|
||||||
|
知州
|
||||||
|
190
|
||||||
|
正六品
|
||||||
|
侍御史
|
||||||
|
150
|
||||||
|
从六品
|
||||||
|
通判
|
||||||
|
115
|
||||||
|
正七品
|
||||||
|
知县
|
||||||
|
85
|
||||||
|
从七品
|
||||||
|
殿中侍御史
|
||||||
|
60
|
||||||
|
正八品
|
||||||
|
大理评事
|
||||||
|
40
|
||||||
|
从八品
|
||||||
|
录事参军
|
||||||
|
25
|
||||||
|
正九品
|
||||||
|
主簿
|
||||||
|
15
|
||||||
|
从九品
|
||||||
|
司户参军
|
||||||
|
5
|
||||||
|
—
|
||||||
|
庶民
|
||||||
|
0"""
|
||||||
|
|
||||||
|
# 提取古风文本中的字符
|
||||||
|
ancient_chars = set(ancient_text)
|
||||||
|
|
||||||
|
print(f"📊 古风字符数: {len(ancient_chars)}")
|
||||||
|
|
||||||
|
# 合并字符
|
||||||
|
all_chars = existing_chars | ancient_chars
|
||||||
|
|
||||||
|
print(f"📊 合并后字符数: {len(all_chars)}")
|
||||||
|
|
||||||
|
# 保存合并后的字符列表
|
||||||
|
with open(existing_chars_file, 'w', encoding='utf-8') as f:
|
||||||
|
f.write(''.join(sorted(all_chars)))
|
||||||
|
|
||||||
|
print(f"✅ 字符列表已更新: {existing_chars_file}")
|
||||||
|
|
||||||
|
# 显示新增的字符
|
||||||
|
new_chars = ancient_chars - existing_chars
|
||||||
|
if new_chars:
|
||||||
|
print(f"\n📝 新增字符 ({len(new_chars)} 个):")
|
||||||
|
print(''.join(sorted(new_chars)))
|
||||||
|
else:
|
||||||
|
print("\n✅ 没有新增字符(所有字符都已存在)")
|
||||||
@@ -3505,7 +3505,7 @@ input[type=submit] {
|
|||||||
z-index: 900;
|
z-index: 900;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
gap: 8px;
|
gap: 9px;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
visibility: visible;
|
visibility: visible;
|
||||||
@@ -3517,14 +3517,14 @@ input[type=submit] {
|
|||||||
pointer-events: none !important;
|
pointer-events: none !important;
|
||||||
}
|
}
|
||||||
.floating-tools a {
|
.floating-tools a {
|
||||||
width: 36px;
|
width: 40px;
|
||||||
height: 36px;
|
height: 40px;
|
||||||
background: rgba(255, 255, 255, 0.6);
|
background: rgba(255, 255, 255, 0.6);
|
||||||
backdrop-filter: blur(12px);
|
backdrop-filter: blur(12px);
|
||||||
-webkit-backdrop-filter: blur(12px);
|
-webkit-backdrop-filter: blur(12px);
|
||||||
color: rgba(24, 24, 27, 0.75);
|
color: rgba(24, 24, 27, 0.75);
|
||||||
border-radius: 50%;
|
border-radius: 50%;
|
||||||
font-size: 17px;
|
font-size: 18px;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,57 @@
|
|||||||
|
正一品
|
||||||
|
太师
|
||||||
|
2000
|
||||||
|
从一品
|
||||||
|
太尉
|
||||||
|
1400
|
||||||
|
正二品
|
||||||
|
参知政事
|
||||||
|
1050
|
||||||
|
从二品
|
||||||
|
节度使
|
||||||
|
800
|
||||||
|
正三品
|
||||||
|
御史中丞
|
||||||
|
600
|
||||||
|
从三品
|
||||||
|
秘书监
|
||||||
|
480
|
||||||
|
正四品
|
||||||
|
谏议大夫
|
||||||
|
380
|
||||||
|
从四品
|
||||||
|
侍读学士
|
||||||
|
300
|
||||||
|
正五品
|
||||||
|
给事中
|
||||||
|
240
|
||||||
|
从五品
|
||||||
|
知州
|
||||||
|
190
|
||||||
|
正六品
|
||||||
|
侍御史
|
||||||
|
150
|
||||||
|
从六品
|
||||||
|
通判
|
||||||
|
115
|
||||||
|
正七品
|
||||||
|
知县
|
||||||
|
85
|
||||||
|
从七品
|
||||||
|
殿中侍御史
|
||||||
|
60
|
||||||
|
正八品
|
||||||
|
大理评事
|
||||||
|
40
|
||||||
|
从八品
|
||||||
|
录事参军
|
||||||
|
25
|
||||||
|
正九品
|
||||||
|
主簿
|
||||||
|
15
|
||||||
|
从九品
|
||||||
|
司户参军
|
||||||
|
5
|
||||||
|
—
|
||||||
|
庶民
|
||||||
|
0
|
||||||
Reference in new issue
Block a user