pango 1.49之后的版本出现字体渲染问题
发表于 : 2022-01-29 11:44
一直跟踪ubuntu daily,前一段时间发现pango直接从1.48.10直接更新到1.50.3,然后字体渲染就出现了问题。
首先发现端倪的是mono字族,测试结果如下:
1.50.3版本上,如果中文字体使用Noto Sans Mono CJK SC,那么可以对齐。 如果使用Noto Sans CJK SC则无法对齐。 仔细查无法对齐的显示效果,发现半角空格跟在中文之后会出现宽度压缩的情况。
但是1.48.10版本上,无论使用Noto Sans Mono CJK SC还是使用Noto Sans CJK SC,都可以对齐。
开始以为是noto字体的问题,于是测试了所有能接触到的中文字体,如鸿蒙字体、雅黑字体、小米字体、oppo字体等黑体字体,结果与上述情况相同。按理来说中文字体按照字形划分,可以分为宋、仿、黑、楷等,基本上都是等宽的,没有西文字体“等宽”或者“变宽”一说。
然后迫不得已,查找了pango源码,最终将该问题定位在pango 1.49.0以及以上版本。 查看更新说明,发现了这一句:
* New api: pango_font_get_languages
猜测很可能与该问题有关。于是发看了源代码,由于是一堆的c代码,加上能力有限,实在定位不到问题的具体位置。万能的坛友,有没有这个问题的相关解决方案?
首先发现端倪的是mono字族,测试结果如下:
1.50.3版本上,如果中文字体使用Noto Sans Mono CJK SC,那么可以对齐。 如果使用Noto Sans CJK SC则无法对齐。 仔细查无法对齐的显示效果,发现半角空格跟在中文之后会出现宽度压缩的情况。
但是1.48.10版本上,无论使用Noto Sans Mono CJK SC还是使用Noto Sans CJK SC,都可以对齐。
开始以为是noto字体的问题,于是测试了所有能接触到的中文字体,如鸿蒙字体、雅黑字体、小米字体、oppo字体等黑体字体,结果与上述情况相同。按理来说中文字体按照字形划分,可以分为宋、仿、黑、楷等,基本上都是等宽的,没有西文字体“等宽”或者“变宽”一说。
然后迫不得已,查找了pango源码,最终将该问题定位在pango 1.49.0以及以上版本。 查看更新说明,发现了这一句:
* New api: pango_font_get_languages
猜测很可能与该问题有关。于是发看了源代码,由于是一堆的c代码,加上能力有限,实在定位不到问题的具体位置。万能的坛友,有没有这个问题的相关解决方案?