react-native - 将自定义字体加载到 Android 上的 React Native Webview
问题描述
我正在使用react-native-dynamic- fonts 在运行时注入动态字体。
我从 Google Fonts 下载了Spicy Rice,我正在使用它:
export default class App extends Component<Props> {
componentWillMount() {
loadFonts([{name: 'SpicyRice-Regular', data: font, type: 'ttf'}], true).then(function(names) {
console.log('Loaded all fonts successfully. Font names are: ', names);
});
}
render() {
return (
<View style={{flex: 1, marginTop: 150}}>
<Text style={{fontFamily: 'SpicyRice-Regular', fontSize: 25, color: 'red'}}>Foo</Text>
<WebView style={{ flex: 1, }} source={content} />
</View>
);
}
}
我看到我的控制台日志并返回SpicyRice-Regular
。但是,当我尝试在 Android 上的 WebView 中使用它时,它似乎不起作用。
我的 WebView 只是使用:
p {
font-size: 150px;
font-family: 'SpicyRice-Regular';
font-weight: 400;
font-style: normal;
}
但是,它在 iOS 上呈现,但在 Android 上不呈现。
IOS:
安卓:
解决方案
Android Webview 的字体不会瀑布流。就像 Chrome 浏览器一样,Webview 的每个实例都被沙箱化到自己的环境中。
不过,您确实可以访问文件系统,并且可以使用url("file:///android_asset/fonts/<filename>")
Webview CSS 属性直接链接到字体资产,因此这样的事情应该可以工作:
p {
font-size: 150px;
font-family: 'SpicyRice-Regular';
font-weight: 400;
font-style: normal;
src: url('file:///android_asset/fonts/SpicyRice-Regular.ttf')
}
推荐阅读
- c - 为什么 epoll_wait 不响应终端输入?
- webrtc - TURN 服务器 - 关于在 WebRTC 上下文中使用某些属性的问题
- django-models - forms.ModelChoiceField 使用默认值更新视图
- java - 如何在 Java 中使用 Junit4 设置测试容器?
- python - Django:Pillow 似乎已安装但未显示在 pip freeze 中
- c# - 另一个 TempData 在控制器操作之间消失的案例
- sql-server - SQL Server:在此 JSON 结构中选择 JSON 列
- java - 有没有办法重用部分代码来实例化包含不同数据类型的数组列表?
- wpf - 在原始线程上调用方法时创建新的 UI 线程
- android - Xamarin.Forms XAML 图像使用“mipmap”而不是“drawable”范例