2017-08-06 13 views
0

問題フォーム:ジャワスクリプト(Google's Noto Sans Javanese fontを使用して)レンダリングされ、HTML上で適切に "組み合わせ" を、しかし、Windows上ないは、アプリケーション(C#の.NET、Visual Studioの2017)を形成します。Unicodeのグリフが

編集:私のコンピュータはWindows 7,64ビットを使用しています。使用さ

Noto Sans Javanese direct download link (.zip)


グリフ

ありグリフが適切に組み合わされていないことを示すために多くの例がありますが、ここで私が使用したものの例です:

  1. ジャワLETTER NA 、U + A9A4、#43428;
  2. JAVANESE PANGKON、U + A9C0、#43456;
  3. JAVANESEレターTA、U + A9A0、#43424;
  4. JAVANESE VOWEL 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">&#43428;&#43456;&#43424;&#43452;</div> 
</body> 
</html> 

HTML結果:Windowsフォーム(C#の.NET)

を上

Correct rendering of Javanese Script on HTML


誤ったレンダリングが、私は、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#結果:

Incorrect rendering of Javanese script on Windows Form Application


質問

  1. この現象の理由は何ですか?誰か説明できますか?
  2. WindowsフォームアプリケーションでJavaneseスクリプトを正しく「結合」するにはどうすればよいですか?

ありがとうございました!

+0

@downvoter:なぜですか?これは有効な質問ではありませんか? – topher

+0

これは特別な注意が必要ないくつかの奇妙なレンダリングの特徴である場合、有効な質問かもしれないので、私はそれを喜んでアップビューしますが、Windowsフォームの単純な欠陥かもしれません。私はあなたもMicrosoftに報告することをお勧めします。 – Sander

+0

@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

答えて

0

この問題を解決するためのオプションと洞察力はほとんどありません。どうやら、これはこれまでのWindows 7上のWindowsフォームの唯一の問題

で、私のオプションは以下のとおりです。(私の意見では最良の選択肢、)WPFアプリケーションに

  1. スイッチ
  2. Windowsの内部使用WPF Composite Controlたとえば、
  3. は、サードパーティのライブラリを使用して、ビットマップとしてレンダリングフォーム:HarfBuzz

はここ源である、クレジットはすべて、それぞれの作家に行く:Win7 has Unicode 5.1 support onlythe character \uA9A4 falls in Unicode 5.2 range、GDI +テキストレンダリング機能がありますので

  1. cheong00


    a MSDN Threadに大きな説明を掲載しましたグリフのヒントを正しく処理できない(私はi18nの問題について専門家ではないので、特別なグリフヒントのサポートが必要かどうかはわかりません)

    IEやChromeやFirefoxなどの他のWebブラウザはすべて独自のフォントレンダリングエンジンを搭載しているため、 GDI +レンダリングの制限を受けません。

    Btwも "UseCompatibleTextRendering"をtrueに設定しても役に立たないと試しました。

    一方、WPFフォームはテキストを正しくレンダリングします。 WPFアプリケーションに変更するか、必要なコントロールをWinForm hosted WPF controlsに置き換えてください。


  • u/GoogleBingLadya Reddit thread上の洞察を掲載:
  • フォント整形(双方向性、コンテキストベースシェーピング、リガチャ、&並べ替えを配置する)であります非常に複雑なトピックです。私は驚くかもしれませんが、Windowsフォームはフォントシェーピングをサポートしていない可能性があります。

    解決方法は、HarfBuzzのようなライブラリを使用して、結果をビットマップにレンダリングし、そのビットマップを表示することです。詳細については、http://behdad.org/text/を参照してください。

    は実際には、あなたの問題は、8ページのここで説明されています。http://www.panl10n.net/Presentations/Cambodia/Pema/LocalizationofLinux(Bhutan).pdf

    0

    Windows 7はジャワシェーピングをサポートしていません。 JavaneseのシェーピングサポートがWindows 8.1で追加されました。

    関連する問題