- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
刚刚将我的 iPod touch 升级到 iOS 7.0.3,“HelveticaNeue-Italic”似乎消失了。当我在手机上查询时:
[UIFont fontNamesForFamilyName:@"Helvetica Neue"]
我得到以下字体名称 (13):
HelveticaNeue-BoldItalic,
HelveticaNeue-Light,
HelveticaNeue-UltraLightItalic,
HelveticaNeue-CondensedBold,
HelveticaNeue-MediumItalic,
HelveticaNeue-Thin,
HelveticaNeue-Medium,
HelveticaNeue-ThinItalic,
HelveticaNeue-LightItalic,
HelveticaNeue-UltraLight,
HelveticaNeue-Bold,
HelveticaNeue,
HelveticaNeue-CondensedBlack
当我在模拟器中运行相同的查询时,我得到 (14):
HelveticaNeue-BoldItalic,
HelveticaNeue-Light,
**HelveticaNeue-Italic,**
HelveticaNeue-UltraLightItalic,
HelveticaNeue-CondensedBold,
HelveticaNeue-MediumItalic,
HelveticaNeue-Thin,
HelveticaNeue-Medium,
HelveticaNeue-Thin_Italic,
HelveticaNeue-LightItalic,
HelveticaNeue-UltraLight,
HelveticaNeue-Bold,
HelveticaNeue,
HelveticaNeue-CondensedBlack
其他人看到了吗?
----新信息----
我回到了 WWDC 2013 视频“Using Font with Text Kit”,有趣的部分从 12:22 开始。演示者以 OS X 中的“MetaFonts”为例。他说的是字体调用如下:
+ (NSFont *)messageFontOfSize:(CGFloat)fontSize
不保证跨版本甚至不同用途返回相同的底层字体。他的例子是露辛达格兰德。他似乎并不是说使用“HelveticaNeue-Italic”可以从一个版本到另一个版本。
所以我在 iOS 7 中构建了一个实验。我使用以下代码创建了我的字体:
UIFontDescriptor *fontDescriptor = [UIFontDescriptor fontDescriptorWithName:@"Helvetica Neue" size:16.0];
UIFontDescriptor *symbolicFontDescriptor = [fontDescriptor fontDescriptorWithSymbolicTraits:UIFontDescriptorTraitItalic];
UIFont *fontWithDescriptor = [UIFont fontWithDescriptor:symbolicFontDescriptor size:16.0];
我确实为 fontWithDescriptor 得到了一个有效的 UIFont,当我使用以下命令查询 fontName 的字体时:
[fontWithDescriptor fontName]
我回来了……
HelveticaNeue-Italic
去看看???
所以对 7.0.3 的可能答案似乎是上面的代码。
----进一步调整----
虽然上述解决方案有效,但我认为它在形式上并不正确。我已切换到以下解决方案
UIFontDescriptor *fontDescriptor = [[UIFontDescriptor alloc] init];
UIFontDescriptor *fontDescriptorForHelveticaNeue = [fontDescriptor fontDescriptorWithFamily:@"Helvetica Neue"];
UIFontDescriptor *symbolicFontDescriptor = [fontDescriptorForHelveticaNeue fontDescriptorWithSymbolicTraits:UIFontDescriptorTraitItalic];
textFont = [UIFont fontWithDescriptor:symbolicFontDescriptor size:textFontPointSize];
这似乎做了所有正确的事情。我用另一个字体系列尝试了以前的方法,它似乎与 fontName 和 fontFamily 混淆了。希望这会有所帮助!
最佳答案
这是一个 Apple 错误。它是在 iOS 7.0.3 中引入的,并且在 iOS 7.0.4 中尚未修复。它似乎已在 iOS 7.1 的开发者预览版中修复。以下是解决此问题的代码(由 Apple 在开发论坛中提供):
#import <CoreText/CoreText.h>
CGFloat size = 14;
UIFont *font = [UIFont fontWithName:@"HelveticaNeue-Italic" size:size];
if (font == nil && ([UIFontDescriptor class] != nil)) {
font = (__bridge_transfer UIFont*)CTFontCreateWithName(CFSTR("HelveticaNeue-Italic"), size, NULL);
}
还值得注意的是,在当前版本的 Xcode (5.0.1 (5A2053)) 中,此字体并未作为选项列在 Interface Builder 的字体下拉列表中。因此,如果您之前使用此字体配置了标签,您会注意到 ui 被混淆,并且标签最终在运行时被分配了一些其他字体和大小(参见下面的 ui screencap)。对于在 storyboards/xibs 中配置的标签,您需要在代码中重置字体。
供引用here是开发者论坛中对该问题的讨论。
关于objective-c - iOS 7.0.3 上的 "HelveticaNeue-Italic"发生了什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19527962/
iOS5 开箱即用地支持 HelveticaNeue-Medium,我可以使用 xibs 设置所有内容。 但是,iOS4 中缺少该字体。我尝试从我的 OSX 目录添加 HelveticaNeue.df
我在我的 Android 应用程序中使用“HelveticaNeue.ttf”作为自定义字体;对于所有以前的 android 版本都很好,但是对于 lollipop,它比通常的字体拉伸(stretch
让 iOS 7/8 正确呈现我的字体让我很头疼。 iOS 似乎不知道如何渲染 Helvetica Neue Light 的粗体变体 (HelveticaNeue-Light/HelveticaNeue
我正在创建 UILabel,对于标签,我可以将字体名称设置为 HelveticaNeue Regular、Light、UltraLight 等,但我无法将字体名称设置为 HelveticaNeue T
澄清!这个问题是关于 iOS 框架 Pixate ( http://www.pixate.com ),而不是 UIWebView 内的常规 CSS。 default.css 中的代码: .title
我查看了以下链接: Setting UILabel - Font through code - generates error - iPhone 其中提供了查看所有可用 iOS 字体的代码。对于 He
刚刚将我的 iPod touch 升级到 iOS 7.0.3,“HelveticaNeue-Italic”似乎消失了。当我在手机上查询时: [UIFont fontNamesForFamilyName
我正在运行 rspec 测试,它们通过得很好,但我收到以下消息: phantomjs[25837:507] CoreText performance note: Client called CTFon
我是一名优秀的程序员,十分优秀!