gpt4 book ai didi

c# - 使用 WPF 网页浏览器和带有斜体标签和阿拉伯文本的 HTML 时出现奇怪的字符

转载 作者:行者123 更新时间:2023-12-04 02:36:21 24 4
gpt4 key购买 nike

我想不出这个,但我在下面做了一个简单的演示。在 IE 或 Edge 中查看此页面时,它会正确呈现。我尝试过不同的编码,如 utf-16、Windows-1252,但没有用。对我来说,WebBrowser 控件看起来像是一个问题。有人能解决这个问题吗?

ArabicPage.html

<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<p><i>اتفاقية</i></p>
<p>اتفاقية</p>
</body>
</html>

LayoutTest.xaml

<Page x:Class="WpfApp1.LayoutTest"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:WpfApp1"
mc:Ignorable="d"
Background="Yellow"
d:DesignHeight="450" d:DesignWidth="800"
Loaded="Page_Loaded"
Title="LayoutTest">
<WebBrowser x:Name="MyWebBrowser" Margin="20,5,0,5"/>
</Page>

LayoutTest.xaml.cs

using System;
using System.Text;
using System.Windows;
using System.IO;
using System.Windows.Controls;
namespace WpfApp1
{
public partial class LayoutTest : Page
{
public LayoutTest()
{
InitializeComponent();
}

private void Page_Loaded(object sender, RoutedEventArgs e)
{
string dirPath = AppDomain.CurrentDomain.BaseDi‌rectory;
string fileName = "ArabicPage.html";
string filename = Path.GetFullPath(Path.Combine(dirPath, fileName));
string content = File.ReadAllText(fileName, Encoding.UTF8);
MyWebBrowser.NavigateToString(content);
}
}
}

如果没有斜体标签,它会正确呈现:

Arabic without italic tag

在 Edge 浏览器中呈现:

Arabic rendered in Edge

更新:

我已经使用 UWP webview 对其进行了测试,它在那里可以正常工作。

最佳答案

您可以通过使用正确支持阿拉伯字符的字体来避免它,例如 Tahoma:

<html lang="ar" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body style = "font-family:Tahoma,serif">
<p><i style = "font-size:26px;">اتفاقية</i></p>
<p style = "font-size:26px;">اتفاقية</p>
</body>
</html>

默认情况下,Windows 10 中的字体是 Segoe UI。好像是Windows 10的问题更多details from microsoft here .

编辑:

Reply to comment

事实上,您可以在 Windows 10 设置/字体页面(按阿拉伯语筛选)中看到,Segoe UI 字体有一个独立于 Regular 字体的斜体字体,与 Tahoma 相反 斜体包含在常规字体中。虽然当我在此设置中尝试使用 Segoe UI 作为所选字体时,阿拉伯语单词示例令人惊讶地正确渲染了所有可用字体样式的字符。

关于c# - 使用 WPF 网页浏览器和带有斜体标签和阿拉伯文本的 HTML 时出现奇怪的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61678871/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com