問題:爪哇腳本(使用Google's Noto Sans Javanese font)渲染和 「組合拳」 正確的HTML,但不在Windows窗體應用程序(C#.NET,Visual Studio的2017)。的Unicode字形不窗體
編輯:我的電腦使用Windows 7,64位。
Noto Sans Javanese direct download link (.zip)
使用的字形
有很多情況表明,字形不正確地進行組合,但這裏我用一個例子:
- 爪哇LETTER NA ,U + A9A4,#43428;
- 爪哇曼谷,U + A9C0,#43456;
- JAVANESE LETTER TA,U + A9A0,#43424;
- JAVANESE VELLE SIGN PEPET,U + A9BC,#43452;
Javanese Script Unicode Specification direct download link (.pdf)
正確/預期的行爲
這些字形的四個應該是 「組合」,成爲一個字符
HTML代碼:
<html>
<head>
<meta charset="utf-8">
<style>
.javanese {
font-family: "Noto Sans Javanese";
font-size: 66px;
}
</style>
</head>
<body>
<div class="javanese">ꦤ꧀ꦠꦼ</div>
<div class="javanese">ꦤ꧀ꦠꦼ</div>
</body>
</html>
HTML結果:
Windows窗體(C#.NET)
不正確的渲染,我使用Visual Studio 2017年的社區,創建一個Windows窗體桌面應用。
標籤組件正在使用「Noto Sans Javenese」字體。
C#代碼:
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.label1.Text = "\uA9A4\uA9C0\uA9A0\uA9BC";
this.label2.Text = "ꦤ꧀ꦠꦼ"; // Copied from HTML
// this one is rendered correctly
// Thai character "ko kai" (U+0E01) and combining characters "mai tho" (U+0E49).
this.label3.Text = "\u0E01\u0E49\u0E49\u0E49\u0E49\u0E49\u0E49\u0E49\u0E49";
}
}
}
C#結果:
問題
- 這種行爲的原因是什麼?有人可以解釋嗎?
- 我應該怎樣才能使Java腳本在Windows Form Application上正確地「結合」?
非常感謝!
@downvoter:爲什麼?這不是一個有效的問題嗎? – topher
這可能是一個有效的問題,如果它是一些奇怪的渲染怪癖,需要特別照顧,所以我會高興地祝福它,但它也可能是Windows窗體中的一個簡單缺陷。我建議你也把它報告給微軟。 – Sander
@Sander謝謝!我只是[MSDN上的一個線程](https://social.msdn.microsoft.com/Forums/en-US/33fb4f0c-36a2-411a-97ba-6c0572badd10/unicode-glyphs-not-combined-properly-on- windows-forms?forum = netfxbcl) – topher