在 Arch Linux 上使用 Ubuntu 字体的 GNOME 3.38 下时钟分隔符渲染不正确

在 Arch Linux 上使用 Ubuntu 字体的 GNOME 3.38 下时钟分隔符渲染不正确

我最近从 Ubuntu 切换到 Arch Linux,为了方便切换,我安装了 Ubuntu 使用的 GTK 主题,并在整个系统中切换到 Ubuntu 字体系列。但是,GNOME 界面中的时钟有一个小缺陷,所有冒号都被:替换为三冒号,这开始让我很烦恼。

屏幕顶部的时钟

锁屏时钟

时钟应用程序

这可能是由于区域设置不正确造成的,还是这可能是我需要在 GNOME 上提交的错误?

编辑1:ttf-ubuntu-font-family我从Arch 存储库中安装了 Ubuntu 字体系列。

答案1

嗯,这个问题听起来很有趣,所以我做了一些调查......

这里是 gnome-clocks 源代码。来自世界物品.vala

public string time_label {
    owned get {
        return Utils.WallClock.get_default ().format_time (date_time);
    }
}

好的。来自实用程序.vala

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;
}

对我个人来说这似乎很奇怪,但是好吧,:被替换了"\xE2\x80\x8E\xE2\x88\xB6"

我在我的系统上运行了这个:$ echo -e "\xE2\x80\x8E\xE2\x88\xB6"并得到:

在你的电脑上运行它,看看你得到了什么。

根据网站,上面的序列也转换为:。但是什么:?从网站复制并粘贴这里。 结果:

U+200E : LEFT-TO-RIGHT MARK [LRM]
U+2236 : RATIO

现在,您需要确定您的字体是否打印RATIO为三冒号,或者您的语言环境是否混乱,UTF-8 是否处理不正确。我现在不在 GNOME 上,但我认为您可以U+2236在全局 GNOME 搜索中输入以查找并复制它。如果结果是三冒号,那么我建议您更改字体并重试,如果结果是冒号,那么肯定是您的字体,如果不是,则很可能是您的语言环境/UTF-8 设置。

编辑:在任何文本框中(例如在超级用户上搜索)按CTRL+ SHIFT+ u,然后输入2236并按enter。如果是三冒号,我会责怪你的字体。

编辑2:我发现Ubuntu 字体测试器在线并执行了上述组合键。结果:对我来说是正常的冒号。我仔细检查了一下,它人物RATIO...

您能帮我一个忙并运行以下命令吗:fc-match "∶"- 确保复制它作为冒号(三冒号?)是RATIO字符。如果它输出正确的(ubuntu)字体,那么要么是 ubuntu 字体测试网站错了,要么是醉醺醺的我没主意了……

编辑 3:检查是否是字体的另一种简单方法:如果上述echo命令的结果显示三冒号,请尝试更改终端字体,看看它是否变成冒号。如果第一次尝试时确实显示冒号,请将终端的字体更改为与系统字体相同,看看它是否变成三冒号……

Edit4:尝试 Ubuntu 字体这里使用 u+2236 字符表明 Ubuntu 字体确实不包含比率符号,因此无论您的系统回退到哪种字体都会导致此问题。

相关内容