我正在跨平台应用程序上工作。在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;
答案 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';
}
这是您可以参考的code sample。