SolidZORO / zpix-pixel-font

Zpix (最像素) is a pixel font (中文像素字体), supporting English, Chinese (Simplified + Traditional) and Japanese.
https://zpix.vercel.app/
2.47k stars 70 forks source link

qt5程序必须要关闭抗锯齿才能正确显示Zfull gb字体 #14

Closed widon1104 closed 5 years ago

widon1104 commented 5 years ago

qt5程序必须要关抗锯齿才能正确显示Zfull gb字体,这让我很困惑,因为几乎所有qt5程序默认都是打开抗锯齿的无法关闭。 qt5程序不需要关闭抗锯齿都能正确显示文泉驿点阵宋体这款点阵字体,说明是不是Zfull gb有什么不规范的地方导致qt5没有很好的支持Zfull gb字体。

听说Zfull是一个练手的作品,苦于现在linux下没有很好的点阵字体可以使用,宋体有版权而且英文不是点阵的,文泉驿点阵宋体问题更多,在很多软件上表现很差。

下面是一些我在deepin15.10.1上面使用Zfull gb报的issue 设置标准字体为Zfull-gb以后,很多地方字体并没有使用我设置的这款点阵字体 系统设置界面显示不正常,只显示了1列,应该有2列 这都是Zfull gb和qt5不兼容导致的问题。

不知道Zfull gb是否有升级版本?能够解决qt5支持不好的问题。现在低分屏上面还是只有点阵显示效果是最好的。

SolidZORO commented 5 years ago

Hello,首先要说的是 Zfull 是我上古的作品了,其里面的 zPix 版本也不是最新的,所以具体 bug 我不知如何处理。不过我可以给你提供下 metadata 供参考。

Zfull 是多个 bdf 像素字体文件 + 一个体积很小的开源 ttf 合成的。ttf 用途在于这些 bdf 无法正常显示,只能包在 ttf 下。所以在 windows 的渲染机制下是小字号默认先渲染 bdf(没有抗锯齿),直到没有这个字号的 bdf 后才渲染 ttf(抗锯齿)。

这样说能明白吗?当然我没有太多 linux 经验,在 Mac 下字体渲染也足够好所以我也没有什么有价值的信息提供给你。

这是 Zfull 的情况。然后说下 Zpix。

Zpix 的像素只有一个,就是 zpix_12.bdf,然后他的 ttf 我为了保证其效果和像素的 bdf 一致,用了较为复杂的取模办法生成了这个 ttf,所以,无论你是开了抗锯齿或者没开,效果都是一样的锐利,当然,最好是 12 的倍数。

所以,你的问题我不知道是否给到你答案了。

至于 Zfull 的字体消失问题我就不打算解决了,这个字体是我在学习制作字体初期的个人 DIY 作品,里面有太多扯不清的版权问题。就算解决了你的问题,其实也是无法商用的。

以上。

widon1104 commented 5 years ago

其实我并不想商用,只是希望个人使用,现在我找得到的比较好使的点阵字体也就只有Zfull gb了,不知道这款字体有没有更新的计划?

SolidZORO commented 5 years ago

其实我并不想商用,只是希望个人使用,现在我找得到的比较好使的点阵字体也就只有Zfull gb了,不知道这款字体有没有更新的计划?

@widon1104 没有计划,其实之前很多工具都是 windows 下的,切到 Mac 好多年,几次想再折腾一下像素字体打包但也失去动力了。qt 的这个问题全平台表现一致吗?还是只有 linux 下有问题?

widon1104 commented 5 years ago

我现在只有linux环境,其实验证一下在其他平台qt程序是否也有问题很容易,下载一个smplayer,在选项-首选项-界面-默认字体 选择为Zfull gb,然后看一下界面字体显示效果就知道是否有问题了。

widon1104 commented 5 years ago

刚才在官网上面下载了Zpix.ttf,想试试效果,结果感觉有问题 Zpix smplayer

使用文泉驿bitmap song没问题 wqy bitmap song smplayer

widon1104 commented 5 years ago

因为在gnome环境下,使用gnome-tweak设置字体为Zfull gb以后,gtk程序上Zfull gb字体是可以正常显示的,所以针对这个问题我还在qt的bugzilla上面报了一个bug https://bugreports.qt.io/browse/QTBUG-71867

我对字体的知识一窍不通,所以我也不知道到底是哪里出了问题导致qt5程序无法正常渲染Zfull gb.

widon1104 commented 5 years ago

我今天专门在virtualbox里面装了一个win10,然后安装了smplayer,发现这个bug没有出现在win10平台,看起来了是linux独有的bug,但是qt对linux很重要,linux下有很多qt写的程序,这个就有点老火了。

SolidZORO commented 5 years ago

@widon1104 不好意思,前天在手机上给你回复,没想到回复居然丢失了,可能是没发送成功。然后今天看到你试用 Windows 后 bug 消失,让我更确定是因为渲染机制的不同导致的不同。可能是我在字体里面没有加入「在可能的情况下,尽可能用 bdf」,导致了 Linux 下渲染问题,因为超过了 bdf 的范围,让系统感觉没东西可渲了。这个问题还是得依赖 qt 团队解决,当然,他们很可能不会特别关注这个问题。

widon1104 commented 5 years ago

qt bug多得很,让qt修复这个问题恐怕不太现实,不知道是不是字体有啥缺陷,可否通过修改字体来修复这个问题。

SolidZORO commented 5 years ago

@widon1104 这个目前我帮不到你了,因为在 Mac 下很多 App 目前都无法使用,包括 FontForce 这种都无法在高版本 macOS 上都没办法跑起来,然后改完需要在 Linux 的 Qt 下测试,又是一个比较大的工作量。你看你折腾一下,看看有什么方式可以解决。

widon1104 commented 5 years ago

我即不懂qt编程,也不懂得如何创建字体,现阶段我只是暂时把系统字体设置成了一款矢量字体,修复这个问题只能靠你了

widon1104 commented 5 years ago

其实qt5像宋体这样的字体也不能正确渲染,感觉还是应该qt来改

SolidZORO commented 5 years ago

@widon1104 这样?这样听起来似乎是 Linux 的渲染字体问题,你换个 Linux 发行版本估计就好了,或者说 gnome、kde 之类的问题了,也可能 qt 的问题,qt 要适配所有发行版 Linux 毕竟还是难,不像 windows 适配一个就好。

widon1104 commented 5 years ago

跟linux发行版没有关系,qt5在所有linux发行版上面行为都一致的