做了一个生成「适合特定等宽字体的中文 fallback 字体」的工具 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
Asvel

做了一个生成「适合特定等宽字体的中文 fallback 字体」的工具

  •  
  •   Asvel 2022 年 9 月 9 日 2239 次点击
    这是一个创建于 1323 天前的主题,其中的信息可能已经有所发展或是发生改变。

    各位有没有遇到过发现了一款心仪的编程字体,但是它和常用中文字体的字符宽度比不是恰好 1:2 ,不得不忍痛放弃它或者放弃中英文对齐的情况呢?在许多编辑器已经良好支持字体 fallback 的现在,为想用的等宽字体生成一份中文 fallback 字体不失为一种简单灵活的解决方案。

    相较于成品整合型字体,这种方案:

    • 可以自由选择使用的字体。
    • 主字体的全部特性一定能被完整保留,并且可以随时更新版本。
    • 不需要相关字体“再发行”级别的授权许可。

    但是:

    • 需要使用环境支持字体 fallback 。
    • 只适配了字符宽度,中英文整体视觉效果与人工精调相比存在差距。

    另外,英文字体较为美观的宽高比大概在 6:5 左右,而汉字通常是 1:1 的正方形,要让它们严格对齐有一方做出取舍不可避免(或者两方各取舍一点),本方案是一个只牺牲中文部分观感(字间距偏大)的方案,适合程序代码这种大段英文夹杂零星中文的场景,不太适合中英文混排为主的场景。当然你也可以选择 fallback 到比较扁的中文字体。 总之,这并非一个能够提供完美观感的解决方案,但是它可以让你在使用任意编程字体的同时保持中英文对齐。

    安装

    从 PyPI 安装(需要 Python 3.7+):

    pip install monoback 

    或者从发布页面下载独立可执行版本。(仅限 Windows )

    用法

    monoback <等宽字体文件> <fallback 字体文件> [<输出文件>] 

    然后安装生成的字体并在你的编辑器设置里指定它为 fallback 字体,例如:

    • 在 VSCode 中,设置「 Editor: Font Family 」为字符串「'主等宽字体名', '生成的字体名'」。
    • 在 JetBrains 产品中, 设置「编辑器 > 字体 > 版式设置 > 回滚字体」为生成的字体。

    GitHub

    https://github.com/Asvel/monoback

    1 条回复    2022-09-10 09:04:56 +08:00
    subframe75361
        1
    subframe75361  
       2022 年 9 月 10 日
    好东西,我字体的自动生成脚本有着落了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5290 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 46ms UTC 05:51 PVG 13:51 LAX 22:51 JFK 01:51
    Do have fait in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86