Last active
December 30, 2023 10:05
-
-
Save Redlnn/87f6888e5a3f54a931e438f1c83056b4 to your computer and use it in GitHub Desktop.
一个生成用于 Stylus/Stylish 的全局非衬线字体替换的 CSS 的脚本
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# -*- coding: utf-8 -*- | |
""" | |
一个生成用于 Stylus/Stylish 的全局无衬线字体替换的 CSS 的脚本 | |
""" | |
import itertools | |
template = '''\ | |
@font-face { | |
font-family: '{{origin}}'; | |
font-weight: {{weight}}; | |
src: local('{{font}}'); | |
} | |
''' | |
origin_fonts = { | |
'SC': [ | |
'san-serif', | |
'system-ui', | |
'-apple-system', | |
'BlinkMacSystemFont', | |
'Open Sans', | |
'HanHei SC', | |
'LiHei Pro', | |
'丽黑pro', | |
'Hiragino Sans GB', | |
'Heiti', | |
'Heiti SC', | |
'黑体-简', | |
'STHeiti', | |
'Microsoft YaHei', | |
'Microsoft YaHei UI', | |
'微软雅黑', | |
'Noto Sans', | |
'Noto Sans CJK', | |
'Noto Sans SC', | |
'source-han-sans-simplified-c', | |
# 'Source Han Sans', | |
'Source Han Sans CN', | |
# 'Source Han Sans SC', | |
# '思源黑体', | |
'STHeiti Light', | |
'STHeiti', | |
'苹方-简', | |
'PingFang SC', | |
'WenQuanYi Zen Hei', | |
'WenQuanYi Micro Hei', | |
'文泉驿正黑', | |
], | |
'TC': [ | |
'Heiti TC', | |
'黑體', | |
'黑體-繁', | |
'Microsoft JhengHei', | |
'Microsoft JhengHei UI', | |
'微軟正黑體', | |
'華康儷細黑', | |
'華康儷中黑', | |
'華康儷細黑', | |
'DFLiHei-Lt', | |
'DFLiHei-Md', | |
'DFLiHei-Bd', | |
'Noto Sans TC', | |
'Source Han Sans TC', | |
'思源黑體', | |
'PingFang TC', | |
], | |
'HC': [ | |
'Noto Sans HC', | |
'Source Han Sans HC', | |
'思源黑體 香港', | |
'PingFang HK', | |
], | |
'JP': [ | |
'Source Han Sans', | |
'Noto Sans', | |
'Noto Sans JP', | |
], | |
'KR': [ | |
'Source Han Sans K', | |
'Noto Sans K', | |
], | |
} | |
fonts = { | |
'SC': { | |
100: 'HarmonyOS Sans SC Thin', | |
300: 'HarmonyOS Sans SC Light', | |
400: 'HarmonyOS Sans SC', | |
500: 'HarmonyOS Sans SC Medium', | |
600: 'HarmonyOS Sans SC Bold', | |
800: 'HarmonyOS Sans SC Black', | |
}, | |
'TC': { | |
100: 'HarmonyOS Sans TC Thin', | |
300: 'HarmonyOS Sans TC Light', | |
400: 'HarmonyOS Sans TC', | |
500: 'HarmonyOS Sans TC Medium', | |
600: 'HarmonyOS Sans TC Bold', | |
800: 'HarmonyOS Sans TC Black', | |
}, | |
'HC': { | |
100: 'HarmonyOS Sans TC Thin', | |
300: 'HarmonyOS Sans TC Light', | |
400: 'HarmonyOS Sans TC', | |
500: 'HarmonyOS Sans TC Medium', | |
600: 'HarmonyOS Sans TC Bold', | |
800: 'HarmonyOS Sans TC Black', | |
}, | |
'JP': { | |
100: 'HarmonyOS Sans TC Thin', | |
300: 'HarmonyOS Sans TC Light', | |
400: 'HarmonyOS Sans TC', | |
500: 'HarmonyOS Sans TC Medium', | |
600: 'HarmonyOS Sans TC Bold', | |
800: 'HarmonyOS Sans TC Black', | |
}, | |
'KR': { | |
100: 'HarmonyOS Sans TC Thin', | |
300: 'HarmonyOS Sans TC Light', | |
400: 'HarmonyOS Sans TC', | |
500: 'HarmonyOS Sans TC Medium', | |
600: 'HarmonyOS Sans TC Bold', | |
800: 'HarmonyOS Sans TC Black', | |
}, | |
} | |
out = '/* 替换无衬线字体 */\n' | |
for lang, value in origin_fonts.items(): | |
for origin_font, weight in itertools.product(value, fonts[lang]): | |
out += ( | |
template.replace('{{origin}}', origin_font) | |
.replace('{{weight}}', str(weight)) | |
.replace('{{font}}', fonts[lang][weight]) | |
) | |
with open('fonts.css', 'w', encoding='utf8') as f: | |
f.write(out) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment