mirror of
https://github.com/gnustep/libs-gui.git
synced 2025-04-23 12:00:52 +00:00
Small fixes for font descriptor handling.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@28412 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
c6f4518c9f
commit
519598ef24
5 changed files with 131 additions and 53 deletions
|
@ -1,3 +1,10 @@
|
|||
2009-07-26 Fred Kiefer <FredKiefer@gmx.de>
|
||||
|
||||
* Headers/AppKit/NSFontDescriptor.h,
|
||||
* Headers/AppKit/NSFont.h: Add missing interface method from 10.5.
|
||||
* Source/NSFontDescriptor.m,
|
||||
* Source/NSFont.m: Small fixes for font descriptor handling.
|
||||
|
||||
2009-07-25 22:54-EDT Gregory John Casamento <greg.casamento@gmail.com>
|
||||
|
||||
* Source/NSAlert.m: Offset color by less in -resetWindow. Remove
|
||||
|
@ -2635,7 +2642,7 @@
|
|||
2008-04-07 Fred Kiefer <FredKiefer@gmx.de>
|
||||
|
||||
* Source/NSFont.m (NSConvertGlyphsToPackedGlyphs): Store the glyph
|
||||
count in th efirst byte.
|
||||
count in the first byte.
|
||||
* Source/NSBezierPath.m (-appendBezierPathWithPackedGlyphs): Send
|
||||
this method on to the graphics context.
|
||||
* Headers/AppKit/NSGraphicsContext.h,
|
||||
|
|
|
@ -133,9 +133,12 @@ APPKIT_EXPORT const float *NSFontIdentityMatrix;
|
|||
+ (NSFont*) menuBarFontOfSize: (float)fontSize;
|
||||
#endif
|
||||
#if OS_API_VERSION(MAC_OS_X_VERSION_10_4, GS_API_LATEST)
|
||||
+ (NSFont*) fontWithDescriptor: (NSFontDescriptor*)descriptor size: (float)size;
|
||||
+ (NSFont*) fontWithDescriptor: (NSFontDescriptor*)descriptor size: (CGFloat)size;
|
||||
+ (NSFont*) fontWithDescriptor: (NSFontDescriptor*)descriptor
|
||||
size: (float)size
|
||||
textTransform: (NSAffineTransform*)transform;
|
||||
// This method was a mistake in the 10.4 documentation
|
||||
+ (NSFont*) fontWithDescriptor: (NSFontDescriptor*)descriptor
|
||||
size: (CGFloat)size
|
||||
textTransform: (NSAffineTransform*)transform;
|
||||
#endif
|
||||
|
||||
|
|
|
@ -109,7 +109,7 @@ extern NSString *NSFontVariationAxisNameKey;
|
|||
|
||||
+ (id) fontDescriptorWithFontAttributes: (NSDictionary *)attributes;
|
||||
+ (id) fontDescriptorWithName: (NSString *)name
|
||||
size: (float)size;
|
||||
size: (CGFloat)size;
|
||||
#if OS_API_VERSION(MAC_OS_X_VERSION_10_4, GS_API_LATEST)
|
||||
+ (id) fontDescriptorWithName: (NSString *)name
|
||||
matrix: (NSAffineTransform *)matrix;
|
||||
|
@ -124,17 +124,20 @@ extern NSString *NSFontVariationAxisNameKey;
|
|||
- (NSFontDescriptor *) fontDescriptorWithFace: (NSString *)face;
|
||||
- (NSFontDescriptor *) fontDescriptorWithFamily: (NSString *)family;
|
||||
- (NSFontDescriptor *) fontDescriptorWithMatrix: (NSAffineTransform *)matrix;
|
||||
- (NSFontDescriptor *) fontDescriptorWithSize: (float)size;
|
||||
- (NSFontDescriptor *) fontDescriptorWithSize: (CGFloat)size;
|
||||
- (NSFontDescriptor *) fontDescriptorWithSymbolicTraits:
|
||||
(NSFontSymbolicTraits)traits;
|
||||
- (NSArray *) matchingFontDescriptorsWithMandatoryKeys: (NSSet *)keys;
|
||||
|
||||
- (id) objectForKey: (NSString *)attribute;
|
||||
- (NSAffineTransform *) matrix;
|
||||
- (float) pointSize;
|
||||
- (CGFloat) pointSize;
|
||||
- (NSString *) postscriptName;
|
||||
- (NSFontSymbolicTraits) symbolicTraits;
|
||||
#endif
|
||||
#if OS_API_VERSION(MAC_OS_X_VERSION_10_5, GS_API_LATEST)
|
||||
- (NSFontDescriptor *) matchingFontDescriptorWithMandatoryKeys: (NSSet *)keys;
|
||||
#endif
|
||||
|
||||
@end
|
||||
|
||||
|
|
|
@ -503,43 +503,63 @@ static void setNSFont(NSString *key, NSFont *font)
|
|||
}
|
||||
|
||||
+ (NSFont *) fontWithDescriptor: (NSFontDescriptor *)descriptor
|
||||
size: (float)size
|
||||
{
|
||||
return [self fontWithDescriptor: descriptor size: size textTransform: nil];
|
||||
}
|
||||
|
||||
// the transform/matrix can be used to rotate/scale/shear the whole font (independently of the CTM!)
|
||||
|
||||
+ (NSFont *) fontWithDescriptor: (NSFontDescriptor *)descriptor
|
||||
size: (float)size
|
||||
textTransform: (NSAffineTransform *)transform
|
||||
size: (CGFloat)size
|
||||
{
|
||||
NSArray *a;
|
||||
NSFontDescriptor *fd;
|
||||
|
||||
if (size == 0.0)
|
||||
size = [NSFont systemFontSize]; // default
|
||||
|
||||
descriptor = [descriptor fontDescriptorWithSize: size];
|
||||
if (transform)
|
||||
{
|
||||
descriptor = [descriptor fontDescriptorByAddingAttributes:
|
||||
[NSDictionary dictionaryWithObject: transform
|
||||
forKey: NSFontMatrixAttribute]];
|
||||
}
|
||||
|
||||
// match all keys
|
||||
// FIXME: Matching on size and matrix seems nonsensical.
|
||||
a = [descriptor matchingFontDescriptorsWithMandatoryKeys:
|
||||
descriptor = [descriptor matchingFontDescriptorWithMandatoryKeys:
|
||||
[NSSet setWithArray: [[descriptor fontAttributes] allKeys]]];
|
||||
|
||||
if ([a count] == 0)
|
||||
if (descriptor == nil)
|
||||
return nil;
|
||||
|
||||
// return first matching font
|
||||
fd = [a objectAtIndex: 0];
|
||||
// FIXME: Use NSFontManger to get a font name and create that font
|
||||
return nil;
|
||||
a = [[NSFontManager sharedFontManager] availableFontNamesMatchingFontDescriptor:
|
||||
descriptor];
|
||||
if ((a == nil) || ([a count] == 0))
|
||||
return nil;
|
||||
|
||||
return [self fontWithName: [a objectAtIndex: 0]
|
||||
size: size];
|
||||
}
|
||||
|
||||
+ (NSFont*) fontWithDescriptor: (NSFontDescriptor*)descriptor
|
||||
textTransform: (NSAffineTransform*)transform
|
||||
{
|
||||
NSArray *a;
|
||||
float fontMatrix[6];
|
||||
|
||||
descriptor = [descriptor matchingFontDescriptorWithMandatoryKeys:
|
||||
[NSSet setWithArray: [[descriptor fontAttributes] allKeys]]];
|
||||
|
||||
if (descriptor == nil)
|
||||
return nil;
|
||||
|
||||
a = [[NSFontManager sharedFontManager] availableFontNamesMatchingFontDescriptor:
|
||||
descriptor];
|
||||
if ((a == nil) || ([a count] == 0))
|
||||
return nil;
|
||||
|
||||
// FIXME: This method is deprecated
|
||||
[transform getMatrix: fontMatrix];
|
||||
|
||||
return [self fontWithName: [a objectAtIndex: 0]
|
||||
matrix: fontMatrix];
|
||||
}
|
||||
|
||||
+ (NSFont *) fontWithDescriptor: (NSFontDescriptor *)descriptor
|
||||
size: (CGFloat)size
|
||||
textTransform: (NSAffineTransform *)transform
|
||||
{
|
||||
if (transform)
|
||||
{
|
||||
return [self fontWithDescriptor: descriptor
|
||||
textTransform: transform];
|
||||
}
|
||||
else
|
||||
{
|
||||
return [self fontWithDescriptor: descriptor
|
||||
size: size];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -57,7 +57,7 @@
|
|||
nil]];
|
||||
}
|
||||
|
||||
+ (id) fontDescriptorWithName: (NSString *)name size: (float)size
|
||||
+ (id) fontDescriptorWithName: (NSString *)name size: (CGFloat)size
|
||||
{
|
||||
return [self fontDescriptorWithFontAttributes:
|
||||
[NSDictionary dictionaryWithObjectsAndKeys:
|
||||
|
@ -74,11 +74,15 @@
|
|||
- (NSFontDescriptor *) fontDescriptorByAddingAttributes:
|
||||
(NSDictionary *)attributes
|
||||
{
|
||||
NSMutableDictionary *m = [_attributes mutableCopy];
|
||||
NSMutableDictionary *m = [_attributes mutableCopy];
|
||||
NSFontDescriptor *new;
|
||||
|
||||
[m addEntriesFromDictionary: attributes];
|
||||
|
||||
return [isa fontDescriptorWithFontAttributes: m] ;
|
||||
new = [isa fontDescriptorWithFontAttributes: m];
|
||||
RELEASE(m);
|
||||
|
||||
return new;
|
||||
}
|
||||
|
||||
- (NSFontDescriptor *) fontDescriptorWithFace: (NSString *)face
|
||||
|
@ -99,19 +103,36 @@
|
|||
[NSDictionary dictionaryWithObject: matrix forKey: NSFontMatrixAttribute]];
|
||||
}
|
||||
|
||||
- (NSFontDescriptor *) fontDescriptorWithSize: (float)size
|
||||
- (NSFontDescriptor *) fontDescriptorWithSize: (CGFloat)size
|
||||
{
|
||||
return [self fontDescriptorByAddingAttributes:
|
||||
[NSDictionary dictionaryWithObject: [NSNumber numberWithFloat: size]
|
||||
[NSDictionary dictionaryWithObject: [NSString stringWithFormat:@"%f", size]
|
||||
forKey: NSFontSizeAttribute]];
|
||||
}
|
||||
|
||||
- (NSFontDescriptor *) fontDescriptorWithSymbolicTraits:
|
||||
(NSFontSymbolicTraits)traits
|
||||
(NSFontSymbolicTraits)symbolicTraits
|
||||
{
|
||||
NSDictionary *traits;
|
||||
|
||||
traits = [_attributes objectForKey: NSFontTraitsAttribute];
|
||||
if (traits == nil)
|
||||
{
|
||||
traits = [NSDictionary dictionaryWithObject:
|
||||
[NSNumber numberWithUnsignedInt: symbolicTraits]
|
||||
forKey: NSFontSymbolicTrait];
|
||||
}
|
||||
else
|
||||
{
|
||||
traits = AUTORELEASE([traits mutableCopy]);
|
||||
[(NSMutableDictionary*)traits setObject:
|
||||
[NSNumber numberWithUnsignedInt: symbolicTraits]
|
||||
forKey: NSFontSymbolicTrait];
|
||||
}
|
||||
|
||||
return [self fontDescriptorByAddingAttributes:
|
||||
[NSDictionary dictionaryWithObject: [NSNumber numberWithUnsignedInt: traits]
|
||||
forKey: NSFontSymbolicTrait]];
|
||||
[NSDictionary dictionaryWithObject: traits
|
||||
forKey: NSFontTraitsAttribute]];
|
||||
}
|
||||
|
||||
- (id) initWithFontAttributes: (NSDictionary *) attributes
|
||||
|
@ -134,7 +155,7 @@
|
|||
}
|
||||
else
|
||||
{
|
||||
// FIXME
|
||||
[aCoder encodeObject: _attributes];
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -146,7 +167,7 @@
|
|||
}
|
||||
else
|
||||
{
|
||||
// FIXME
|
||||
[aDecoder decodeValueOfObjCType: @encode(id) at: &_attributes];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
@ -191,6 +212,7 @@
|
|||
|
||||
if (value != nil)
|
||||
{
|
||||
// FIXME: Special handling for NSFontTraitsAttribute
|
||||
if (![value isEqual: [fd objectForKey: key]])
|
||||
{
|
||||
match = NO;
|
||||
|
@ -208,6 +230,19 @@
|
|||
return found;
|
||||
}
|
||||
|
||||
- (NSFontDescriptor *) matchingFontDescriptorWithMandatoryKeys: (NSSet *)keys;
|
||||
{
|
||||
NSArray *found = [self matchingFontDescriptorsWithMandatoryKeys: keys];
|
||||
|
||||
if (found && ([found count] > 0))
|
||||
{
|
||||
return [found objectAtIndex: 0];
|
||||
}
|
||||
else
|
||||
{
|
||||
return nil;
|
||||
}
|
||||
}
|
||||
|
||||
- (NSAffineTransform *) matrix
|
||||
{
|
||||
|
@ -219,7 +254,7 @@
|
|||
return [_attributes objectForKey: attribute];
|
||||
}
|
||||
|
||||
- (float) pointSize
|
||||
- (CGFloat) pointSize
|
||||
{
|
||||
id size = [_attributes objectForKey: NSFontSizeAttribute];
|
||||
|
||||
|
@ -233,14 +268,9 @@
|
|||
}
|
||||
}
|
||||
|
||||
- (NSFontSymbolicTraits) symbolicTraits
|
||||
{
|
||||
return [[_attributes objectForKey: NSFontSymbolicTrait] unsignedIntValue];
|
||||
}
|
||||
|
||||
- (NSString *) postscriptName
|
||||
{
|
||||
NSMutableString *family;
|
||||
NSMutableString *family;
|
||||
NSString *face;
|
||||
|
||||
family = AUTORELEASE([[self objectForKey: NSFontFamilyAttribute] mutableCopy]);
|
||||
|
@ -254,4 +284,19 @@
|
|||
return [NSString stringWithFormat: @"%@-%@", family, face];
|
||||
}
|
||||
|
||||
- (NSFontSymbolicTraits) symbolicTraits
|
||||
{
|
||||
NSDictionary *traits;
|
||||
|
||||
traits = [_attributes objectForKey: NSFontTraitsAttribute];
|
||||
if (traits == nil)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
return [[traits objectForKey: NSFontSymbolicTrait] unsignedIntValue];
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
|
|
Loading…
Reference in a new issue