snowie2000 / mactype

Better font rendering for Windows.
https://mactype.net
GNU General Public License v3.0
10.16k stars 444 forks source link

仅在资源管理器下存在的汉字间距过大的问题 #1012

Closed Giresharu closed 2 months ago

Giresharu commented 2 months ago

Snipaste_2024-08-30_00-28-44 像这样中英文混合的文件名就会显得尤为怪异,西文和中文的间距小,而中文之间的间距反而大了。

Snipaste_2024-09-01_00-52-11 如图所示,通过搜索进行筛选后,间距变得正常了。

系统版本: Win11 23H2 22631.4037


附带一下其他受 mactype 影响界面的效果,可以看间距是正常的: Snipaste_2024-09-01_01-04-18

实在是非常迷惑的一个问题

snowie2000 commented 2 months ago

热替换还是硬替换?如果是硬替换,可以试试关闭mactype看看Windows是不是本来就存在kerning问题。Windows的GDI在执行Kerning时不支持浮点数,所以容易出现这类问题

Giresharu commented 2 months ago

热替换还是硬替换?如果是硬替换,可以试试关闭mactype看看Windows是不是本来就存在kerning问题。Windows的GDI在执行Kerning时不支持浮点数,所以容易出现这类问题

没有替换的时候,在原生字体上就有这个问题,然后用硬替换了多个不同字体进行尝试,也都有这个问题。 关闭mactype也确实是没问题的。

仅在资源管理器中有这个问题,所以感觉很奇妙。

另外值得一提的是,其实开关后,整个文本的尺寸长度似乎并没有变,而是每个汉字的缩小了一点,留出了空隙。可能这就是汉字与英文间距更小的原因。

snowie2000 commented 2 months ago

这是由于mactype大多数配置文件都关闭了hinting导致的,hinting会改变字体的形状,部分字体会比原始的外形更大或更小,而Windows的宽度计算都是按照hinting后的字形来计算的,所以有时候就会出现一些奇怪的问题。

如果你打开hinting,就会发现mactype出来的字形和Windows的差不多了,当然这时候mactype也没什么存在的价值了,反正样子也差不多。。。

Giresharu commented 2 months ago

这是由于mactype大多数配置文件都关闭了hinting导致的,hinting会改变字体的形状,部分字体会比原始的外形更大或更小,而Windows的宽度计算都是按照hinting后的字形来计算的,所以有时候就会出现一些奇怪的问题。

如果你打开hinting,就会发现mactype出来的字形和Windows的差不多了,当然这时候mactype也没什么存在的价值了,反正样子也差不多。。。

破案了,问题出在微软雅黑这个字体。 经过试验我发现其实我所谓硬替换的字体根本没有成功,也就是一直尝试的都是微软雅黑在资源管理器上出现的问题。这次用正确的方式替换后没有间距问题了。