javascript - 为什么 Unicode 组合字符顺序在 IDEA 和 Chrome 之间不同?

标签 javascript java google-chrome intellij-idea unicode

在 Java 中,我正在生成一个包含字母 AB 的字符串,并带有 COMBINING OVERLINE中间有U+0305字符。

@Test
public void test() {
  System.out.println("A\u0305B");
}

我在 IDEA 中得到了这个:

enter image description here

但是如果我复制到这里,就会变成A̅B


这个来自 Chrome 控制台:

enter image description here

我对combining character感到困惑的组合顺序。哪一个是正确的?

我在写 this在 Kotlin 中编译成 JavaScript 以在浏览器中运行。在IDEA中调试是正确的,但是浏览器显示不同的答案。

最佳答案

如果要相信维基百科并避免跳入密集的 Unicode Consortium 权威 PDF 丛林,与此相关的文本是“In Unicode, diacritics are always added after the main character (in contrast to some older combining character sets such as ANSEL), so it is possible to add several diacritics to the same character, although as of 2010, few applications support correct rendering of such combinations.”(也许我应该在那个时候编辑页面以添加“需要引用” ,不过)。

无论如何,在我系统的 GTK+、SDL 和两个浏览器中,上划线都绘制在前导字符上。我的 Qt 应用程序不支持此字符,但它的所有同级变音符 - 包括“\u0304”和“\u0306”,都绘制在前面的字符上。与上划线不同的是,它们用于拉丁语的“真实世界”文本中,随着变音变位,它们将以荒谬的错误方式呈现。

从这些观点来看,我认为很明显,呈现以下字母标志的子系统存在错误。此外,正如我们从评论中看到的那样,问题可能出在使用的字体上——有缺陷的字体比有缺陷的 IDE 好。

关于javascript - 为什么 Unicode 组合字符顺序在 IDEA 和 Chrome 之间不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56621353/

相关文章:

javascript - Polymer:如何访问 'content' 标签内的元素

javascript - 小书签脚本太长,无法创建应用程序快捷方式

javascript - 如何首先隐藏类并仅在 jQuery 悬停时显示?

javascript - 如何连接Websocket API?

java - 在 CORBA/JAVA 教程中运行 HelloServer 时出现错误名称错误

java - 多线程访问数组

Java从数组时间复杂度中找到最大值

javascript - 如何将 userDataDir 配置文件文件夹传递给 Puppeteer

google-chrome - Windows 7 下 Chrome 上的网页字体渲染存在缺陷

php - 如何将 json 编码的 PHP 数组转换为 Javascript 中的数组?