Skip to content

Instantly share code, notes, and snippets.

@Redlnn
Last active December 30, 2023 10:05
Show Gist options
  • Save Redlnn/87f6888e5a3f54a931e438f1c83056b4 to your computer and use it in GitHub Desktop.
Save Redlnn/87f6888e5a3f54a931e438f1c83056b4 to your computer and use it in GitHub Desktop.
一个生成用于 Stylus/Stylish 的全局非衬线字体替换的 CSS 的脚本
# -*- 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