本来就这么简单,你没搞过gui程序开发才想得太复杂。程序里一般都是直接设置文本,具体显示扔给图形库去处理,图形库又扔给字体库去选字,一般最终会到fontconfig库手上。所以这类问题直接找fontconfig十有八九错不了
驿窗project 写了: ↑2022-02-23 11:41
如果强制字体后候选出现方块,那么应该就可以确认是astolia所说的问题了。
我不知道你这个结论是怎么得出来的。你们两个的系统上安装了的字体都不一定一样
yq-ysy 写了: ↑2022-02-23 11:49
昨天就已经试过了,不论是思源黑体还是宋体,我输入5,在Rime的候选字里,全部都能显示,但是中间有两个字体怪怪的,而且特别小。
如下图最右侧所示。(位置和你的图里第5第6的候选字一样,你缺的可能就是这个小小的字体文件。)
如果我把中间那两个怪字打到文本编辑器上,就显示为方框。

——这个情况在以前都没遇到过,以前不论在Rime的候选字里、还是在文本编辑器上,大小形状都差不多。
(生僻字会调用不同字体,显示起来能看出不同,但大小差别没现在那么严重)。
我想可能是最近的系统升级,Linux的字体默认机制做了某些修改。另外,听说思源字体有升级更新的版本,不知道修改了什么?
如果说中间两个字的话,可不是什么生僻字的问题,可以算是你做的码表的问题。one_hand.text.dict.yaml里面大量字符的unicode编码是在私人使用区里面。私人使用区这东西,就是unicode规范不做规定,字体可以随意映射到任意字形上。所以只有安装了对应的字体才能显示正确的字形。楼主遇到的情况是,他系统上没有任何字体提供了对应的字形;而你图上的情况是,虽然系统中有字体提供了对应的字形,但却不是原本的字体,所以显示的字形不一样。
经测试需要用windows上的宋体才能显示出正确的字形。
驿窗project 写了: ↑2022-02-23 9:09
在后来在与一善鱼沟通验证的过程中,我除了使用debian11+gnome,也测试了debian11+xfce,发现在使用fcitx-wbpy或者fcitx-rime-wbpy或者ibus-rime-wbpy输入gggg的时候,都会显示一个方块,所以,我大概能够确认,这个方块产生的原因,应该与输入法本身无关,而是与输入法以外的其它东西有关;我能想到的,只有系统。
gggg这个同理,也是用到了私人使用区的编码,需要windows上的宋体
一个获取字符unicode编码的简单方法是用bash的printf功能,比如用以下命令来显示顶楼图中的第4和第5个候选项的unicode编码
代码: 全选
$ printf '%x\n' \'乚
4e5a
$ printf '%x\n' \'
e818
e818就在三个私人使用区之一的E000~F8FF里面了
也可以和fc-list结合起来看有哪些字体支持这个unicode编码
代码: 全选
$ printf '%x\n' \'乚 | xargs -I% fc-list :charset=%
/usr/share/fonts/opentype/noto/NotoSerifCJK-Bold.ttc: Noto Serif CJK SC:style=Bold
/usr/share/fonts/opentype/noto/NotoSerifCJK-Bold.ttc: Noto Serif CJK TC:style=Bold
/usr/share/fonts/opentype/noto/NotoSerifCJK-Bold.ttc: Noto Serif CJK JP:style=Bold
/usr/share/fonts/opentype/noto/NotoSerifCJK-Bold.ttc: Noto Serif CJK HK:style=Bold
/usr/share/fonts/opentype/noto/NotoSerifCJK-Bold.ttc: Noto Serif CJK KR:style=Bold
/usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc: Noto Sans CJK JP:style=Regular
/usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc: Noto Sans CJK HK:style=Regular
/usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc: Noto Sans CJK KR:style=Regular
/usr/share/fonts/truetype/wqy/wqy-microhei.ttc: WenQuanYi Micro Hei,文泉驛微米黑,文泉驿微米黑:style=Regular
/usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc: Noto Sans CJK SC:style=Regular
/usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc: Noto Sans CJK TC:style=Regular
/home/a/.local/share/fonts/mingliu.ttc: MingLiU,細明體:style=Regular
/usr/share/fonts/truetype/wqy/wqy-zenhei.ttc: WenQuanYi Zen Hei,文泉驛正黑,文泉驿正黑:style=Regular
/usr/share/fonts/truetype/wqy/wqy-zenhei.ttc: WenQuanYi Zen Hei Sharp,文泉驛點陣正黑,文泉驿点阵正黑:style=Regular
/usr/share/fonts/opentype/noto/NotoSerifCJK-Regular.ttc: Noto Serif CJK SC:style=Regular
/usr/share/fonts/opentype/noto/NotoSerifCJK-Regular.ttc: Noto Serif CJK TC:style=Regular
/usr/share/fonts/opentype/noto/NotoSerifCJK-Regular.ttc: Noto Serif CJK JP:style=Regular
/usr/share/fonts/opentype/noto/NotoSerifCJK-Regular.ttc: Noto Serif CJK KR:style=Regular
/usr/share/fonts/opentype/noto/NotoSerifCJK-Regular.ttc: Noto Serif CJK HK:style=Regular
/usr/share/fonts/truetype/droid/DroidSansFallbackFull.ttf: Droid Sans Fallback:style=Regular
/home/a/.local/share/fonts/simhei.ttf: SimHei,黑体:style=Regular,Normal,obyčejné,Standard,Κανονικά,Normaali,Normál,Normale,Standaard,Normalny,Обычный,Normálne,Navadno,Arrunta
/home/a/.local/share/fonts/mingliu.ttc: PMingLiU,新細明體:style=Regular
/usr/share/fonts/opentype/noto/NotoSansCJK-Bold.ttc: Noto Sans Mono CJK TC:style=Bold
/usr/share/fonts/opentype/noto/NotoSansCJK-Bold.ttc: Noto Sans Mono CJK SC:style=Bold
/usr/share/fonts/opentype/noto/NotoSansCJK-Bold.ttc: Noto Sans Mono CJK KR:style=Bold
/usr/share/fonts/opentype/noto/NotoSansCJK-Bold.ttc: Noto Sans Mono CJK HK:style=Bold
/usr/share/fonts/opentype/noto/NotoSansCJK-Bold.ttc: Noto Sans Mono CJK JP:style=Bold
/home/a/.local/share/fonts/simsun.ttc: SimSun,宋体:style=Regular
/home/a/.local/share/fonts/mingliu.ttc: MingLiU_HKSCS,細明體_HKSCS:style=Regular
/usr/share/fonts/truetype/wqy/wqy-zenhei.ttc: WenQuanYi Zen Hei Mono,文泉驛等寬正黑,文泉驿等宽正黑:style=Regular
/usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc: Noto Sans Mono CJK SC:style=Regular
/usr/share/fonts/truetype/wqy/wqy-microhei.ttc: WenQuanYi Micro Hei Mono,文泉驛等寬微米黑,文泉驿等宽微米黑:style=Regular
/usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc: Noto Sans Mono CJK TC:style=Regular
/home/a/.local/share/fonts/simsun.ttc: NSimSun,新宋体:style=Regular
/usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc: Noto Sans Mono CJK HK:style=Regular
/usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc: Noto Sans Mono CJK KR:style=Regular
/usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc: Noto Sans Mono CJK JP:style=Regular
/usr/share/fonts/opentype/noto/NotoSansCJK-Bold.ttc: Noto Sans CJK JP:style=Bold
/usr/share/fonts/opentype/noto/NotoSansCJK-Bold.ttc: Noto Sans CJK KR:style=Bold
/usr/share/fonts/opentype/noto/NotoSansCJK-Bold.ttc: Noto Sans CJK HK:style=Bold
/usr/share/fonts/opentype/noto/NotoSansCJK-Bold.ttc: Noto Sans CJK TC:style=Bold
/usr/share/fonts/opentype/noto/NotoSansCJK-Bold.ttc: Noto Sans CJK SC:style=Bold
$ printf '%x\n' \' | xargs -I% fc-list :charset=%
/home/a/.local/share/fonts/simhei.ttf: SimHei,黑体:style=Regular,Normal,obyčejné,Standard,Κανονικά,Normaali,Normál,Normale,Standaard,Normalny,Обычный,Normálne,Navadno,Arrunta
/home/a/.local/share/fonts/simsun.ttc: SimSun,宋体:style=Regular
/home/a/.local/share/fonts/mingliu.ttc: MingLiU_HKSCS,細明體_HKSCS:style=Regular
/home/a/.local/share/fonts/simsun.ttc: NSimSun,新宋体:style=Regular