2

よし、イタリック体とセリフ体を に使おうとしているんだけどNSAttributedString、何らかの理由で、フォントの特性がまったく効果がない。私はそれらを正しく使用したと思います(NSFontDescriptor私の意見では、リファレンスは特によく書かれていないので、確かではありません).

    NSMutableAttributedString *pellString = [[NSMutableAttributedString alloc]
                  initWithString:@"x2 – Dy2 = N"];
    NSFontSymbolicTraits varMask = NSFontModernSerifsClass | NSFontItalicTrait;
    NSDictionary *varSymbolic = [NSDictionary dictionaryWithObject:
                                 [NSNumber numberWithUnsignedInteger:varMask] 
                                                            forKey:NSFontSymbolicTrait];
    NSDictionary *varAttrs = [NSDictionary dictionaryWithObject:varSymbolic
                                                         forKey:NSFontTraitsAttribute];
    NSFontDescriptor *varDesc = [NSFontDescriptor fontDescriptorWithFontAttributes:varAttrs];
    NSFont *variables = [NSFont fontWithDescriptor:varDesc
                                              size:24];
    [pellString addAttribute:NSFontAttributeName value:variables range:NSMakeRange(0, 12)];

オブジェクトであるNSLog を実行するとvariablesNSFont次のようになります。

"LucidaGrande 24.00 pt. P [] (0x7f9f43e18970) fobj=0x7f9f43e18b40, spc=7.59"

言い換えれば、NSFont私が尋ねたようにセリフ フォントを作成したり、イタリック フォントを作成したりしませんでした (そして、それぞれを個別に試しましたが、他のフォントは使用しませんでした)。NSFontDescriptorそこに入力したキーと値のペアをログに記録したため、問題はNSFontオブジェクトが作成された段階にあるに違いありません。私の推測では、これらは読み取り専用のプロパティであり、設定することはできず、読み取ることしかできません。私はこれを正しく読んでいますか?

もしそうなら、一般的なセリフ フォントを指定する好ましい方法は何でしょうか? または、特定のフォントを選択して、そのフォントにアクセスできない可能性のあるユーザーに対処する必要がありますか?

4

0 に答える 0