public string format_time (GLib.DateTime date_time) {
string time = date_time.format (format == Format.TWELVE ? "%I:%M %p" : "%H:%M");
// Replace ":" with ratio, space with thin-space, and prepend LTR marker
// to force direction. Replacement is done afterward because date_time.format
// may fail with utf8 chars in some locales
time = time.replace (":", "\xE2\x80\x8E\xE2\x88\xB6");
if (format == Format.TWELVE) {
time = time.replace (" ", "\xE2\x80\x89");
}
return time;
}
好吧,这个问题对我来说听起来很有趣,所以我做了一些挖掘......
这是 gnome-clocks 源代码。来自world-item.vala:
好的。从Utils.vala:
对我个人来说似乎很奇怪,但好吧,
:
被替换为"\xE2\x80\x8E\xE2\x88\xB6"
.我在我的系统上运行了这个:
$ echo -e "\xE2\x80\x8E\xE2\x88\xB6"
并得到:∶
在你的身上运行它,看看你会得到什么。
根据这个网站,上述序列也转换为
:
. 但什么是:
?从网站上复制并粘贴到这里。结果:现在由您来确定您的字体是否打印
RATIO
为三号,或者您的语言环境是否混乱并且 UTF-8 处理不正确。我现在不在 GNOME 上,但我认为您可以输入U+2236
全局 GNOME 搜索来查找并复制它。如果它导致一个三号,那么我建议更改你的字体并重试,如果它导致一个冒号,那么它肯定是你的字体,如果不是很可能是你的语言环境/UTF-8 设置。编辑:在任何文本框中(例如搜索超级用户)按CTRL+ SHIFT+ u,然后输入
2236
并按enter。如果它是一个三号,我会责怪你的字体。Edit2:我在网上找到了一个 ubuntu 字体测试器,并在上面做了上面提到的组合键。它对我来说是一个正常的
:
结肠。我仔细看了一遍,是人设RATIO
……请帮我一个忙并运行以下命令:
fc-match "∶"
- 确保将其复制为冒号(三号?)是RATIO
字符。如果它输出正确的(ubuntu)字体,那么那个 ubuntu 字体测试网站是错误的,或者喝醉了我没有想法......Edit3:检查它是否是字体的另一种简单方法:如果上述
echo
命令的结果为您提供三号,请尝试更改终端字体并查看它是否变为冒号。如果您在第一次尝试时确实得到了冒号,请将终端的字体更改为与系统字体相同,然后查看它是否变为三号...编辑 4:在这里尝试使用 u+2236 字符的 Ubuntu 字体表明确实 Ubuntu 字体甚至不包含比率符号,因此无论您的系统使用哪种字体都会导致此问题。