0
4

1 回答 1

-1

这不是您问题的解决方案,但可能是有用的信息:

我正在处理一些我想在浏览器中显示的梵文文本数据。

像你一样,尽管尝试了几种字体,包括Arial Unicode MS,但我无法让它在任何浏览器中工作:

浏览器梵文

浏览器只是Devanagari Test: &#x0930;&#x0903;&#x0951;<body>JSP 中呈现文本。重音符号明显出现在Sign Visarga上方,而不是基本字符。

这不是有效的符号组合吗?

这是一个有效的组合。我不知道梵文,所以我不知道它在语义上是否“有效”,但是从 Java 应用程序中准确生成您想要的字符是微不足道的:

System.out.println("Devanagari test: \u0930\u0903\u0951");

这是执行println()调用的输出,在基本字符上方显示重音符号:

梵文1

上面的屏幕截图来自 Windows 10 上的 NetBeans 8.2,但使用最新版本的 Eclipse 和 Intellij IDEA 渲染效果也很好。约束是:

  • 必须按该顺序指定这三个字符才能println()使渲染工作。
  • 符号 Visarga重音符号 Udatta必须以其 Unicode 形式呈现。将它们的字形表示粘贴到源代码中是行不通的,尽管这可以为基本字符完成。
  • 必须使用适当的字体进行显示。我在上面的屏幕截图中使用了Arial Unicode MS,但其他字体如SerifSansSerifMonospaced也可以使用。

有人有想法吗?

不幸的是,没有,尽管很明显:

  • 您要渲染的字形存在并且有效。
  • 尽管它不会在浏览器中呈现,但它可以由 Java 应用程序写入控制台。
  • 问题似乎是所有浏览器都将变音符号(重音符号 Udatta)应用于紧接前面的字符而不是基本字符。

请参阅为什么在某些程序中某些组合变音符号向右移动?有关这方面的更多信息。

于 2018-12-27T01:01:27.727 回答