android - 在 Android WebView 中使用应用程序文件目录中的 TTF 字体
问题描述
我需要实现可以离线渲染 HTML 的 WebView。HTML 中可能会使用多种字体,我将它们全部下载到应用程序的文件目录中,使用context.getFilesDir()
.
我的目标:将这些字体文件“输入”到 WebView 中,以使呈现的 HTML 看起来正确。
到目前为止我尝试了什么。
通过以下方式将 HTML 绑定到 WebView:
baseUrl = "file:///data/user/0/com.myapp/files/fonts"; // this is for convenience, I don't hardcode like this in code
webView.loadDataWithBaseURL(baseUrl, html, "text/html; charset=utf-8", "UTF-8", null);
指定的文件夹包含所有下载的字体。
而且我还@font-face
像这样向 HTML 的标题添加配置:
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<style id="fonts">@font-face { font-family: Guttman Stam; src: url(/Guttman Stam.ttf); }</style>
</head>
<body>
<p><span style="background-color:#FFFFFF;font-family:Guttman Stam;font-size:26pt;">text</span></p>
</body>
</html>
我确保该文件/data/user/0/com.myapp/files/fonts/Guttman Stam.ttf
存在。
不幸的是,它不起作用。我还尝试在@font-face
使用WebViewnull
和""
WebView时提供完整的配置路径baseUrl
,但没有运气。
所以,我有点迷路了。帮助将不胜感激。
解决方案
我用了很长一段时间,不确定这是否适用于您的情况,仅供参考
String finalDataToLoad = "<link rel=\"stylesheet\" type=\"text/css\" href=\"file:///android_asset/font_helvetica.css\" />" + YOUR_HTML;
webView.loadDataWithBaseURL("file://" + outPutFolder, finalDataToLoad, "text/html", "utf-8", null);
outPutFolder 是我有图像的地方
我在资产文件夹中有字体
推荐阅读
- javascript - Array.prototype.filter 的猴子补丁破坏了 AngularJS 1.6
- typescript - 单元测试 mocha Visual Studio 代码描述未定义
- automation - Jira 应用程序属性存储在哪里
- python - twitter api 到 mysql 使用 python
- java - 断言文本时如何在Java中跳过一行
- jsch - JSch session.openChannel
- django - 如何在 apiview 中获取访问令牌
- r - 如何检查文件是否在 R 中是 zip 文件?
- python - ground_truth = np.squeeze(np.asarray(true_labels))
- powershell - 如何通过 powershell 和批处理从我的网站下载东西?