Es scheint, dass meine WPF-App einige Unicode-Zeichen durch andere ersetzt.Inkonsistente Unicode-Zeichenersetzung mit WPF
Mit diesem einfachen Beispiel:
<Window x:Class="WPFUnicodeFail.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WPFUnicodeFail"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525" FontFamily="Segoe UI" FontSize="40">
<StackPanel Orientation="Horizontal">
<Label>◀</Label>
<Label>◀</Label>
<Label>◄</Label>
<Label>◄</Label>
<Label>▲</Label>
</StackPanel>
ich dieses Ergebnis:
Während, wenn ich die Schriftart Arial wechseln, bekomme ich diese:
Nichts davon macht viel Sinn, weil die ersten beiden Etiketten die BLACK LEFT-POINTING TRIANGLE (U+25C0) ◀ sein sollten und die folgenden zwei sollten BLACK LEFT-POINTING POINTER (U+25C4) ◄ sein. Das TRIANGLE soll ein gleichseitiges Dreieck sein, während der POINTER flacher sein soll. Mit Segoe UI wird das TRIANGLE transparent durch den POINTER ersetzt. Mit Arial ist es noch schlimmer, sie sind geschaltet.
Der Versuch, sowohl das Zeichen selbst im Quellcode als auch den Code &#x
zu verwenden, führt zu dem gleichen Ergebnis wie in den obigen Bildern.
In Word 2016, versuche ich, die drei verschiedenen Charaktere mit Segoe UI und ich bekomme das richtige Ergebnis (obwohl mit inkonsistenter Skalierung auch wenn die Schriftgröße das gleiche ist, aber das ist ein anderes Thema):
Warum passiert das? Wie bekomme ich konsistente Ergebnisse mit verschiedenen Schriftarten? Oder zumindest, wie bekomme ich das TRIANGLE mit Segoe UI und anderen Fonts, die es in den POINTER zu verwandeln scheinen?