在 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 可能吗?

访问缓存图片phonegap

Phonegap(cordova)将图像保存到自定义相册

如何在 iOS 中使用 Phonegap 配置键盘?

如何在 iOS 中使用自定义 phonegap 3.3 插件

在 PhoneGap 中使用协议缓冲区 - iOS