OSX에서 Windows CreateFont(..)
기능을 대체 할 수 있습니까?OSX에서 지정된 특성으로 글꼴 찾기
및 해당 matchingFontDescriptorsWithMandatoryKeys:
메서드를 사용해 보았지만이 메서드는 "가장 가까운"글꼴을 찾지 못했고 일치하는 특성을 찾았으며 nil
을 반환 할 수 있습니다.
OSX에서 지정된 특성 (예 : CreateFont)으로 가장 가까운 글꼴을 찾는 방법이 있습니까? 코코아에
:
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);
을
내가 코드의 두 가지가
.. NSFontDescriptor와
뭔가 이상한 일 업데이트
두 경우 모두 동일한 글꼴 설명자를 만들었지 만, 첫 번째 경우 matchedDescriptors
은 nil
이고 CoreText API의 경우 matchedDescriptors
에 글꼴이 있습니다. 그게 버그 야?
그러나 일반적으로 필수 속성으로 nil
에서 XXXMatchingFontDescriptorsXXX
을 전달하면 적어도 하나의 설명자를 반환해야합니까?