diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index aa9ca76..af85fb4 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -7,19 +7,12 @@ jobs:
buildotf:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- name: Install afdko
run: pip3 install afdko
- name: Begin
run: python3 ./build/buildotf.py
- - uses: actions/upload-artifact@v3
- with:
- name: AdvocateAncientOTFs
- path: |
- *.7z
- *.zip
-
- name: Upload to release
uses: ncipollo/release-action@v1
with:
@@ -32,12 +25,19 @@ jobs:
prerelease: true
draft: true
name: "Build Test"
- body: "Advocate Ancient"
+ body: "Shanggu"
+
+ - uses: actions/upload-artifact@v4
+ with:
+ name: ShangguOTFs
+ path: |
+ *.7z
+ *.zip
buildttf:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- name: Install afdko
run: pip3 install afdko
- name: Install wine
@@ -45,11 +45,6 @@ jobs:
- name: Begin
run: python3 ./build/buildttf.py
- - uses: actions/upload-artifact@v3
- with:
- name: AdvocateAncientTTFs
- path: "*.7z"
-
- name: Upload to release
uses: ncipollo/release-action@v1
with:
@@ -60,22 +55,22 @@ jobs:
prerelease: true
draft: true
name: "Build Test"
- body: "Advocate Ancient"
+ body: "Shanggu"
+
+ - uses: actions/upload-artifact@v4
+ with:
+ name: ShangguTTFs
+ path: "*.7z"
buildvf:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- name: Install afdko
run: pip3 install afdko
- name: Begin
run: python3 ./build/buildvf.py
- - uses: actions/upload-artifact@v3
- with:
- name: AdvocateAncientVFs
- path: "*.7z"
-
- name: Upload to release
uses: ncipollo/release-action@v1
with:
@@ -86,12 +81,17 @@ jobs:
prerelease: true
draft: true
name: "Build Test"
- body: "Advocate Ancient"
+ body: "Shanggu"
+
+ - uses: actions/upload-artifact@v4
+ with:
+ name: ShangguVFs
+ path: "*.7z"
buildrd:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- name: Install afdko
run: pip3 install afdko
@@ -108,10 +108,10 @@ jobs:
prerelease: true
draft: true
name: "Build Test"
- body: "Advocate Ancient"
+ body: "Shanggu"
- - uses: actions/upload-artifact@v3
+ - uses: actions/upload-artifact@v4
with:
- name: AdvocateAncientRounded
+ name: ShangguRound
path: "*.7z"
diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml
index 688991d..465f021 100644
--- a/.github/workflows/stale.yml
+++ b/.github/workflows/stale.yml
@@ -12,5 +12,5 @@ jobs:
with:
stale-issue-message: 'This issue is stale because it has been open 60 days with no activity. Remove stale label or comment or this will be closed in 15 days.'
days-before-stale: 60
- days-before-close: 15
+ days-before-close: 10
close-issue-reason: completed
diff --git a/README-SC.md b/README-SC.md
index 8b4944c..855c829 100644
--- a/README-SC.md
+++ b/README-SC.md
@@ -1,33 +1,33 @@
-[正體中文](../../#advocate-ancient-fonts) **简体中文**
+[正體中文](../../#shanggu-fonts) **简体中文**
-# Advocate Ancient Fonts
-一套开源泛中日韩字体,基于[思源黑体](https://github.com/adobe-fonts/source-han-sans)、[思源宋体](https://github.com/adobe-fonts/source-han-serif)、[思源等宽](https://github.com/adobe-fonts/source-han-mono)以及思源系列衍生字体。本开源项目提供了多种不同风格、不同格式的字体以满足不同需要,本项目还提供了创建这些字体时的所有源代码。
+# Shanggu Fonts
+一套泛中日韩字体,基于[思源黑体](https://github.com/adobe-fonts/source-han-sans)、[思源宋体](https://github.com/adobe-fonts/source-han-serif)、[思源等宽](https://github.com/adobe-fonts/source-han-mono)以及思源系列衍生字体制作,包含黑体、明体、圆体以及简转繁字体。
## 预览
![image](./pictures/Pic0001.png)
![image](./pictures/Pic0002.jpg)
## 关于字体
### 说明
-本项目字体名称为“ **尚古 Advocate Ancient Fonts** ”。
-#### 1. [多编码汉字](./main/configs/mulcodechar.dt)(如青-靑 尚-尙 兑-兌 温-溫等)合并为旧字形
-> Advocate Ancient Sans | 尙古黑体 | 尙古黑體,
-> Advocate Ancient Serif | 尙古明体 | 尙古明體,
-> Advocate Ancient Mono | 尙古等宽 | 尙古等寬。
-#### 2. 多编码汉字分开编码
+本项目字体名称为“ **尚古 Shanggu Fonts** ”, *旧名称为“ Advocate Ancient Fonts ”*。
+#### 1. [新旧异体字](./main/configs/mulcodechar.dt)(如青-靑 尚-尙 兑-兌 温-溫等)合并为旧字形
+> Shanggu Sans | 尙古黑体 | 尙古黑體,
+> Shanggu Serif | 尙古明体 | 尙古明體,
+> Shanggu Mono | 尙古等宽 | 尙古等寬。
+#### 2. [新旧异体字](./main/configs/mulcodechar.dt)遵从 Unicode 分开编码
根据标点和简化字的不同,分为TC、SC、JP三种。
-> Advocate Ancient Sans TC | 尙古黑体TC | 尙古黑體TC,
-> Advocate Ancient Serif TC | 尙古明体TC | 尙古明體TC,
-> Advocate Ancient Mono TC | 尙古等宽TC | 尙古等寬TC
-> Advocate Ancient Sans SC | 尙古黑体SC | 尙古黑體SC,
-> Advocate Ancient Serif SC | 尙古明体SC | 尙古明體SC,
-> Advocate Ancient Mono SC | 尙古等宽SC | 尙古等寬SC,
-> Advocate Ancient Sans JP | 尙古黑体JP | 尙古黑體JP,
-> Advocate Ancient Serif JP | 尙古明体JP | 尙古明體JP,
-> Advocate Ancient Mono JP | 尙古等宽JP | 尙古等寬JP。
+> Shanggu Sans TC | 尙古黑体TC | 尙古黑體TC,
+> Shanggu Serif TC | 尙古明体TC | 尙古明體TC,
+> Shanggu Mono TC | 尙古等宽TC | 尙古等寬TC
+> Shanggu Sans SC | 尙古黑体SC | 尙古黑體SC,
+> Shanggu Serif SC | 尙古明体SC | 尙古明體SC,
+> Shanggu Mono SC | 尙古等宽SC | 尙古等寬SC,
+> Shanggu Sans JP | 尙古黑体JP | 尙古黑體JP,
+> Shanggu Serif JP | 尙古明体JP | 尙古明體JP,
+> Shanggu Mono JP | 尙古等宽JP | 尙古等寬JP。
#### 3. 简转繁体
简入繁出的字体,可根据文本内容动态匹配一简多繁的情况。
-> Advocate Ancient Sans ST | 尙古黑体 转繁体 | 尙古黑體 轉繁體,
-> Advocate Ancient Serif ST | 尙古明体 转繁体 | 尙古明體 轉繁體。
+> Shanggu Sans ST | 尙古黑体 转繁体 | 尙古黑體 轉繁體,
+> Shanggu Serif ST | 尙古明体 转繁体 | 尙古明體 轉繁體。
▼ 一简多繁测试,此功能使用 OpenType 特性。
![image](./pictures/FANTI.png)
@@ -37,14 +37,12 @@
原版格式。
#### 2. TrueType 格式(TTF/TTC)
基于 [Source-Han-TrueType](https://github.com/Pal3love/Source-Han-TrueType) 无损转换,兼容性较好。
-#### ~3. TrueType hinted (TTF/TTC)~
-~基于 [Source Han Sans TTF](https://github.com/be5invis/source-han-sans-ttf) 可实现 Windows 下低分辨率小字清晰,建议仅在 Windows 下使用。~
-#### 4. 可变字体
-包括 OpenType 和 TrueType 格式。由于资源限制,此版本未使用旧版思源黑体、思源宋体的字图。
+#### 3. 可变字体
+包括 OpenType 和 TrueType 格式。*由于资源限制,此版本未使用旧版思源黑体、思源宋体的字图。*
## 下载字体
-1. 可从本站 [Releases](https://github.com/GuiWonder/SourceHanToClassic/releases) 页面下载字体(推荐)。
-2. 可从[腾讯微云](https://share.weiyun.com/VEoOc5xK)下载 AdvocateAncient 系列字体。
+1. 可从本站 [Releases](../../releases) 页面下载字体(推荐)。
+2. 可从[腾讯微云](https://share.weiyun.com/VEoOc5xK)下载 Shanggu 字体。
## 授权
遵循 [SIL Open Font License 1.1](./LICENSE.txt)。
@@ -68,7 +66,6 @@
- [字形维基(GlyphWiki)](https://glyphwiki.org/)
#### 5. 简转繁参考
- [OpenCC 开放中文转换](https://github.com/BYVoid/OpenCC)
-#### 6. 旧版用到的工具或参考
- [《正确实现简转繁字体》](https://ayaka.shn.hk/s2tfont/)
## 关于作者
- **Email:** chunfengfly@outlook.com
diff --git a/README.md b/README.md
index 7f3142a..7df968d 100644
--- a/README.md
+++ b/README.md
@@ -1,33 +1,33 @@
-**正體中文** [简体中文](./README-SC.md#advocate-ancient-fonts)
+**正體中文** [简体中文](./README-SC.md#shanggu-fonts)
-# Advocate Ancient Fonts
-一套開放原始碼泛中日韓字型,基於[思源黑體](https://github.com/adobe-fonts/source-han-sans)、[思源宋體](https://github.com/adobe-fonts/source-han-serif)、[思源等寬](https://github.com/adobe-fonts/source-han-mono)以及思源系列衍生字型。本開放原始碼專案提供了多種不同風格、不同格式的字型以滿足不同需要,本專案還提供了建置這些字型時的所有原始碼。
+# Shanggu Fonts
+一套泛中日韓字型,基於[思源黑體](https://github.com/adobe-fonts/source-han-sans)、[思源宋體](https://github.com/adobe-fonts/source-han-serif)、[思源等寬](https://github.com/adobe-fonts/source-han-mono)以及思源系列衍生字型製作,包含黑體、明體、圓體以及簡轉繁字型。
## 預覽
![image](./pictures/Pic0001.png)
![image](./pictures/Pic0002.jpg)
## 關於字型
### 說明
-本專案字型名稱為「 **尚古 Advocate Ancient Fonts** 」 。
-#### 1. [多編碼漢字](./main/configs/mulcodechar.dt)(如青-靑 尚-尙 兑-兌 温-溫等)合併為舊字形
-> Advocate Ancient Sans | 尙古黑体 | 尙古黑體,
-> Advocate Ancient Serif | 尙古明体 | 尙古明體,
-> Advocate Ancient Mono | 尙古等宽 | 尙古等寬。
-#### 2. 多編碼漢字分開編碼
+本專案字型名稱為「 **尚古 Shanggu Fonts** 」, *舊名稱為「 Advocate Ancient Fonts 」*。
+#### 1. [新舊異體字](./main/configs/mulcodechar.dt)(如青-靑 尚-尙 兑-兌 温-溫等)合併為舊字形
+> Shanggu Sans | 尙古黑体 | 尙古黑體,
+> Shanggu Serif | 尙古明体 | 尙古明體,
+> Shanggu Mono | 尙古等宽 | 尙古等寬。
+#### 2. [新舊異體字](./main/configs/mulcodechar.dt)遵從 Unicode 分開編碼
根據標點和簡化字的不同,分為TC、SC、JP三種。
-> Advocate Ancient Sans TC | 尙古黑体TC | 尙古黑體TC,
-> Advocate Ancient Serif TC | 尙古明体TC | 尙古明體TC,
-> Advocate Ancient Mono TC | 尙古等宽TC | 尙古等寬TC
-> Advocate Ancient Sans SC | 尙古黑体SC | 尙古黑體SC,
-> Advocate Ancient Serif SC | 尙古明体SC | 尙古明體SC,
-> Advocate Ancient Mono SC | 尙古等宽SC | 尙古等寬SC,
-> Advocate Ancient Sans JP | 尙古黑体JP | 尙古黑體JP,
-> Advocate Ancient Serif JP | 尙古明体JP | 尙古明體JP,
-> Advocate Ancient Mono JP | 尙古等宽JP | 尙古等寬JP。
+> Shanggu Sans TC | 尙古黑体TC | 尙古黑體TC,
+> Shanggu Serif TC | 尙古明体TC | 尙古明體TC,
+> Shanggu Mono TC | 尙古等宽TC | 尙古等寬TC
+> Shanggu Sans SC | 尙古黑体SC | 尙古黑體SC,
+> Shanggu Serif SC | 尙古明体SC | 尙古明體SC,
+> Shanggu Mono SC | 尙古等宽SC | 尙古等寬SC,
+> Shanggu Sans JP | 尙古黑体JP | 尙古黑體JP,
+> Shanggu Serif JP | 尙古明体JP | 尙古明體JP,
+> Shanggu Mono JP | 尙古等宽JP | 尙古等寬JP。
#### 3. 簡轉繁體
簡入繁出的字型,可根據文字内容動態匹配一簡多繁的情況。
-> Advocate Ancient Sans ST | 尙古黑体 转繁体 | 尙古黑體 轉繁體,
-> Advocate Ancient Serif ST | 尙古明体 转繁体 | 尙古明體 轉繁體。
+> Shanggu Sans ST | 尙古黑体 转繁体 | 尙古黑體 轉繁體,
+> Shanggu Serif ST | 尙古明体 转繁体 | 尙古明體 轉繁體。
▼ 一簡多繁測試,此功能使用 OpenType 特性。
![image](./pictures/FANTI.png)
@@ -37,14 +37,12 @@
原版格式。
#### 2. TrueType 格式(TTF/TTC)
基於 [Source-Han-TrueType](https://github.com/Pal3love/Source-Han-TrueType) 無損轉換,兼容性較好。
-#### ~3. TrueType hinted (TTF/TTC)~
-~基於 [Source Han Sans TTF](https://github.com/be5invis/source-han-sans-ttf) 可實現 Windows 下低解析度小字清晰,建議僅在 Windows 下使用。~
-#### 4. 可變字型
-包括 OpenType 和 TrueType 格式。由於資源限制,此版本未使用舊版思源黑體、思源宋體的字圖。
+#### 3. 可變字型
+包括 OpenType 和 TrueType 格式。*由於資源限制,此版本未使用舊版思源黑體、思源宋體的字圖。*
## 下載字型
-1. 可從本站 [Releases](https://github.com/GuiWonder/SourceHanToClassic/releases) 頁面下載字型(推薦)。
-2. 可從[騰訊微雲](https://share.weiyun.com/VEoOc5xK)下載 AdvocateAncient 系列字型。
+1. 可從本站 [Releases](../../releases) 頁面下載字型(推薦)。
+2. 可從[騰訊微雲](https://share.weiyun.com/VEoOc5xK)下載 Shanggu 字型。
## 授權
遵循 [SIL Open Font License 1.1](./LICENSE.txt)。
@@ -68,7 +66,6 @@
- [字形維基(GlyphWiki)](https://glyphwiki.org/)
#### 5. 簡轉繁參考
- [OpenCC 開放中文轉換](https://github.com/BYVoid/OpenCC)
-#### 6. 舊版用到的工具或參考
- [《正確實現簡轉繁字型》](https://ayaka.shn.hk/s2tfont/hant/)
## 關於作者
- **Email:** chunfengfly@outlook.com
diff --git a/build/buildrd.py b/build/buildrd.py
index 9797eba..f7b9077 100644
--- a/build/buildrd.py
+++ b/build/buildrd.py
@@ -16,7 +16,7 @@
cfg=json.load(open('./main/configs/config.json', 'r', encoding = 'utf-8'))
fnm=cfg['fontName'].replace(' ', '')
-fod='Rounded'
+fod='Round'
step01='python3 ./main/step01.py'
step02='python3 ./main/step02.py'
diff --git a/main/configs/config.json b/main/configs/config.json
index 7311358..a3f3f99 100644
--- a/main/configs/config.json
+++ b/main/configs/config.json
@@ -1,11 +1,11 @@
{
- "fontName": "Advocate Ancient",
+ "fontName": "Shanggu",
"fontNameTC": "尙古",
"fontNameSC": "尙古",
- "fontVersion": "1.019",
+ "fontVersion": "1.020",
"fontID": "GWF ",
- "fontVURL": "https://github.com/GuiWonder/SourceHanToClassic",
- "fontCopyright": "© 2022-2024 Advocate Ancient Fonts.",
+ "fontVURL": "https://github.com/GuiWonder/Shanggu",
+ "fontCopyright": "© 2022-2024 Shanggu Fonts.",
"fontDesigner": "GuiWonder",
"fontDiscript": "Pan-CJK font"
}
diff --git a/main/configs/sourcehan10.json b/main/configs/sourcehan10.json
index b5ad72d..42852d8 100644
--- a/main/configs/sourcehan10.json
+++ b/main/configs/sourcehan10.json
@@ -1,5 +1,5 @@
{
"Sans": "䄂䌓䶯䶰㐪㐭㐯㑁㑒㑓㑹㒴㒶㓃㓜㓪㓬㔁㔓㔗㔦㔰㔱㔳㔴㔵㔼㕽㖖㖢㖫㗁㗔㗖㗫㘜㙄㙻㚆㚈㚉㚕㚻㛒㛷㜾㝇㝋㝑㝘㝙㝟㝠㝭㞪㞴㞻㞼㟜㟡㟧㟻㠉㠌㠎㠕㠝㠼㡞㡢㡣㡫㡬㡳㡽㢈㢋㢑㢕㢜㢢㢧㢴㣀㣃㣞㣠㣢㣪㤅㤠㤺㥀㥁㥐㥦㥩㥱㥲㦘㦛㦥㦶㧈㧞㧨㨋㨗㨯㨻㪉㪘㪟㪰㪽㪿㫀㫦㫨㫴㬁㬊㬝㬥㬦㬧㬶㭃㭕㭻㮵㮻㯬㰓㰞㰭㰮㰱㰸㱅㱋㱝㲊㲝㳖㳙㳵㳺㴀㴠㵒㵓㵮㵶㵼㷱㸳㹣㹲㹹㼋㼘㼼㽪㾗㿂㿋㿤䀵䁀䁈䂊䂢䂲䃍䃝䃾䄀䄇䄦䅆䆒䇊䇋䇒䇡䈞䈴䈵䉖䉜䉽䊅䊑䊢䊣䊯䊶䋁䋇䋐䋛䋨䌆䌇䌖䌞䌬䍪䏬䑑䑧䑨䑭䒔䒢䒱䓐䔵䔻䕌䕞䕶䖇䗙䗝䗟䘖䘘䘡䘱䘺䙞䚈䚬䚱䚸䛑䛕䛦䛭䛮䛱䜋䜏䜢䜬䝉䝩䝺䝿䞯䠁䢉䢗䢞䢟䢣䣩䣴䤎䤛䤝䤞䤢䤣䤤䤩䤰䤱䥃䥍䥎䥏䥢䥬䥮䥶䦇䦓䦚䦜䦾䧶䩫䪄䫓䫫䬢䭕䭰䮞䮲䯫䯬䰇䰌䰵䰺䱶䲬䲳䲾䴟䴡䶑䶬乒乓优俷偝偮偯偻傇傼僁僗僠僽儮兝刽叼吆吔吙吷呯咂咓哋唒啋啕啥喌嗦嗧嗨嘟噘嚎嚐囆囔团垒垦垺埮堸塻奰孢孻实宪尘幙幠庴忧怹恳悐惦慔扰抚抰挎挕搣摁攎敥晱暯曞杹栠栦栺梑楧榵橗歶氋沎浂渃渪湡漜潕潹澫澿濿瀱灱灴炋炓炣烅烆烌烍烒烳烴焟焨焬焺焻煂煄煍煏煔煘煟煰煼熁熂熼熽燆燤燨爃爅爏爞爣爧牊犡猼獛獳玤瑌盚眏眲瞁瞨磰磱礝稪稬笁笚笝筂筄筘筣筸箂箣篘篢篻篽篿簊簝簵粎糐肊肐肕胉胑胣脁脕脙脪脴腂腄腖腜腢腬膫臐舕艼芅芞芵苃苖苲苵苸苼茙茠茦荁荋荴莁莋莐莗莤莮莯菄菋菗鿅",
"SansTC": "㻞䭻垐尣憁漗犏",
- "Serif": "䪵剶抚禼嘜灧㐪㐭㐯㑁㑓㒴㒶㓃㓜㓪㓬㔁㔓㔗㔦㔳㔴㔵㔼㖖㖢㖫㗁㗔㗖㘜㙄㙻㚆㚕㚻㛒㛷㝇㝋㝑㝘㝙㝟㝠㝭㞪㞬㞮㞴㞺㞻㞼㞿㟒㟛㟜㟡㟧㟵㟻㠉㠌㠎㠐㠕㠖㠝㡞㡢㡣㡫㡬㡳㡽㢈㢋㢑㢕㢜㢢㢧㢴㣀㣃㣞㣠㣢㣪㣲㤅㤺㥀㥁㥦㥩㥱㥲㦘㦛㦥㦶㧈㧞㨋㨯㪟㪰㪿㫞㫦㫨㬊㬝㬥㬦㬧㬶㭃㭕㭻㮵㮻㯬㰞㰭㰮㰱㰸㱅㱋㱝㲊㲝㳖㳙㴀㴠㵒㵓㵧㵶㶓㷱㸳㹣㹹㻡㼋㼘㼼㽪㾗㿂㿋㿤䀵䁈䂊䂢䂲䃍䃝䃾䄀䄂䄇䄪䅆䅥䆁䆒䇊䇋䇒䇡䈞䈴䈵䉖䉜䉽䊑䊢䊯䊶䋁䋇䋐䋛䋨䌆䌇䌓䌖䌞䌬䍪䏬䑧䑨䑭䒔䒢䓐䔵䔻䕌䕞䖇䗙䗝䗟䘖䘘䘡䘱䘺䙞䚈䚬䚱䚸䛑䛕䛦䛭䛮䛱䜋䜏䜢䝉䝺䞯䠁䢉䢗䢞䢟䢣䣩䣴䤎䤛䤝䤤䤩䤰䤱䥃䥍䥎䥢䦇䦴䦾䧢䧶䩫䪄䫓䫫䬢䭕䭰䮞䮲䯫䯬䰇䰌䱶䲬䲳䲾䴟䴡䶑䶬䶯䶰乆亣亱仺伄伅伇伔伭佁佡佴侇侺俕俹倕倠倯倱倸偔偤偮偯偻傂傇傉傗傫僆僋僒僫僷儊儑儠儦儰儶儽儾兝兲凇凗凙凨刜刡刣刯刴刽剆剨剫剻剼劁劆劙勂勎勓勯勽匄匔匢匴匷卼厒厜厧叜吆吰吲吺呡呣呥呯呺咂咓咞咵哅哌哏哤哰哴哷哸哹唩唬唷啈啋啒啕喅喛喥喳喴嗀嗂嗍嗏嗐嗕嗠嗡嗦嗨嗺嗻嘂嘃嘕嘟噅噈噕噖噘噙噟噮噰噳噿嚁嚂嚃嚎嚖嚚嚛嚠嚯嚵嚽囇囔团囩囻囼圎圔圗圞坁坄坈坉坋坘坬坲坶坽垐垒垛垦垺垼垿埁埅埢埥埪埫埲堘堫堮堾塎塓塜塠塥塪塳塴塶塺墎墕墬墴墵墽墿壉壏壣壿奅奊奦奱奷奺奾奿妀妅妉妐妔妘妚妜妞妠妡妢妦妱妴妶妸妽妿姀姂姅姇姌姎姏姕姘姛姠姡姢姩姭姰姳姵姹姼姽姾娂娊娏娐娔娕娖娝娡娢娦娬娮娷娸娹娺娻娽娾娿婂婃婊婋婍婎婏婑婒婓婔婗婘婙婛婜婝婟婠婡婤婨婩婫婮婯婰婱婲婸婼婽媀媃媆媈媉媊媌媎媏媑媔媗媘媝媡媣媥媦媨媩媰媴媶媷媹嫀嫃嫅嫇嫊嫍嫘嫝嫞嫤嫧嫨嫬嫳嫷嫸嫹嫼嫿嬃嬄嬆嬇嬊嬍嬐嬒嬓嬔嬕嬘嬚嬞嬟嬠嬣嬤嬦嬧嬩嬫嬮嬯嬱嬵嬹嬺嬻嬽孂孄孆孇孈孊孍孎孏孬孲宒实宧宪宻寈寊寋寑寜寣寪寲寷尀尐尘尜屒屪屫屸屾岄岅岆岉岋岍岎岓岕岞岤岮岯岰岹峆峈峊峌峍峎峏峑峓峔峕峖峘峚峜峟峬峳峹峼峾峿崀崈崉崊崌崏崓崜崞崡崥崨崲崳崵崶崷崸崺崻崼嵉嵍嵏嵖嵞嵣嵦嵨嵫嵲嵴嵷嵸嵻嵼嵽嶀嶅嶉嶍嶑嶖嶘嶜嶞嶡嶣嶦嶨嶩嶪嶱嶳嶵嶻嶾巀巁巂巊巟帣帤帩帪幍幏幓幯庂庈庉庍庘庛庝庡庣庩庮庯庰庲庴庺廀廅廗廘廮廯廲弅弲彃彉彋彏彮徟徲徶徾忀忁忂忴忷怈怋怑怮怰怴怷恎恏恞恮恳恴悙悹悺惃惗惤惦惾愄愋愘愮愯愻慀慃慏慛慜慩慹憈憞憱憷憿懅懚懛懠懰懹戂戤戨戭扝扰扲抁抝抩抭抴抸拫挅挆挎挔挕挗挮挴捑捖捪捯捳捾掁掅掆掋掍掗掰揂揋揢揤揨揱搇搈搋搌搎搑搕搙搛搣搧搲搳搷搸搹搼摌摍摗摙摦摨摪摮摰摼撀撁撆撉撔撧撪撴擃擆擓擙擛擨擮擳擸擹攌攍攐攑攗攠攡攥攨攭敓敜敯敱斔斖斚斞斨斺斻旇旍旑旓旚旜旝旞旤旳昗昘昙昲昸晇暆暏暡暥暶曊曒曓曕曘曤曧朆朌朘朚朡朻杗杛杸枈枊枍枔枟柠柪柫栚栥栮栺桇桋桬桳梉梒梤梬梷棇棎棛棢棦棩棴棸椂椕椘椯椾楁楃楌楖楘楟楶榏榐榗榢榣榩榬榵榶榹榽槂槄槉槒槤槬槰槷槸槺樆樎樜橀橂橜橣橥橽檂檈檓檕檖檙檚檤檨檭檵檹檺櫀櫅櫋櫎櫏櫘櫠櫡櫣櫫櫭櫹櫾欀欁欈欔欘欙欚欜欢欥欦欩欪欭欮欰欱欳欴欼歀歂歅歈歋歏歑歕歗歜歞歶殜殝殬毊毐毑毞毤毰毺毽毾氀氖氯氰氹汅污汦沈沏沑沵泈泞泿洂洅洍洕洖洘洝洠洭洷浖浝浨浱浵浶浽涄涋涱淍淓淔淜淧淭渁渂渫渳湙湚湠湡湤湥湪湬湭湷湸溑溒溛溦溬溰溸溹溾滆滒滖滘滱滶漀漃漒漝漞漤漨漮漴漷漹漽潂潎潐潣潧潫潲澊澏澞澬澭澴澻澽濄濋濎濐濖濝濢濥濦濪濭濲濷瀄瀈瀌瀔瀖瀡瀢瀤瀥瀫瀳瀶瀽瀿灀灁灂灆灍灒灖灗灟灢灦灪灳炂炃炄炈炢炥炦炨炩炪炲炵烄烇烉烎烐烢烰烵烷烸烼焁焂焍焛焝焢焣焤焥焧焩焪焲焳焴焵煡煪煫煯煺煻熃熆熋熍熎熐熑熝熞熡熣熥熦熩熫熭熶熷熻熽燅燇燏燘燛燡燣燤燩燫燯燺爁爊爑爙爠爢爧爩牄牉牊牑牥牳牶犃犅犆犈犕犗犘犙犜犣犤犥犩犪犫犳犺犿狑狵猀猏猐猑猔猕猚猣猭猰獈獉獓獙獛獥獳獴獽獿玣玴玶珁珃珐珘珳珶琂琈琌琔琗琘琟琣琧琷瑉瑐瑖瑬瑴瑻璌璓璔璛璬璭璷璸璾瓀瓂瓄瓅瓍瓕瓗瓝瓡瓥瓬瓭瓳瓵瓹瓽瓾甀甂甇甈甉甊甏甔甝畖畮疘疛疞疦疧疪疻痋痐痥痭痵痶痷痸痻痽瘑瘔瘚瘬瘮瘱瘶瘷瘽癏癐癑癓癗癚癛癠癵癹皊皗皘皫盄盝盩盭盳眂眃眈眑眓眝眡眫眰眱眲睃睄睩睭睮睯睶睻瞇瞈瞉瞊瞏瞜瞝瞨矀矅矊矌矏矐矖矝矲砊砓砩砱砸硂硍硥硭硰硹硿碀碂碃碈碉碐碙碠碦碫磀磃磄磍磝磞磣磥磭磸礈礉礊礋礗礘礝礯礵礷礸祌祒祙祣祦祪祬祮祰祱祳祴祵祶祽禃禇禈禉禐禒禗禚禞禠禢禥禬禭禲禵禶禷秎秐秮秶秷秺稄稏稖稝穁穊穋穛穤穦穨穬穮穱穲穳穻穼窇窉窌窏窙窡窢窤窫窱窲窴窷窸竀竁竂竐竔竘竤竮竲竳竵笀笁笉笍笐笓笔笖笗笚笜笝笢笲笷笸筄筊筞筣筶筸箁箂箈箌箢箤箮箷箹箿篎篕篘篟篢篧篫篬篱篻篽篿簅簈簊簐簝簢簻簼籄籇籉籪籫籱籴粄粊粌粜粣糋糑糨糮糼糽糿紌紎紟紤紥紨紩紴紶紷紻絊絒絔絘絟絠絤絫絬絭絴絼綀綄綇綊綐綒綔綕綡綤綨綼緁緈緉緛緟緧緮緰緳緷緸緼緽緾緿縂縃縌縎縏縓縔縖縙縚縤縥縩縪縰縴縸縼繀繂繉繏繑繓繛繜繠繣繤繨繬繱繲繷繺纀纅纋纗纙罀罁罆罊罢罼羄羉羒羓羛羠羥羧羬羱羷羺羻翂翄翇翓翜翝翢翧翪翭翴耄耛耩耫耱耸聅聈聉聎聑聕聙聛聜聥聧聬聮聸聺肏肑肗肣肮肶肷胇胐胓胟脁脝脟脢脭脮脿腃腈腍腛腞腲膇膉膌膍膔膗膙膟膡膫膬膷膼臄臇臢臷舑舕舠舥舦舧舭艁艂艊艌艐艒艓艛艞艡艥艩艬艵芌芜芶苀苄苬苮苰茚茻茾荌荶荹荺荾莁莈莏莐莤莥菂菄菋菍菙菣菦菭菮菵菺菿萀萒萮萷萾葁葌葞葨蒃蒖蒘蒛蒰蒳蒵蒶蓃蓅蓘蓨蓩蓫蔅蔙蔨蔰蕂蕍蕔蕛蕬蕶蕼薒薞薡薳藌藖藛藣藧藮藱蘈蘝蘟蘠蘦蘨蘪蘫蘬蘳蘴蘷蘻蘾虉虊虋虌虥虦虪蚔蚙蚲蚺蛌蛖蛝蛪蜌蜪蜫蜬蜵蜶蜸蝁蝂蝔蝖蝛蝫蝬蝳蝽螈螊螔螚螛螝螥螷螸蟗蟨蟩蟰蟽蠀蠂蠄蠌蠳蠽蠿衇衏衦衳袃袄袊袌袎袐袓袔袡袣袥袩袬袳裦裪裬裭裿褀褃褉褛褡褣褤褳褿襊襎襑襙襥襧襩覣覤覹觓觢觺觾訆訋訙訜訧訨訮訲詙詪詴詸詽誈誎誛誜誱誴誵諁諎諣諥謉謒謲謴謸謽謿譀譋譐譝譡譤譳譵讂讈讗讘豄貀貖貗貵賐賔賩賹贂贙赸赺赼趀趃趇趉趓跉跘跠跮踃踇踒踗踛踜踿蹅蹆蹑蹖蹘蹦蹳躈躖躟躤躥躦躨躲躴躷躹躿軂軉軗軝軡軩軪軬軿輋輎輲輽轚辳边过迌迏迖迗还迧逇递逰遀遈遚遪遫遱邍邔邖邚邧邷邼郀郍郠郬郮郱郻鄃鄉鄊鄌鄏鄑鄝鄤鄪鄻鄾酁酫酼醄醏醙醝醟醹釢釫釲鈏鈚鈱鈲鉔鉕鉣鉪鉺銏銣銬鋄鋖鋚鋢鋯鋾錉錊錋錌錗錭鍓鍡鍲鎃鎄鎐鎑鎜鎥鎱鎸鏎鏏鏒鏔鏠鏣鏮鐅鐆鐑鐜鐝鐭鐷鑇鑉鑎鑐鑬鑳鑶鑹鑺镺镻镼镽閯閰閸闂闅闗阭阰阾陓陙隇隒隞隿雂雃雏雐雓雔雗雡雤雥雦雧雬雭雮雴雵雸雼雽雿霋霌霐霒霕霗霘霟霠霥霦霩霫霬霯霴霵霷霺霼霿靀靅靋靐靟靲靾鞃鞌鞎鞛鞧鞩鞻韀韂頱頶頺顜顤顮颵颽颾飬飵飷飸飹飺飿餀餆餋餥餩饄饏饚饝馚馻駠駤駩騆騉騟騩騼騽驆驈驣驦驨骩骺髉髚髨髶髸髼鬇鬔鬕鬗鬞鬡鬤鬸鬾鬿魀魆魊魐魒魓魙魱魼鮁鮙鮣鮺鯋鯌鯍鯙鯼鰃鰠鰬鰴鱀鱂鱋鱌鱍鱬鱳鳻鳼鴄鴔鴖鴢鴤鴥鴧鴮鴱鴵鴹鵍鵎鵕鵧鵱鶁鶂鶈鶐鶛鶟鶢鶨鶭鶶鶷鷈鷐鷑鷛鷜鷝鷢鷷鷻鸁鸄鸆鸘麙麚麜麡麢麣麫麷黀黁黂黗黢黣黦鼁鼆鼘鼜鼝鼣鼥鼧鼨鼩鼭鼰鼳鼶齀齈齉齌齍齙齛齜齥齴齹齻齼齾龤"
+ "Serif": "䪵剶抚禼嘜灧㐪㐭㐯㑁㑓㒴㒶㓃㓜㓪㓬㔁㔓㔗㔦㔳㔴㔵㔼㖖㖢㖫㗁㗔㗖㘜㙄㙻㚆㚕㚻㛒㛷㝇㝋㝑㝘㝙㝟㝠㝭㞪㞬㞮㞴㞺㞻㞼㞿㟒㟛㟜㟡㟧㟵㟻㠉㠌㠎㠐㠕㠖㠝㡞㡢㡣㡫㡬㡳㡽㢈㢋㢑㢕㢜㢢㢧㢴㣀㣃㣞㣠㣢㣪㣲㤅㤺㥀㥁㥦㥩㥱㥲㦘㦛㦥㦶㧈㧞㨋㨯㪟㪰㪿㫞㫦㫨㬊㬝㬥㬦㬧㬶㭃㭕㭻㮵㮻㯬㰞㰭㰮㰱㰸㱅㱋㱝㲊㲝㳖㳙㴀㴠㵒㵓㵧㵶㶓㷱㸳㹣㹹㻡㼋㼘㼼㽪㾗㿂㿋㿤䀵䁈䂊䂢䂲䃍䃝䃾䄀䄂䄇䄪䅆䅥䆁䆒䇊䇋䇒䇡䈞䈴䈵䉖䉜䉽䊑䊢䊯䊶䋁䋇䋐䋛䋨䌆䌇䌓䌖䌞䌬䍪䏬䑧䑨䑭䒔䒢䓐䔵䔻䕌䕞䖇䗙䗝䗟䘖䘘䘡䘱䘺䙞䚈䚬䚱䚸䛑䛕䛦䛭䛮䛱䜋䜏䜢䝉䝺䞯䠁䢉䢗䢞䢟䢣䣩䣴䤎䤛䤝䤤䤩䤰䤱䥃䥍䥎䥢䦇䦴䦾䧢䧶䩫䪄䫓䫫䬢䭕䭰䮞䮲䯫䯬䰇䰌䱶䲬䲳䲾䴟䴡䶑䶬䶯䶰乆亣亱仺伄伅伇伔伭佁佡佴侇侺俕俹倕倠倯倱倸偔偤偮偯偻傂傇傉傗傫僆僋僒僫僷儊儑儠儦儰儶儽儾兝兲凇凗凙凨刜刡刣刯刴刽剆剨剫剻剼劁劆劙勂勎勓勯勽匄匔匢匴匷卼厒厜厧叜吆吰吲吺呡呣呥呯呺咂咓咞咵哅哌哏哤哰哴哷哸哹唩唬唷啈啋啒啕喅喛喥喳喴嗀嗂嗍嗏嗐嗕嗠嗡嗦嗨嗺嗻嘂嘃嘕嘟噅噈噕噖噘噙噟噮噰噳噿嚁嚂嚃嚎嚖嚚嚛嚠嚯嚵嚽囇囔团囩囻囼圎圔圗圞坁坄坈坉坋坘坬坲坶坽垐垒垛垦垺垼垿埁埅埢埥埪埫埲堘堫堮堾塎塓塜塠塥塪塳塴塶塺墎墕墬墴墵墽墿壉壏壣壿奅奊奦奱奷奺奾奿妀妅妉妐妔妘妚妜妞妠妡妢妦妱妴妶妸妽妿姀姂姅姇姌姎姏姕姘姛姠姡姢姩姭姰姳姵姹姼姽姾娂娊娏娐娔娕娖娝娡娢娦娬娮娷娸娹娺娻娽娾娿婂婃婊婋婍婎婏婑婒婓婔婗婘婙婛婜婝婟婠婡婤婨婩婫婮婯婰婱婲婸婼婽媀媃媆媈媉媊媌媎媏媑媔媗媘媝媡媣媥媦媨媩媰媴媶媷媹嫀嫃嫅嫇嫊嫍嫘嫝嫞嫤嫧嫨嫬嫳嫷嫸嫹嫼嫿嬃嬄嬆嬇嬊嬍嬐嬒嬓嬔嬕嬘嬚嬞嬟嬠嬣嬤嬦嬧嬩嬫嬮嬯嬱嬵嬹嬺嬻嬽孂孄孆孇孈孊孍孎孏孬孲宒实宧宪宻寈寊寋寑寜寣寪寲寷尀尐尘尜屒屪屫屸屾岄岅岆岉岋岍岎岓岕岞岤岮岯岰岹峆峈峊峌峍峎峏峑峓峔峕峖峘峚峜峟峬峳峹峼峾峿崀崈崉崊崌崏崓崜崡崥崨崲崳崵崶崷崸崺崻崼嵉嵍嵏嵖嵞嵣嵦嵨嵫嵲嵴嵷嵸嵻嵼嵽嶀嶅嶉嶍嶑嶖嶘嶜嶞嶡嶣嶦嶨嶩嶪嶱嶳嶵嶻嶾巀巁巂巊巟帣帤帩帪幍幏幓幯庂庈庉庍庘庛庝庡庣庩庮庯庰庲庴庺廀廅廗廘廮廯廲弅弲彃彉彋彏彮徟徲徶徾忀忁忂忴忷怈怋怑怮怰怴怷恎恏恞恮恳恴悙悹悺惃惗惤惦惾愄愋愘愮愯愻慀慃慏慛慜慩慹憈憞憱憷憿懅懚懛懠懰懹戂戤戨戭扝扰扲抁抝抩抭抴抸拫挅挆挎挔挕挗挮挴捑捖捪捯捳捾掁掅掆掋掍掗掰揂揋揢揤揨揱搇搈搋搌搎搑搕搙搛搣搧搲搳搷搸搹搼摌摍摗摙摦摨摪摮摰摼撀撁撆撉撔撧撪撴擃擆擓擙擛擨擮擳擸擹攌攍攐攑攗攠攡攥攨攭敓敜敯敱斔斖斚斞斨斺斻旇旍旑旓旚旜旝旞旤旳昗昘昙昲昸晇暆暏暡暥暶曊曒曓曕曘曤曧朆朌朘朚朡朻杗杛杸枈枊枍枔枟柠柪柫栚栥栮栺桇桋桬桳梉梒梤梬梷棇棎棛棢棦棩棴棸椂椕椘椯椾楁楃楌楖楘楟楶榏榐榗榢榣榩榬榵榶榹榽槂槄槉槒槤槬槰槷槸槺樆樎樜橀橂橜橣橥橽檂檈檓檕檖檙檚檤檨檭檵檹檺櫀櫅櫋櫎櫏櫘櫠櫡櫣櫫櫭櫹櫾欀欁欈欔欘欙欚欜欢欥欦欩欪欭欮欰欱欳欴欼歀歂歅歈歋歏歑歕歗歜歞歶殜殝殬毊毐毑毞毤毰毺毽毾氀氖氯氰氹汅污汦沈沏沑沵泈泞泿洂洅洍洕洖洘洝洠洭洷浖浝浨浱浵浶浽涄涋涱淍淓淔淜淧淭渁渂渫渳湙湚湠湡湤湥湪湬湭湷湸溑溒溛溦溬溰溸溹溾滆滒滖滘滱滶漀漃漒漝漞漤漨漮漴漷漹漽潂潎潐潣潧潫潲澊澏澞澬澭澴澻澽濄濋濎濐濖濝濢濥濦濪濭濲濷瀄瀈瀌瀔瀖瀡瀢瀤瀥瀫瀳瀶瀽瀿灀灁灂灆灍灒灖灗灟灢灦灪灳炂炃炄炈炢炥炦炨炩炪炲炵烄烇烉烎烐烢烰烵烷烸烼焁焂焍焛焝焢焣焤焥焧焩焪焲焳焴焵煡煪煫煯煺煻熃熆熋熍熎熐熑熝熞熡熣熥熦熩熫熭熶熷熻熽燅燇燏燘燛燡燣燤燩燫燯燺爁爊爑爙爠爢爧爩牄牉牊牑牥牳牶犃犅犆犈犕犗犘犙犜犣犤犥犩犪犫犳犺犿狑狵猀猏猐猑猔猕猚猣猭猰獈獉獓獙獛獥獳獴獽獿玣玴玶珁珃珐珘珳珶琂琈琌琔琗琘琟琣琧琷瑉瑐瑖瑬瑴瑻璌璓璔璛璬璭璷璸璾瓀瓂瓄瓅瓍瓕瓗瓝瓡瓥瓬瓭瓳瓵瓹瓽瓾甀甂甇甈甉甊甏甔甝畖畮疘疛疞疦疧疪疻痋痐痥痭痵痶痷痸痻痽瘑瘔瘚瘬瘮瘱瘶瘷瘽癏癐癑癓癗癚癛癠癵癹皊皗皘皫盄盝盩盭盳眂眃眈眑眓眝眡眫眰眱眲睃睄睩睭睮睯睶睻瞇瞈瞉瞊瞏瞜瞝瞨矀矅矊矌矏矐矖矝矲砊砓砩砱砸硂硍硥硭硰硹硿碀碂碃碈碉碐碙碠碦碫磀磃磄磍磝磞磣磥磭磸礈礉礊礋礗礘礝礯礵礷礸祌祒祙祣祦祪祬祮祰祱祳祴祵祶祽禃禇禈禉禐禒禗禚禞禠禢禥禬禭禲禵禶禷秎秐秮秶秷秺稄稏稖稝穁穊穋穛穤穦穨穬穮穱穲穳穻穼窇窉窌窏窙窡窢窤窫窱窲窴窷窸竀竁竂竐竔竘竤竮竲竳竵笀笁笉笍笐笓笔笖笗笚笜笝笢笲笷笸筄筊筞筣筶筸箁箂箈箌箢箤箮箷箹箿篎篕篘篟篢篧篫篬篱篻篽篿簅簈簊簐簝簢簻簼籄籇籉籪籫籱籴粄粊粌粜粣糋糑糨糮糼糽糿紌紎紟紤紥紨紩紴紶紷紻絊絒絔絘絟絠絤絫絬絭絴絼綀綄綇綊綐綒綔綕綡綤綨綼緁緈緉緛緟緧緮緰緳緷緸緼緽緾緿縂縃縌縎縏縓縔縖縙縚縤縥縩縪縰縴縸縼繀繂繉繏繑繓繛繜繠繣繤繨繬繱繲繷繺纀纅纋纗纙罀罁罆罊罢罼羄羉羒羓羛羠羥羧羬羱羷羺羻翂翄翇翓翜翝翢翧翪翭翴耄耛耩耫耱耸聅聈聉聎聑聕聙聛聜聥聧聬聮聸聺肏肑肗肣肮肶肷胇胐胓胟脁脝脟脢脭脮脿腃腈腍腛腞腲膇膉膌膍膔膗膙膟膡膫膬膷膼臄臇臢臷舑舕舠舥舦舧舭艁艂艊艌艐艒艓艛艞艡艥艩艬艵芌芜芶苀苄苬苮苰茚茻茾荌荶荹荺荾莁莈莏莐莤莥菂菄菋菍菙菣菦菭菮菵菺菿萀萒萮萷萾葁葌葞葨蒃蒖蒘蒛蒰蒳蒵蒶蓃蓅蓘蓨蓩蓫蔅蔙蔨蔰蕂蕍蕔蕛蕬蕶蕼薒薞薡薳藌藖藛藣藧藮藱蘈蘝蘟蘠蘦蘨蘪蘫蘬蘳蘴蘷蘻蘾虉虊虋虌虥虦虪蚔蚙蚲蚺蛌蛖蛝蛪蜌蜪蜫蜬蜵蜶蜸蝁蝂蝔蝖蝛蝫蝬蝳蝽螈螊螔螚螛螝螥螷螸蟗蟨蟩蟰蟽蠀蠂蠄蠌蠳蠽蠿衇衏衦衳袃袄袊袌袎袐袓袔袡袣袥袩袬袳裦裪裬裭裿褀褃褉褛褡褣褤褳褿襊襎襑襙襥襧襩覣覤覹觓觢觺觾訆訋訙訜訧訨訮訲詙詪詴詸詽誈誎誛誜誱誴誵諁諎諣諥謉謒謲謴謸謽謿譀譋譐譝譡譤譳譵讂讈讗讘豄貀貖貗貵賐賔賩賹贂贙赸赺赼趀趃趇趉趓跉跘跠跮踃踇踒踗踛踜踿蹅蹆蹑蹖蹘蹦蹳躈躖躟躤躥躦躨躲躴躷躹躿軂軉軗軝軡軩軪軬軿輋輎輲輽轚辳边过迌迏迖迗还迧逇递逰遀遈遚遪遫遱邍邔邖邚邧邷邼郀郍郠郬郮郱郻鄃鄉鄊鄌鄏鄑鄝鄤鄪鄻鄾酁酫酼醄醏醙醝醟醹釢釫釲鈏鈚鈱鈲鉔鉕鉣鉪鉺銏銣銬鋄鋖鋚鋢鋯鋾錉錊錋錌錗錭鍓鍡鍲鎃鎄鎐鎑鎜鎥鎱鎸鏎鏏鏒鏔鏠鏣鏮鐅鐆鐑鐜鐝鐭鐷鑇鑉鑎鑐鑬鑳鑶鑹鑺镺镻镼镽閯閰閸闂闅闗阭阰阾陓陙隇隒隞隿雂雃雏雐雓雔雗雡雤雥雦雧雬雭雮雴雵雸雼雽雿霋霌霐霒霕霗霘霟霠霥霦霩霫霬霯霴霵霷霺霼霿靀靅靋靐靟靲靾鞃鞌鞎鞛鞧鞩鞻韀韂頱頶頺顜顤顮颵颽颾飬飵飷飸飹飺飿餀餆餋餥餩饄饏饚饝馚馻駠駤駩騆騉騟騩騼騽驆驈驣驦驨骩骺髉髚髨髶髸髼鬇鬔鬕鬗鬞鬡鬤鬸鬾鬿魀魆魊魐魒魓魙魱魼鮁鮙鮣鮺鯋鯌鯍鯙鯼鰃鰠鰬鰴鱀鱂鱋鱌鱍鱬鱳鳻鳼鴄鴔鴖鴢鴤鴥鴧鴮鴱鴵鴹鵍鵎鵕鵧鵱鶁鶂鶈鶐鶛鶟鶢鶨鶭鶶鶷鷈鷐鷑鷛鷜鷝鷢鷷鷻鸁鸄鸆鸘麙麚麜麡麢麣麫麷黀黁黂黗黢黣黦鼁鼆鼘鼜鼝鼣鼥鼧鼨鼩鼭鼰鼳鼶齀齈齉齌齍齙齛齜齥齴齹齻齼齾龤"
}
\ No newline at end of file
diff --git a/main/configs/stonem.dt b/main/configs/stonem.dt
index 4689083..17e741a 100644
--- a/main/configs/stonem.dt
+++ b/main/configs/stonem.dt
@@ -81,6 +81,10 @@
发-髮 头白黑毛秀 发 明 显星明年月日天早晚夜
发-發 上下里外前後舌骨喉馒窝石兆床针罐菸泊山芋口鼻风捕斧船车墙浪桥锄乳额眉村砖鸡鸭鹅狗猫牛奶马羊蛇龟驴虎豹狼猴猪龙木源开盡鐘 头 发
发-發 发 现展生言布表起球抖笑达光声售威薪火稿糕紫慌送骚麻作挥软硬射兵奖奉奋函动刊回胀芽春病癫情炎明扬霉亮痒懵
+发-發 发 小 礼财孩姐
+发-發 发 小 广廣 告
+发-發 发 小 卡 片
+发-發 发 小 作 品
发-發 开萌愈愤触引告奋延挥暴揭病突爆蒸诱 发
发-髮 头白黑洗理剪长短假毛髦剃润束削绾垂梳染鹤毫结皓肤髡鬒鬓鬈华秀养烫护脱掉植黄鬚吹捲美金银盘辫丝割怒 发
发-髮 发 型色质簪妻蜡际钗缨肤髻饰套鬓辫小
diff --git a/main/round.py b/main/round.py
index c3daac5..2740e2a 100644
--- a/main/round.py
+++ b/main/round.py
@@ -25,7 +25,8 @@ def Get(contour, index, advance = 0):
def Del(contour, index, advance = 0):
index += advance
- del contour[index % len(contour)]
+ if len(contour)!=0:
+ del contour[index % len(contour)]
def InClosedInterval(x, a, b):
return x >= a and x <= b
diff --git a/main/step02.py b/main/step02.py
index 3c572d0..baa498b 100644
--- a/main/step02.py
+++ b/main/step02.py
@@ -80,7 +80,7 @@ def nfname(locn, ithw=''):
scn=cfg['fontNameSC']+'等宽'+locn.strip()+hwm
tcn=cfg['fontNameTC']+'等寬'+locn.strip()+hwm
elif 'Rounded' in fpsn:
- fmlName=cfg['fontName']+' Rounded'+hwm+locn
+ fmlName=cfg['fontName']+' Round'+hwm+locn
scn=cfg['fontNameSC']+'圆体'+locn.strip()+hwm
tcn=cfg['fontNameTC']+'圓體'+locn.strip()+hwm
else: raise
@@ -150,11 +150,11 @@ def stnm(nameobj):
(fnn+' Sans', fnn+' Sans '+tc),
(fnn+' Serif', fnn+' Serif '+tc),
(fnn+' Mono', fnn+' Mono '+tc),
- (fnn+' Rounded', fnn+' Rounded '+tc),
+ (fnn+' Round', fnn+' Round '+tc),
(fnnp+'Sans', fnnp+'Sans'+tc),
(fnnp+'Serif', fnnp+'Serif'+tc),
(fnnp+'Mono', fnnp+'Mono'+tc),
- (fnnp+'Rounded', fnnp+'Rounded'+tc),
+ (fnnp+'Round', fnnp+'Round'+tc),
('黑體', '黑體'+zhnt),
('明體', '明體'+zhnt),
('等寬', '等寬'+zhnt),
@@ -386,7 +386,7 @@ def itcmp():
glyrepl(tabl)
for i in itft: rmft('GSUB', i)
for i in itlk: rmlk('GSUB', i)
-def stlks():
+def stlks(chrdic, phrdic):
cmap=font.getBestCmap()
glod=font.getGlyphOrder()
stmul=otTables.Lookup()
@@ -410,74 +410,62 @@ def stlks():
stmul.SubTable=list()
stmul.LookupType=6
stmul.LookupFlag=0
- with open(os.path.join(pydir, 'configs/stonem.dt'),'r',encoding='utf-8') as f:
- bkcov=list()
- lahcov=list()
- ltc=dict()
- for line in f.readlines():
- litm=line.split('#')[0].strip()
- if '-' not in litm: continue
- sb=dict()
- ls=litm.strip().split(' ')
- s, t=ls[0].split('-')
- dics=ls[1:]
- sg=cmap[ord(s)]
- tg=cmap[ord(t)]
- i=dics.index(s)
- assert i>-1
- bkcov=dics[0:i]
- bkcov.reverse()
- lahcov=dics[i+1:]
- if sg!=tg and tg not in ltc:
- if sg not in sgtb1:
- sgtb1[sg]=tg
- ltc[tg]=2
- elif sg not in sgtb2:
- sgtb2[sg]=tg
- ltc[tg]=3
- elif sg not in sgtb3:
- sgtb3[sg]=tg
- ltc[tg]=4
- else:
- raise
- bklst=list()
- for strs in bkcov:
- cvobjbk=otTables.Coverage()
- cvobjbk.glyphs=list(set([cmap[ord(ch)] for ch in strs]))
- assert len(cvobjbk.glyphs)>0, strs
- cvobjbk.glyphs=list(sorted([g for g in cvobjbk.glyphs], key=lambda g:glod.index(g)))
- bklst.append(cvobjbk)
- ahlst=list()
- for strs in lahcov:
- cvobjah=otTables.Coverage()
- cvobjah.glyphs=list(set([cmap[ord(ch)] for ch in strs]))
- assert len(cvobjah.glyphs)>0, strs
- cvobjah.glyphs=list(sorted([g for g in cvobjah.glyphs], key=lambda g:glod.index(g)))
- ahlst.append(cvobjah)
- cvobjip=otTables.Coverage()
- cvobjip.glyphs=[cmap[ord(s)]]
- mulsb=otTables.ChainContextSubst()
- mulsb.Format=3
- mulsb.BacktrackCoverage=bklst
- mulsb.InputCoverage=[cvobjip]
- mulsb.LookAheadCoverage=ahlst
- if sg!=tg:
- sblrd=otTables.SubstLookupRecord()
- sblrd.SequenceIndex=0
- sblrd.LookupListIndex=ltc[tg]
- mulsb.SubstLookupRecord=[sblrd]
- stmul.SubTable.append(mulsb)
+ ltc=dict()
+ for phdc in phrdic:
+ s, t=phdc['s'], phdc['t']
+ dics=phdc['p']
+ sg=cmap[ord(s)]
+ tg=cmap[ord(t)]
+ i=dics.index(s)
+ assert i>-1
+ bkcov=dics[0:i]
+ bkcov.reverse()
+ lahcov=dics[i+1:]
+ if sg!=tg and tg not in ltc:
+ if sg not in sgtb1:
+ sgtb1[sg]=tg
+ ltc[tg]=2
+ elif sg not in sgtb2:
+ sgtb2[sg]=tg
+ ltc[tg]=3
+ elif sg not in sgtb3:
+ sgtb3[sg]=tg
+ ltc[tg]=4
+ else:
+ raise
+ bklst=list()
+ for strs in bkcov:
+ cvobjbk=otTables.Coverage()
+ cvobjbk.glyphs=list(set([cmap[ord(ch)] for ch in strs]))
+ assert len(cvobjbk.glyphs)>0, strs
+ cvobjbk.glyphs=list(sorted([g for g in cvobjbk.glyphs], key=lambda g:glod.index(g)))
+ bklst.append(cvobjbk)
+ ahlst=list()
+ for strs in lahcov:
+ cvobjah=otTables.Coverage()
+ cvobjah.glyphs=list(set([cmap[ord(ch)] for ch in strs]))
+ assert len(cvobjah.glyphs)>0, strs
+ cvobjah.glyphs=list(sorted([g for g in cvobjah.glyphs], key=lambda g:glod.index(g)))
+ ahlst.append(cvobjah)
+ cvobjip=otTables.Coverage()
+ cvobjip.glyphs=[cmap[ord(s)]]
+ mulsb=otTables.ChainContextSubst()
+ mulsb.Format=3
+ mulsb.BacktrackCoverage=bklst
+ mulsb.InputCoverage=[cvobjip]
+ mulsb.LookAheadCoverage=ahlst
+ if sg!=tg:
+ sblrd=otTables.SubstLookupRecord()
+ sblrd.SequenceIndex=0
+ sblrd.LookupListIndex=ltc[tg]
+ mulsb.SubstLookupRecord=[sblrd]
+ stmul.SubTable.append(mulsb)
sgsb1.mapping=sgtb1
sgsb2.mapping=sgtb2
sgsb3.mapping=sgtb3
- with open(os.path.join(pydir, 'configs/stoneo.dt'),'r',encoding='utf-8') as f:
- for line in f.readlines():
- litm=line.split('#')[0].strip()
- if '-' not in litm: continue
- s, t=litm.split(' ')[0].split('-')
- s, t=s.strip(), t.strip()
- if s and t and s!=t and ord(s) in cmap and ord(t) in cmap and cmap[ord(s)]!=cmap[ord(t)]:
- sgtb[cmap[ord(s)]]=cmap[ord(t)]
+ for s, t in list(chrdic.items()):
+ if ord(s) in cmap and ord(t) in cmap and cmap[ord(s)]!=cmap[ord(t)]:
+ sgtb[cmap[ord(s)]]=cmap[ord(t)]
sgsb.mapping=sgtb
for lkp in font["GSUB"].table.LookupList.Lookup:
for st in lkp.SubTable:
@@ -498,16 +486,35 @@ def stlks():
for lsr in sr.Script.LangSysRecord:
lsr.LangSys.FeatureIndex=[i+1 for i in lsr.LangSys.FeatureIndex]
lsr.LangSys.FeatureIndex.insert(0, 0)
-def stcmp():
+def stcmp(chrdic):
cmap=font.getBestCmap()
+ for s, t in list(chrdic.items()):
+ if ord(s) not in cmap and ord(t) in cmap:
+ setcg(ord(s), cmap[ord(t)])
+def getstdic():
+ newdic=dict()
with open(os.path.join(pydir, 'configs/stoneo.dt'),'r',encoding='utf-8') as f:
for line in f.readlines():
litm=line.split('#')[0].strip()
if '-' not in litm: continue
s, t=litm.split(' ')[0].split('-')
s, t=s.strip(), t.strip()
- if s and t and s!=t and ord(s) not in cmap and ord(t) in cmap:
- setcg(ord(s), cmap[ord(t)])
+ if s and t and s!=t:
+ newdic[s]=t
+ for s, t in list(newdic.items()):
+ if t in newdic: newdic[s]=newdic[t]
+ newlst=list()
+ with open(os.path.join(pydir, 'configs/stonem.dt'),'r',encoding='utf-8') as f:
+ for line in f.readlines():
+ litm=line.split('#')[0].strip()
+ if '-' not in litm: continue
+ dic1=dict()
+ ls=litm.strip().split(' ')
+ s, t=ls[0].split('-')
+ dic1['s'], dic1['t']=s, t
+ dic1['p']=ls[1:]
+ newlst.append(dic1)
+ return newdic, newlst
def flpth(flnm):
if 'VF' in flnm:
flnm=flnm.split('-')[0].replace('VF', '-VF')
@@ -545,8 +552,9 @@ def getstmap():
font['GSUB']=copy.deepcopy(AA['GSUB'])
font['GPOS']=copy.deepcopy(AA['GPOS'])
cmap=font.getBestCmap()
- stcmp()
- stlks()
+ chrdic, phrdic=getstdic()
+ stcmp(chrdic)
+ stlks(chrdic, phrdic)
AA['namest']=stnm(copy.deepcopy(AA['name']))
AA['filest']=flpth(AA['namest'].getDebugName(6))
AA['cmapst']=copy.deepcopy(font['cmap'])
@@ -595,7 +603,7 @@ def svfonts():
else: cfnm=AA['file'][:AA['file'].rindex('.')]+'.ttc'
ttcarg=['-o', cfnm]
if 'Mono' not in fpsn:
- ttcarg+=[AA['file'], AATC['file'], AASC['file'], AAJP['file'], AA['filest'], AA['filehw'], AATC['filehw'], AASC['filehw'], AAJP['filehw'], AA['filest2']]
+ ttcarg+=[AA['file'], AA['filehw'], AATC['file'], AATC['filehw'], AASC['file'], AASC['filehw'], AAJP['file'], AAJP['filehw'], AA['filest'], AA['filest2']]
else:
ttcarg+=[AA['file'], AA['fileit'], AATC['file'], AATC['fileit'], AASC['file'], AASC['fileit'], AAJP['file'], AAJP['fileit']]
otf2otc.run(ttcarg)
diff --git a/main/tools/README-SC.md b/main/tools/README-SC.md
index d56103b..87f54c3 100644
--- a/main/tools/README-SC.md
+++ b/main/tools/README-SC.md
@@ -8,4 +8,4 @@
使用方法:运行 `python mulcodechar.py InFont.otf OutFont.otf`
#### 2. 差集提取工具
此工具可提取本字体与思源不同的字形。
-使用方法:运行 `python finddiffers.py -o OutFont.otf AdvocateAncientSansTC-Regular.otf SourceHanSans-Regular.otf`
+使用方法:运行 `python finddiffers.py -o OutFont.otf ShangguSansTC-Regular.otf SourceHanSans-Regular.otf`
diff --git a/main/tools/README.md b/main/tools/README.md
index 33e51f9..0fa7f2b 100644
--- a/main/tools/README.md
+++ b/main/tools/README.md
@@ -8,4 +8,4 @@
使用方法:執行 `python mulcodechar.py InFont.otf OutFont.otf`
#### 2. 差集提取工具
此工具可提取本字型與思源不同的字形。
-使用方法:執行 `python finddiffers.py -o OutFont.otf AdvocateAncientSansTC-Regular.otf SourceHanSans-Regular.otf`
+使用方法:執行 `python finddiffers.py -o OutFont.otf ShangguSansTC-Regular.otf SourceHanSans-Regular.otf`