如何将自定义字体应用于Web浏览器内容WP7

时间:2013-01-02 09:48:28

标签: windows-phone-7 webbrowser-control font-family

正在开发用于在Windows手机中学习 webBrowser 概念的简单应用。我的目标是在我的WP7中以泰卢固语(印度语)显示内容。该Web应用程序仅显示Telugu内容

我的MainPage.xaml.cs代码是:

private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
    {
        webBrowser1.Navigate(new Uri("http://www.eenadu.net", UriKind.Absolute));
    }

在MainPage.xaml文件中

<phone:WebBrowser HorizontalAlignment="Left" Margin="0,92,0,0" Name="webBrowser1"
 VerticalAlignment="Top" Height="575" Width="468" FontFamily="Fonts/eenadu.ttf#Eenadu"  />

我在我的项目中将.ttf文件包含在Fonts文件夹下并分配了Build Action ='Content'

能够调用URL但显示不可读的字符。

有没有其他方法可以将自定义字体应用于网络浏览器控件?

提前致谢

2 个答案:

答案 0 :(得分:2)

Windows手机支持网络字体。但是,它们不能嵌入XAP中。建议的解决方法是在远程服务器上托管字体,并可能使用AppCache将字体文件保存在设备本地。

答案 1 :(得分:0)

无需从远程服务器托管,您可以使用本地字体嵌入式CSS并注入浏览器控件。

(1。)创建带有嵌入字体的CSS

body, a, p, span, div, textarea {
        font-family: MyCustomFont;
}

@font-face {
    font-family: MyCustomFont;
    src: url(data:application/x-font-woff;charset=utf-8;base64,d09GRgABAXXXXXXXXXXX......) format('woff');
    font-weight: normal;
    font-style: normal;
} 

(2.)在WebView_NavigationCompleted方法

中注入jQuery和CSS
 private async void MyWebView_NavigationCompleted(WebView sender, WebViewNavigationCompletedEventArgs args)
 {
    // Inject jQuery file which located at local
    StorageFile jquery = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///JavaScripts\\jquery-1.10.2.min.js"));
        string jquery_string = await FileIO.ReadTextAsync(jquery);
        await MyWebView.InvokeScriptAsync("eval", new string[] { jquery_string });


    // Inject custom font embedded CSS 
    StorageFile myfontcss = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///CSS\\mycustomfont.css"));
            string myfontcss_string = await FileIO.ReadTextAsync(myfontcss);

            myfontcss_string = myfontcss_string.Replace("\n", "").Replace("\t", ""); //.Replace("'", "&#39;").Replace("\"", "&#34;");
            string cssRef = "$(\"<style id='myfont' type='text/css'>" + myfontcss_string + "</style>\").appendTo('head');";

            await MyWebView.InvokeScriptAsync("eval", new string[] { cssRef });

 }