Skip to content

Commit 5c4f6c9

Browse files
committed
aborts
1 parent ef1b6d9 commit 5c4f6c9

File tree

3 files changed

+465
-119
lines changed

3 files changed

+465
-119
lines changed

.github/workflows/build.yml

Lines changed: 147 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,147 @@
1+
name: Build Ioskeley CJK
2+
3+
on:
4+
push:
5+
branches: ["main"]
6+
paths:
7+
- "private-build-plans.toml"
8+
- "config.json"
9+
- ".github/workflows/**"
10+
workflow_dispatch:
11+
12+
jobs:
13+
build:
14+
runs-on: ubuntu-latest
15+
permissions:
16+
contents: write
17+
18+
steps:
19+
# 1. Checkout 你的仓库
20+
- name: Checkout repository
21+
uses: actions/checkout@v4
22+
23+
# 2. Checkout Iosevka 源码
24+
- name: Checkout Iosevka source
25+
uses: actions/checkout@v4
26+
with:
27+
repository: be5invis/Iosevka
28+
path: iosevka-src
29+
fetch-depth: 1
30+
31+
# 3. 安装系统依赖
32+
- name: Install system dependencies
33+
run: |
34+
sudo apt-get update
35+
sudo apt-get install -y ttfautohint python3 p7zip-full
36+
37+
# 4. 安装 AFDKO (otf2ttf, otc2otf)
38+
- name: Install AFDKO
39+
run: |
40+
pip3 install afdko
41+
42+
# 5. 设置 Node.js
43+
- name: Set up Node.js
44+
uses: actions/setup-node@v4
45+
with:
46+
node-version: "20"
47+
48+
# 6. 构建 Iosevka 字体
49+
- name: Build Iosevka fonts
50+
run: |
51+
cp private-build-plans.toml iosevka-src/
52+
cd iosevka-src
53+
npm install
54+
npm run build -- ttf::IoskeleyMono ttf::IoskeleySlabMono --jCmd=2
55+
56+
# 7. 将 Iosevka 字体复制到 sources 目录
57+
- name: Copy Iosevka fonts to sources
58+
run: |
59+
mkdir -p sources/IoskeleyMono
60+
mkdir -p sources/IoskeleySlabMono
61+
62+
# 复制并重命名文件以匹配 Sarasa 期望的格式
63+
for file in iosevka-src/dist/IoskeleyMono/TTF/*.ttf; do
64+
filename=$(basename "$file")
65+
# IoskeleyMono-Regular.ttf -> IoskeleyMono-Regular.ttf
66+
cp "$file" "sources/IoskeleyMono/$filename"
67+
done
68+
69+
for file in iosevka-src/dist/IoskeleySlabMono/TTF/*.ttf; do
70+
filename=$(basename "$file")
71+
cp "$file" "sources/IoskeleySlabMono/$filename"
72+
done
73+
74+
# 列出复制的文件
75+
echo "=== IoskeleyMono ==="
76+
ls -la sources/IoskeleyMono/
77+
echo "=== IoskeleySlabMono ==="
78+
ls -la sources/IoskeleySlabMono/
79+
80+
# 8. 下载思源黑体
81+
- name: Download Source Han Sans
82+
run: |
83+
mkdir -p sources/shs
84+
cd sources/shs
85+
86+
# 下载思源黑体 OTC 文件
87+
curl -L -O "https://github.com/adobe-fonts/source-han-sans/releases/download/2.004R/SourceHanSans.ttc.zip"
88+
unzip -o SourceHanSans.ttc.zip
89+
rm SourceHanSans.ttc.zip
90+
91+
# 重命名以匹配期望的格式
92+
for weight in Bold ExtraLight Heavy Light Medium Normal Regular; do
93+
if [ -f "SourceHanSans-${weight}.ttc" ]; then
94+
echo "Found SourceHanSans-${weight}.ttc"
95+
fi
96+
done
97+
98+
ls -la
99+
100+
# 9. 安装 Sarasa 依赖
101+
- name: Install Sarasa dependencies
102+
run: |
103+
npm install
104+
105+
# 10. 构建 Sarasa (TTF)
106+
- name: Build Sarasa TTF
107+
run: |
108+
npm run build -- ttf --jCmd=2
109+
110+
# 11. 打包输出
111+
- name: Package fonts
112+
run: |
113+
cd out/TTF
114+
zip -r ../../IoskeleyCJK-TTF.zip *.ttf
115+
cd ../..
116+
117+
if [ -d "out/TTF-Unhinted" ]; then
118+
cd out/TTF-Unhinted
119+
zip -r ../../IoskeleyCJK-TTF-Unhinted.zip *.ttf
120+
cd ../..
121+
fi
122+
123+
# 12. 设置版本号
124+
- name: Set Release Version
125+
id: vars
126+
run: echo "tag=$(date +'%Y.%m.%d')-${{ github.run_number }}" >> $GITHUB_OUTPUT
127+
128+
# 13. 创建 Release
129+
- name: Create Release
130+
uses: softprops/action-gh-release@v1
131+
with:
132+
tag_name: ${{ steps.vars.outputs.tag }}
133+
name: "Release ${{ steps.vars.outputs.tag }}"
134+
body: |
135+
Ioskeley CJK - 基于 Iosevka 和思源黑体的 CJK 字体
136+
137+
### 包含字体:
138+
- **Ioskeley CJK Mono**: 等宽无衬线
139+
- **Ioskeley CJK Mono Slab**: 等宽粗衬线
140+
141+
### 地区变体:
142+
SC (简体中文), TC (繁体中文), HC (香港), J (日文), K (韩文), CL (传统字形)
143+
files: |
144+
IoskeleyCJK-TTF.zip
145+
IoskeleyCJK-TTF-Unhinted.zip
146+
env:
147+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

config.json

Lines changed: 25 additions & 119 deletions
Original file line numberDiff line numberDiff line change
@@ -1,106 +1,29 @@
11
{
22
"buildOptions": {},
3-
"familyOrder": ["Gothic", "Ui", "Mono", "MonoSlab", "Term", "TermSlab", "Fixed", "FixedSlab"],
3+
"familyOrder": ["Mono", "MonoSlab"],
44
"families": {
5-
"Gothic": {
6-
"isGothic": true,
7-
"latinGroup": "Inter",
8-
"naming": {
9-
"en_US": "Sarasa Gothic",
10-
"zh_CN": "更纱黑体",
11-
"zh_TW": "更紗黑體",
12-
"zh_HK": "更紗黑體",
13-
"ja_JP": "更紗ゴシック",
14-
"ko_KR": "사라사 고딕"
15-
}
16-
},
17-
"Ui": {
18-
"isPWID": true,
19-
"isTNUM": true,
20-
"latinGroup": "Inter",
21-
"naming": {
22-
"en_US": "Sarasa UI",
23-
"zh_CN": "更纱黑体 UI",
24-
"zh_TW": "更紗黑體 UI",
25-
"zh_HK": "更紗黑體 UI",
26-
"ja_JP": "更紗ゴシック UI",
27-
"ko_KR": "사라사 고딕 UI"
28-
}
29-
},
305
"Mono": {
316
"isMono": true,
32-
"latinGroup": "IosevkaN",
33-
"naming": {
34-
"en_US": "Sarasa Mono",
35-
"zh_CN": "等距更纱黑体",
36-
"zh_TW": "等距更紗黑體",
37-
"zh_HK": "等距更紗黑體",
38-
"ja_JP": "更紗等幅ゴシック",
39-
"ko_KR": "사라사 고정 폭고딕"
40-
}
41-
},
42-
"Term": {
43-
"isMono": true,
44-
"isTerm": true,
45-
"latinGroup": "IosevkaNTerm",
46-
"naming": {
47-
"en_US": "Sarasa Term",
48-
"zh_CN": "Sarasa Term",
49-
"zh_TW": "Sarasa Term",
50-
"zh_HK": "Sarasa Term",
51-
"ja_JP": "Sarasa Term",
52-
"ko_KR": "Sarasa Term"
53-
}
54-
},
55-
"Fixed": {
56-
"isMono": true,
57-
"isTerm": true,
58-
"latinGroup": "IosevkaNFixed",
7+
"latinGroup": "IoskeleyMono",
598
"naming": {
60-
"en_US": "Sarasa Fixed",
61-
"zh_CN": "Sarasa Fixed",
62-
"zh_TW": "Sarasa Fixed",
63-
"zh_HK": "Sarasa Fixed",
64-
"ja_JP": "Sarasa Fixed",
65-
"ko_KR": "Sarasa Fixed"
9+
"en_US": "Ioskeley CJK Mono",
10+
"zh_CN": "等距艾斯可蕾黑体",
11+
"zh_TW": "等距艾斯可蕾黑體",
12+
"zh_HK": "等距艾斯可蕾黑體",
13+
"ja_JP": "Ioskeley CJK Mono",
14+
"ko_KR": "Ioskeley CJK Mono"
6615
}
6716
},
6817
"MonoSlab": {
6918
"isMono": true,
70-
"latinGroup": "IosevkaNSlab",
71-
"naming": {
72-
"en_US": "Sarasa Mono Slab",
73-
"zh_CN": "等距更纱黑体 Slab",
74-
"zh_TW": "等距更紗黑體 Slab",
75-
"zh_HK": "等距更紗黑體 Slab",
76-
"ja_JP": "更紗等幅ゴシック Slab",
77-
"ko_KR": "사라사 고정 폭고딕 Slab"
78-
}
79-
},
80-
"TermSlab": {
81-
"isMono": true,
82-
"latinGroup": "IosevkaNTermSlab",
83-
"isTerm": true,
19+
"latinGroup": "IoskeleySlabMono",
8420
"naming": {
85-
"en_US": "Sarasa Term Slab",
86-
"zh_CN": "Sarasa Term Slab",
87-
"zh_TW": "Sarasa Term Slab",
88-
"zh_HK": "Sarasa Term Slab",
89-
"ja_JP": "Sarasa Term Slab",
90-
"ko_KR": "Sarasa Term Slab"
91-
}
92-
},
93-
"FixedSlab": {
94-
"isMono": true,
95-
"latinGroup": "IosevkaNFixedSlab",
96-
"isTerm": true,
97-
"naming": {
98-
"en_US": "Sarasa Fixed Slab",
99-
"zh_CN": "Sarasa Fixed Slab",
100-
"zh_TW": "Sarasa Fixed Slab",
101-
"zh_HK": "Sarasa Fixed Slab",
102-
"ja_JP": "Sarasa Fixed Slab",
103-
"ko_KR": "Sarasa Fixed Slab"
21+
"en_US": "Ioskeley CJK Mono Slab",
22+
"zh_CN": "等距艾斯可蕾黑体 Slab",
23+
"zh_TW": "等距艾斯可蕾黑體 Slab",
24+
"zh_HK": "等距艾斯可蕾黑體 Slab",
25+
"ja_JP": "Ioskeley CJK Mono Slab",
26+
"ko_KR": "Ioskeley CJK Mono Slab"
10427
}
10528
}
10629
},
@@ -117,32 +40,15 @@
11740
"BoldItalic"
11841
],
11942
"latinGroups": {
120-
"Inter": {
43+
"IoskeleyMono": {
44+
"isCff": false,
45+
"bakeFeatures": [],
46+
"dropFeatures": []
47+
},
48+
"IoskeleySlabMono": {
12149
"isCff": false,
122-
"bakeFeatures": [{ "tag": "ss03" }, { "tag": "cv10" }],
123-
"dropFeatures": [
124-
"cv01",
125-
"cv02",
126-
"cv03",
127-
"cv04",
128-
"cv05",
129-
"cv06",
130-
"cv07",
131-
"cv08",
132-
"cv09",
133-
"cv10",
134-
"cv11",
135-
"cv12",
136-
"cv13",
137-
"ss01",
138-
"ss02",
139-
"ss03",
140-
"ss04",
141-
"ss05",
142-
"ss06",
143-
"ss07",
144-
"ss08"
145-
]
50+
"bakeFeatures": [],
51+
"dropFeatures": []
14652
}
14753
},
14854
"styles": {
@@ -229,7 +135,7 @@
229135
"HC": ["en_US", "zh_HK"],
230136
"CL": ["en_US", "zh_TW"]
231137
},
232-
"copyright": "Copyright (c) 2015-2025, Renzhi Li (aka. Belleve Invis, belleve@typeof.net). Portions Copyright (c) 2016 The Inter Project Authors. Portions Copyright (c) 2014-2021 Adobe Systems Incorporated (http://www.adobe.com/). Portions Copyright (c) 2012 Google Inc.",
138+
"copyright": "Copyright (c) 2025, Based on Iosevka and Source Han Sans. Portions Copyright (c) 2015-2025, Renzhi Li (aka. Belleve Invis). Portions Copyright (c) 2014-2021 Adobe Systems Incorporated. Portions Copyright (c) 2012 Google Inc.",
233139
"shsSourceMap": {
234140
"defaultRegion": "SourceHanSans",
235141
"region": {
@@ -259,4 +165,4 @@
259165
"Bold": "Bold-subset"
260166
}
261167
}
262-
}
168+
}

0 commit comments

Comments
 (0)