1

をロードしようとしてUITextViewNSAttributedStringます。NSAttributedStringをリッチ テキスト ファイル " " から読み込んでい.rtfます。

my 内のファイルの名前は[NSBundle mainBundle]My Text-HelveticaNeue.rtfMy 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
4

1 に答える 1

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");
}
于 2013-09-30T21:59:20.683 に答える