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);
両方のケースで同じフォント記述子を作成しましたが、最初のケースmatchedDescriptors
はnil
CoreText API で にいくつかのフォントがありますmatchedDescriptors
。バグですか?
しかし、一般的に、必須属性として渡す場合nil
、XXXMatchingFontDescriptorsXXX
少なくとも 1 つの記述子を返す必要がありますか?