如何在Xamarin UWP中使用字体

时间:2018-12-31 07:02:11

标签: xamarin uwp

我正在跨平台应用程序上工作。在webview我想使用@ font-face。它在Android上运行良好,但在UWP上却无法运行。我的字体文件在Assets / Fonts文件夹中,在样式表中,我使用以下代码:

@font-face {
    font-family: 'defont';
    src: url('Assets/Fonts/mher.ttf');
}

在Android中,我使用的是这个

src: url('file:///android_asset/mher.ttf');    

但是当我在UWP中尝试相同的方法时,它不起作用。 请任何人有任何想法吗?

更新:

下面是我使用普通WebView的C#代码。我正在从本地html文件中获取html内容,替换一些占位符并向WebView显示新的html字符串。

var browser = new WebView();
var htmlSource = new HtmlWebViewSource();

var assembly = IntrospectionExtensions.GetTypeInfo(typeof(WebViewPage)).Assembly;
Stream stream = assembly.GetManifestResourceStream("MyApp.Assets.MyTemplate.html");

string templateHtml = "";
using (var reader = new StreamReader(stream))
{
    templateHtml = reader.ReadToEnd();
}

templateHtml = templateHtml.Replace("{pageHeading}", _post.Title);
templateHtml = templateHtml.Replace("{body}", _post.Content);
if (_post.IsFeaturedImageAvailable)
{
    templateHtml = templateHtml.Replace("{imgSrc}", _post.FeaturedImageUrl);
}else
{
    templateHtml = templateHtml.Replace("{imgSrc}", "");
}
templateHtml = templateHtml.Replace("pdfprnt-buttons", "pdfprnt-buttons hide");

htmlSource.Html = templateHtml;
htmlSource.BaseUrl = DependencyService.Get<IBaseUrl>().Get();
browser.Source = htmlSource;
Content = browser;

1 个答案:

答案 0 :(得分:0)

在UWP中它具有特殊的Uri Scheme。为了在Assets文件夹中获取字体,您需要使用ms-appx-web://。请尝试以下代码。

@font-face {
    font-family: 'defont';
    src: url('ms-appx-web:///Assets/Fonts/mher.ttf');
}

更新

我使用了HybridWebView,可以直接加载本地html文件。然后在UWP项目中添加css文件。

html,body{margin:0;padding:10px}

@font-face {
    font-family: 'MyWebFont';
    src: url('ms-appx-web:///Assets/hello.ttf')
}

body, p, h1, span {
    font-family: 'MyWebFont';
}

enter image description here

这是您可以参考的code sample