自定义字体
前端
前端使用自定义字体非常简单,和浏览器一样,使用 font-family 样式即可。
有两个范例:hippy-react-demo、hippy-vue-demo
但是如果要使用操作系统自带以外的字体,需要单独整合一下,继续阅读下面内容。
iOS
整合字体文件
打开 iOS 工程,新建一个 fonts
目录,并将字体文件拖动到该目录中。按照截图,建立字体引用即可,确保 Target 正确。
然后点击项目中的字体文件,并再次确认 Target 正确。
检查项目配置
确认项目的设置的 Build Phases
里字体文件正确整合。
将字体添加到 Info.plist
将准确的字体文件名加入 Info.plist
的 Fonts provided by application
字段,如果没有这行的话,需要手工 Add row
添加一行。
验证字体正确性
如果一切都正确,前端应该已经能正常显示自定义字体了,不过有的时候还是显示不了,其中最常见的,就是 Font Family 参数值不对,因为字体文件名 !== Font Family。
有个简单办法可以进行校验,将 Font Family 全部列出来检查。
在 AppDelegate.m
的 application didFinishLaunchingWithOptions
方法中加上以下代码,在 Debug
菜单中打开 Debug Area
下 Active Console
(按下 Command + Shift +C 可以快速打开)即可打印所有 Font Family。
for (NSString* family in [UIFont familyNames])
{
NSLog(@"%@", family);
for (NSString* name in [UIFont fontNamesForFamilyName: family])
{
NSLog(@" %@", name);
}
}
Android
整合字体文件
Android 只需要在静态资源 assets
目录中建立 fonts
目录,然后把字体文件拷贝进去即可。
需要注意的是,字体文件名需要和 FontFamily 一致,因为 Android 虽然也可以做字体文件名映射,但是字体和文件名一致无疑是最简单的办法。
官方 demo 的字体放在 res/fonts 目录下,是因为编译脚本将
res
目录下的文件直接拷贝到assets
目录下了,所以res/assets
就变成assets/assets
目录,为了让字体目录正确拷贝进assets
静态资源目录,只能让它放在res
下。