V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
Asvel
V2EX  ›  分享创造

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

  •  
  •   Asvel · 2022-09-09 09:54:07 +08:00 · 1545 次点击
    这是一个创建于 811 天前的主题,其中的信息可能已经有所发展或是发生改变。

    各位有没有遇到过发现了一款心仪的编程字体,但是它和常用中文字体的字符宽度比不是恰好 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-09-10 09:04:56 +08:00
    好东西,我字体的自动生成脚本有着落了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3124 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 14:08 · PVG 22:08 · LAX 06:08 · JFK 09:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.