Gibt es einen Ersatz für die Windows-Funktion CreateFont(..)
Funktion in OSX?
Ich habe versucht, die NSFontDescriptor
und seine matchingFontDescriptorsWithMandatoryKeys:
Methode, aber diese Methode findet nicht die "nächstgelegene" Schriftart, sondern die übereinstimmenden Merkmale und kann auch nil
.
Gibt es eine Möglichkeit, die nächstgelegene Schriftart anhand bestimmter Merkmale zu finden (z. B. ein CreateFont ) in OSX?
AKTUALISIERT
Etwas Seltsames passiert mit NSFontDescriptor
Ich habe zwei Teile des Codes:
über Kakao:
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];
Und mit 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);
Ich habe in beiden Fällen dieselben Schriftartdeskriptoren erstellt, aber im ersten Fall matchedDescriptors
es nil
und mit CoreText API gibt es einige Schriftarten in matchedDescriptors
. Ist es ein Fehler?
Aber im Allgemeinen, wenn ich die nil
a XXXMatchingFontDescriptorsXXX
als obligatorisches Attribut, sollte es mindestens einen Deskriptor zurückgeben?