问问题
302 次
1 回答
-1
这不是您问题的解决方案,但可能是有用的信息:
我正在处理一些我想在浏览器中显示的梵文文本数据。
像你一样,尽管尝试了几种字体,包括Arial Unicode MS,但我无法让它在任何浏览器中工作:
浏览器只是Devanagari Test: रः॑
从<body>
JSP 中呈现文本。重音符号明显出现在Sign Visarga上方,而不是基本字符。
这不是有效的符号组合吗?
这是一个有效的组合。我不知道梵文,所以我不知道它在语义上是否“有效”,但是从 Java 应用程序中准确生成您想要的字符是微不足道的:
System.out.println("Devanagari test: \u0930\u0903\u0951");
这是执行println()
调用的输出,在基本字符上方显示重音符号:
上面的屏幕截图来自 Windows 10 上的 NetBeans 8.2,但使用最新版本的 Eclipse 和 Intellij IDEA 渲染效果也很好。约束是:
- 必须按该顺序指定这三个字符才能
println()
使渲染工作。 - 符号 Visarga和重音符号 Udatta必须以其 Unicode 形式呈现。将它们的字形表示粘贴到源代码中是行不通的,尽管这可以为基本字符完成。
- 必须使用适当的字体进行显示。我在上面的屏幕截图中使用了Arial Unicode MS,但其他字体如Serif、SansSerif和Monospaced也可以使用。
有人有想法吗?
不幸的是,没有,尽管很明显:
- 您要渲染的字形存在并且有效。
- 尽管它不会在浏览器中呈现,但它可以由 Java 应用程序写入控制台。
- 问题似乎是所有浏览器都将变音符号(重音符号 Udatta)应用于紧接前面的字符而不是基本字符。
请参阅为什么在某些程序中某些组合变音符号向右移动?有关这方面的更多信息。
于 2018-12-27T01:01:27.727 回答