Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

当前等宽字体的间距不适用于编程 #56

Closed
SeaHOH opened this issue Feb 15, 2022 · 10 comments
Closed

当前等宽字体的间距不适用于编程 #56

SeaHOH opened this issue Feb 15, 2022 · 10 comments
Labels
enhancement New feature or request

Comments

@SeaHOH
Copy link

SeaHOH commented Feb 15, 2022

测试环境:

Windows 7 记事本,字号为三号 (16pt),其它文本编辑器效果也差不多

以下字体效果分别是 (点击图片以原始尺寸查看):

Windows 宋体 (等宽)、霞鹜文楷、霞鹜文楷等宽

fonts vs

问题描述:

  • 以下间距指肉眼可见,我不清楚是单字属性还是字体属性导致。
  • 行间距超出其它常规字体约 1/3 5/4,非等宽的无所谓,但等宽版本也如此就显得过大,会导致可见文本减少,编程时会增加一定的麻烦。
  • 非等宽的字间距和其它常规字体差不多能有效分辨,但等宽版本的字间距基本为 0,某些字符间看起来就像粘在一起,造成了些许阅读障碍。
  • 某些符号的高度位置是以小写字母而非字符中心为基准,作为编程使用看起来略别扭,如运算符号、:<> 等。
@lxgw
Copy link
Owner

lxgw commented Feb 16, 2022

-1911a0c3789188a3.png

这样调整如何?横向压缩到 90%

这款字体的等宽字符是在原 Klee 的 hwid 字符基础上修改的,字距什么的都没有变。下面是 Klee 的 hwid 字符。

-26b12e231266157.jpg

@SeaHOH
Copy link
Author

SeaHOH commented Feb 16, 2022

字体编辑方面纯外行,我只描述最终肉眼效果。

这样调整如何?横向压缩到 90%

你使用的预览字号是 24pt,但编程使用的字号不会太大,一般最大到 16pt,再大就要上高分屏了。所以我的想法是优先调试 12 - 16pt 这个范围的效果。现在的预览效果看起来好像还行,但我不确定小字号的效果。

我不明白具体压缩了哪个部分,其实非等宽版本的间距效果就非常不错,这里再详细些说明发现的和非等宽版本的区别。把光标分别放在字符两端,可以看出除了极个别字符外,光标与字符间都有空白。一般是后面的空白更大更明显些,在小字号时前面的空白不易分辨,但后面的空白依旧明显。而在当前的等宽版本中正好相反,除了极个别字符外,光标和字符间是没有空白的,前后都没有,大字号下也看不出有。

这款字体的等宽字符是在原 Klee 的 hwid 字符基础上修改的,字距什么的都没有变。下面是 Klee 的 hwid 字符。

也就是说与非等宽版本是不同的吗,那能否通过简单的调整以达到与上面所描述的非等宽版本大致相同的效果呢?

按我的理解,既然等宽字体的字符宽度是统一的,那么和网页渲染类似,就应该有一个类似字符内边距的概念 (虽然属性上可能不存在没有单独的设置),至少可以通过调整字符内的笔画来调整这个边距。能统一调整就比较方便,你说的横向压缩是否就是这样的呢。否则要单独调整每个字符,那工作量就很高了。

另外,最开始提到的行间距问题 (先前的描述有点问题,应该不止大 1/3,而是 1 倍以上),这个能否也压缩一下呢?过多的行间空白对编程来说算是负面的,现在的行间距委实大了些,至少不要大过 Consolas

@SeaHOH
Copy link
Author

SeaHOH commented Feb 16, 2022

又发现一个问题,某些符号的高度位置是以小写字母为基准,如运算符号、:<> 等。请问能否改为字符中心为基准呢?

@lxgw
Copy link
Owner

lxgw commented Feb 16, 2022


上图为修改前,下图为修改后(行距度量数据参考了 更纱黑体,顺便把数字 1 也改了。)

附上中英文混排的效果:

@lxgw
Copy link
Owner

lxgw commented Feb 16, 2022

1.21 版本已更新。

@SeaHOH
Copy link
Author

SeaHOH commented Feb 16, 2022

非常感谢你!!
之前如果要使用中文注释的话,没有什么合适的字体可用,黑和宋之类真心不习惯,仿宋还凑合,就是 0O 不分。现在这个等宽版本用起来面目一新,虽然似乎没有我之前使用的字体那么清爽。另外有点可惜的地方是,GDI 渲染不太适合这个字体风格,现在改用 D2D 后内存消耗大了许多,而且 Windows 7 的 D2D 有 bug,有时特定位置会有瑕疵。

因为是通过压缩笔画来留出空白,相比原始字形看起来始终还是有些微不协调,这让我又想起一个中英文等宽字体的区别:以半宽算,英文字体的字符宽度普遍要比中文字体的大约 1/10。那么能否反向操作呢?笔画保持不变,通过把字符宽度调大到和 Consolas 一致来留出空白 (也就是字符本身包含的空白),这样英文字符就能保持和英文等宽字体大致相似的体验。而且根据我以前在阅读软件中调整字间距的经验,少许的间距差别对中文字符的辨识和阅读并无太大影响。
这也许违反某种中文字体设计原则?如果你认为这样修改后,将不适合作为普通等宽字体发布,那么再增加一个编程专用的字体是否可行呢?当然这只是为了方便不能自行设置回落字体的编辑器,支持的完全可以忽视这个问题,直接使用心仪的英文 + 中文回落。

@lxgw lxgw closed this as completed Feb 17, 2022
@SeaHOH
Copy link
Author

SeaHOH commented Feb 17, 2022

没戏吗。好吧,估计用段时间我也能适应,这个字体用作注释真是超级合适。再次感谢!!

@SeaHOH
Copy link
Author

SeaHOH commented Feb 18, 2022

你好。
再反馈一下上面那几个符号与中心对齐的问题,之前没仔细观察,今天才发现位置稍微高了一点点,如果能调整到正中高度就更美观了。

@uitsrt233
Copy link

image
命令行里用这个字体就会超级怪异

@SeaHOH
Copy link
Author

SeaHOH commented Jul 16, 2023

@uitsrt233 仔细看你截图中的字体,对不上吧。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants