2

CreateFont(..)OSXでWindowsの機能に代わるものはありますか?

NSFontDescriptorとそのメソッドを使用しようとしましmatchingFontDescriptorsWithMandatoryKeys:たが、このメソッドは「最も近い」フォントを見つけられず、一致する特性を見つけ、nil.

OSX で指定された特性 ( CreateFontなど) で最も近いフォントを見つける方法はありますか?

更新しました

NSFontDescriptor で奇妙なことが起こります..

私は2つのコードを持っています:

ココアについて:

NSDictionary* fontTraits = [NSDictionary dictionaryWithObjectsAndKeys:
                            [NSNumber numberWithInt:NSFontSansSerifClass], NSFontSymbolicTrait,
                            [NSNumber numberWithFloat:0.4], NSFontWidthTrait,
                            nil];

NSDictionary* fontAttributes = [NSDictionary dictionaryWithObjectsAndKeys:
                    fontTraits, NSFontTraitsAttribute,
                    nil];

NSFontDescriptor* fontDescriptor = [NSFontDescriptor fontDescriptorWithFontAttributes:fontAttributes];

NSArray* matchedDescriptors = [fontDescriptor matchingFontDescriptorsWithMandatoryKeys:nil];

CoreText API を使用して:

CFMutableDictionaryRef fontTraits = CFDictionaryCreateMutable(kCFAllocatorDefault, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);

float weight = 0.4;

CFNumberRef fontWeight = CFNumberCreate(kCFAllocatorDefault, kCFNumberFloat32Type, &weight);

CFDictionaryAddValue(fontTraits, kCTFontWeightTrait, fontWeight);

int symbolicTraits = kCTFontSansSerifClass;

CFNumberRef fontSymbolicTraits = CFNumberCreate(kCFAllocatorDefault, kCFNumberIntType, &symbolicTraits);

CFDictionaryAddValue(fontTraits, kCTFontSymbolicTrait, fontSymbolicTraits);

CFMutableDictionaryRef fontAttributes = CFDictionaryCreateMutable(kCFAllocatorDefault, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);

CFDictionaryAddValue(fontAttributes, kCTFontTraitsAttribute, fontTraits);

CTFontDescriptorRef fontDescriptor = CTFontDescriptorCreateWithAttributes(fontAttributes);

CFArrayRef matchedDescriptors = CTFontDescriptorCreateMatchingFontDescriptors(fontDescriptor, 0);

両方のケースで同じフォント記述子を作成しましたが、最初のケースmatchedDescriptorsnilCoreText API で にいくつかのフォントがありますmatchedDescriptors。バグですか?

しかし、一般的に、必須属性として渡す場合nilXXXMatchingFontDescriptorsXXX少なくとも 1 つの記述子を返す必要がありますか?

4

1 に答える 1