我正在尝试使用UITextView
加载NSAttributedString
。我正在从富文本文件“NSAttributedString
”加载.rtf
。
我的[NSBundle mainBundle]
中的文件名称为My Text-HelveticaNeue.rtf
,My Text-TimesNewRomanPSMT.rtf
和My Text-MarkerFelt-Thin.rtf
这些文件各自具有正确的字体集。他们也有一些文字大胆。
这是我的代码:
NSString *resourseName = [NSString stringWithFormat:@"My Text-%@", self.currentFontName];
NSURL *rtfUrl = [[NSBundle mainBundle] URLForResource:resourseName withExtension:@".rtf"];
NSError *error;
NSAttributedString *myAttributedTextString = [[NSAttributedString alloc] initWithFileURL:rtfUrl options:nil documentAttributes:nil error:&error];
myTextView.attributedText = myAttributedTextString;
NSLog(@"%@", myAttributedTextString);
Helvetica Neue文件保留所有格式,包括粗体文本。但其他文件只保留其字体;他们不保留大胆的文字。我能做错什么?
修改
我按照@Rob的建议,这是我得到的输出。
Name:HelveticaNeue
Font:<UICTFont: 0xc1aab30> font-family: "Helvetica Neue"; font-weight: normal; font-style: normal; font-size: 13.00pt
Bold:<UICTFont: 0xc1af770> font-family: "Helvetica Neue"; font-weight: bold; font-style: normal; font-size: 13.00pt
Name:MarkerFelt-Thin
Font:<UICTFont: 0xfb16170> font-family: "MarkerFelt-Thin"; font-weight: normal; font-style: normal; font-size: 13.00pt
Bold:<UICTFont: 0xfb18c60> font-family: "MarkerFelt-Thin"; font-weight: normal; font-style: normal; font-size: 13.00pt
Name:TimesNewRomanPSMT
Font:<UICTFont: 0xc1cb730> font-family: "Times New Roman"; font-weight: normal; font-style: normal; font-size: 13.00pt
Bold:<UICTFont: 0xc1c9b30> font-family: "Times New Roman"; font-weight: normal; font-style: normal; font-size: 13.00pt
答案 0 :(得分:1)
iOS不提供MarkerFelt-Thin的粗体或斜体版本,因此无法显示。
iOS确实发布了TimesNewRomanPS-BoldMT,但它似乎并不认为它是TimesNewRomanPSMT的粗体版本。 (我没有测试过,但是根据你的评论,我认为TimesNewRomanPS-ItalicMT也是如此;它存在但不被认为是斜体。)我可能会认为这是一个错误而且打开雷达。
这里的一个关键点是你没有“粗体”或“斜体”字体。粗体字体和斜体字体本身就是完整的字体(由字体设计师单独设计并打包成自己的字体定义)。它们只与基础(“罗马”)版本具有符号关系。如果没有安装粗体版本的字体,那么请求粗体只返回相同的字体。
您可以使用以下程序探索可用的字体以及iOS认为另一种字体的粗体版本的字体:
void LogFontNamed(NSString *name) {
UIFont *font = [UIFont fontWithName:name size:13];
UIFontDescriptor *boldFontDescriptor = [[font fontDescriptor] fontDescriptorWithSymbolicTraits:UIFontDescriptorTraitBold];
UIFont *boldFont = [UIFont fontWithDescriptor:boldFontDescriptor size:13];
NSLog(@"=================");
NSLog(@"Name:%@", name);
NSLog(@"Font:%@", font);
NSLog(@"Bold:%@", boldFont);
NSLog(@"=================");
}
void printFonts() {
// uncomment if you want to explore the font lists
// NSLog(@"%@",[UIFont familyNames]);
// NSLog(@"%@", [UIFont fontNamesForFamilyName:@"Times New Roman"]);
LogFontNamed(@"HelveticaNeue");
LogFontNamed(@"MarkerFelt-Thin");
LogFontNamed(@"TimesNewRomanPSMT");
LogFontNamed(@"TimesNewRomanPS-BoldMT");
}