اینکه wpf نمیتونه فونت رو به خوبی رندر کنه مربوط میشه به تکنولوژی رندر توی wpf و uwp که خوب کاملا مشخصه uwp امکانات بهتری رو داره
به عنوان راه حل من الان 2 تا چیز به ذهنم میرسه:
یک اینکه حروف رو بصورت کد اسکی و یونیکد و این جور داستان ها بخونی و تغییر رنگ بدی
دو اینکه از متن فرمت بندی شده استفاده کنی یه نمونه براتون مینویسم البته این مثال کل متن رو تغییر میده ولی بنظرم اگر کمی باهاش تمرین کنید شاید بتونید چیزی که میخواید رو بدست بیارید
private Drawing DrawMyText(string textString)
{
DrawingGroup drawingGroup = new DrawingGroup();
using (DrawingContext drawingContext = drawingGroup.Open())
{
FormattedText formattedText = new FormattedText(
textString,
CultureInfo.GetCultureInfo("en-us"),
FlowDirection.LeftToRight,
new Typeface("Comic Sans MS Bold"),
48,
System.Windows.Media.Brushes.Black // This brush does not matter since we use the geometry of the text.
);
Geometry textGeometry = formattedText.BuildGeometry(new System.Windows.Point(20, 0));
drawingContext.DrawRoundedRectangle(System.Windows .Media.Brushes.PapayaWhip, null, new Rect(new System.Windows.Size(formattedText.Width + 50, formattedText.Height + 5)), 5.0, 5.0);
drawingContext.DrawGeometry(System.Windows.Media.B rushes.Gold, new System.Windows.Media.Pen(System.Windows.Media.Brus hes.Maroon, 1.5), textGeometry);
return drawingGroup;
}
}
نحوه استفاده هم به این صورت هست که یه کنترل بزارید روی فرمتون (مثل textblock یا هر کنترل دیگه) :
xx.Background = new DrawingBrush(DrawMyText("مُحَمّد"));