在 iOS 中使用 Phonegap Canvas 自定义字体
Posted
技术标签:
【中文标题】在 iOS 中使用 Phonegap Canvas 自定义字体【英文标题】:Custom fonts in iOS with Phonegap Canvas 【发布时间】:2013-03-22 02:38:46 【问题描述】:我正在尝试在 ios 下的 Phonegap 中制作自定义字体。 我遵循了几个教程并阅读了有关 Stack Overflow 的所有相关问题,但即使我仔细检查了所有内容,我仍然无法正确回答。
这是字体:http://www.dafont.com/m04fatal-fury.font(黑色版)
我已经采取的步骤
使用 Xcode 作为资源将自定义字体文件添加到项目中 向名为 UIAppFonts 的 Info.plist 文件添加一个键。 将此键设为数组 对于您拥有的每种字体,输入字体文件的全名(包括扩展名)作为 UIAppFonts 数组的项目 保存信息.plist 现在在您的应用程序中,您可以简单地调用 [UIFont fontWithName:@"CustomFontName" size:12] 来获取自定义字体以用于您的 UILabel 和 UITextViews 等...
-
将字体添加到资源文件夹 m04b.ttf
添加了 UIAppFonts 数组。 [0] => 'm04b.ttf'
检查实际字体文件是否在构建阶段资源中
ctx.font = '16px M04_FATAL FURY BLACK';
没用。
尝试了后记名称 M04_FATAL-FURY-BLACK 仍然没有运气。我完全迷失在这里我真的不知道该怎么做才能调试这个错误。
非常感谢您的帮助。可能是什么问题呢?我该怎么做才能检查所有内容是否都已加载?
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>UIAppFonts</key>
<array>
<string>m04b.ttf</string>
</array>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
.....
【问题讨论】:
可以加Info.plist
相关栏目吗?
如果你在应用程序的某处添加for (NSString *font in [UIFont familyNames]) NSLog(@"%@", font);
,你能看到字体出现吗? (我看到一个条目“M04_FATAL FURY”)
【参考方案1】:
我遇到了同样的问题。我几乎可以保证你只是用空格或破折号或其他东西拼错了名字。将其放入 viewDidLoad
并搜索与您的姓名相似的内容(通用名称.. 不是 .ttf 名称)。
for (NSString *name in [UIFont familyNames])
NSLog(@"Family name : %@", name);
for (NSString *font in [UIFont fontNamesForFamilyName:name])
NSLog(@"Font name : %@", font);
【讨论】:
【参考方案2】:我使用了 CSS font-face,效果很好:https://developer.mozilla.org/en-US/docs/CSS/@font-face。
刚刚在 www/css 下添加了字体,并包含了带有正确路径的字体。
【讨论】:
【参考方案3】:尝试在“应用程序提供的字体”键下的 .plist 文件中添加字体,这是在您输入键名时建议的,而不是“UIAppFonts”。
【讨论】:
它们是一回事。UIAppFonts
是实际的“原始”键名,而Fonts provided by application
只是对该键的更友好的描述,其中包含了用途。如果您在编辑器中右键单击属性列表,则可以使用 Show Raw Keys/Values
菜单项在原始名称和显示名称之间切换。【参考方案4】:
下载字体并将其放在 www 文件夹中的某个位置。
在您的 css 文件中添加以下内容。
@font-face
font-family: customFontExample;
src: url('/fonts/AveriaGruesaLibre-Regular.ttf');
src 是您下载字体的路径。在此之后,您可以像这样使用名称“customFontExample”为您的元素提供自定义字体
h1
font-family: customFontExample;
【讨论】:
【参考方案5】:对于所有在这里的人,如果您需要@font-face 的东西,那么您做错了。
一旦您的应用程序中的 UIFont 可以使用您的字体,它也可以在您创建的任何 UIWebView 中使用,您只需以正确的方式指定您的 font-family css 属性。
例如
.customfont font-family: 'M04_FATAL-FURY-BLACK';
【讨论】:
【参考方案6】:我尝试了“应用程序提供的字体”/资源嵌入方法,我发现您还必须在应用程序中指定 .ttf 扩展名。
但在画布上下文中,我无法获得正确的大小,字体非常小。
因此,根据我的经验,这效果不佳,您必须退回到 html @font-face 方法,这很痛苦,因为很难知道字体何时加载并准备好使用...
【讨论】:
【参考方案7】:我有同样的问题。问题是我通过查找器将字体添加到资源文件夹中。我注意到虽然文件夹中的字体没有出现在 Xcode 中。然后我通过xcode添加了文件,它工作了!
【讨论】:
以上是关于在 iOS 中使用 Phonegap Canvas 自定义字体的主要内容,如果未能解决你的问题,请参考以下文章
在 iOS5/phonegap 上上传图片。字节数组/数据 URI 可能吗?