Проблема: яванский скрипт (используется шрифт Google Noto Sans Javanese) правильно отображаются и "объединяются" в HTML, но не в приложении Windows Forms (C# .NET, Visual Studio 2017).
Изменить. На моем компьютере установлена 64-разрядная версия Windows 7.
Прямая ссылка для скачивания Noto Sans Javanese (.zip)
Используемые глифы
Есть много случаев, показывающих, что глифы не сочетаются должным образом, но вот один пример, который я использовал:
- ЯВАНСКАЯ БУКВА NA, U+A9A4, #43428;
- ЯВАНСКИЙ ПАНКОН, U+A9C0, #43456;
- ЯВАНСКАЯ БУКВА TA, U+A9A0, #43424;
- ЯВАНСКИЙ ГЛАСНЫЙ ЗНАК PEPET, U+A9BC, #43452;
Прямая ссылка для скачивания спецификации Unicode для Javascript (.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 Forms (C# .NET)
Я использую Visual Studio 2017 Community для создания настольного приложения Windows Forms.
Компоненты меток используют шрифт "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#:
Вопросы
- В чем причина такого поведения? Может кто-нибудь объяснить?
- Что мне нужно сделать, чтобы яванский сценарий правильно «объединялся» в приложении Windows Form?
Большое спасибо!
UseCompatibleTextRendering
наtrue
, но результат все равно неверный, вот скриншот. Я согласен с вами, что Win 7 может быть проблемой. - person topher   schedule 07.08.2017