Skip to content

Commit

Permalink
Added new files
Browse files Browse the repository at this point in the history
  • Loading branch information
odrobnik committed Jan 26, 2011
1 parent 499ad33 commit 1ab25c2
Show file tree
Hide file tree
Showing 2 changed files with 221 additions and 0 deletions.
49 changes: 49 additions & 0 deletions Classes/DTCoreTextFontDescriptor.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
//
// DTCoreTextFontDescriptor.h
// CoreTextExtensions
//
// Created by Oliver Drobnik on 1/26/11.
// Copyright 2011 Drobnik.com. All rights reserved.
//

#import <Foundation/Foundation.h>

#import <CoreText/CoreText.h>

@interface DTCoreTextFontDescriptor : NSObject <NSCopying>
{

NSString *fontFamily;

CGFloat pointSize;

// symbolic traits
BOOL boldTrait;
BOOL italicTrait;
BOOL expandedTrait;
BOOL condensedTrait;
BOOL monospaceTrait;
BOOL verticalTrait;
BOOL UIoptimizedTrait;
}

+ (DTCoreTextFontDescriptor *)fontDescriptorWithFontAttributes:(NSDictionary *)attributes;

- (id)initWithFontAttributes:(NSDictionary *)attributes;

- (CTFontSymbolicTraits)symbolicTraits;
- (NSDictionary *)fontAttributes;

@property (nonatomic, copy) NSString *fontFamily;

@property (nonatomic, assign) CGFloat pointSize;

@property (nonatomic) BOOL boldTrait;
@property (nonatomic) BOOL italicTrait;
@property (nonatomic) BOOL expandedTrait;
@property (nonatomic) BOOL condensedTrait;
@property (nonatomic) BOOL monospaceTrait;
@property (nonatomic) BOOL verticalTrait;
@property (nonatomic) BOOL UIoptimizedTrait;

@end
172 changes: 172 additions & 0 deletions Classes/DTCoreTextFontDescriptor.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,172 @@
//
// DTCoreTextFontDescriptor.m
// CoreTextExtensions
//
// Created by Oliver Drobnik on 1/26/11.
// Copyright 2011 Drobnik.com. All rights reserved.
//

#import "DTCoreTextFontDescriptor.h"


@implementation DTCoreTextFontDescriptor


+ (DTCoreTextFontDescriptor *)fontDescriptorWithFontAttributes:(NSDictionary *)attributes
{
return [[[DTCoreTextFontDescriptor alloc] initWithFontAttributes:attributes] autorelease];
}

- (id)initWithFontAttributes:(NSDictionary *)attributes
{
if (self = [super init])
{
if (attributes)
{
NSDictionary *traitsDict = [attributes objectForKey:(id)kCTFontTraitsAttribute];

CTFontSymbolicTraits traitsValue = [[traitsDict objectForKey:(id)kCTFontSymbolicTrait ] unsignedIntValue];

if (traitsValue & kCTFontBoldTrait)
{
boldTrait = YES;
}

if (traitsValue & kCTFontItalicTrait)
{
italicTrait = YES;
}

if (traitsValue & kCTFontExpandedTrait)
{
expandedTrait = YES;
}

if (traitsValue & kCTFontCondensedTrait)
{
condensedTrait = YES;
}

if (traitsValue & kCTFontMonoSpaceTrait)
{
monospaceTrait = YES;
}

if (traitsValue & kCTFontVerticalTrait)
{
verticalTrait = YES;
}

if (traitsValue & kCTFontUIOptimizedTrait)
{
UIoptimizedTrait = YES;
}

pointSize = [[attributes objectForKey:(id)kCTFontSizeAttribute] floatValue];

self.fontFamily = [attributes objectForKey:(id)kCTFontFamilyNameAttribute];
}
}

return self;
}


- (CTFontSymbolicTraits)symbolicTraits
{
CTFontSymbolicTraits retValue = 0;


if (boldTrait)
{
retValue |= kCTFontBoldTrait;
}

if (italicTrait)
{
retValue |= kCTFontItalicTrait;
}

if (expandedTrait)
{
retValue |= kCTFontExpandedTrait;
}

if (condensedTrait)
{
retValue |= kCTFontCondensedTrait;
}

if (monospaceTrait)
{
retValue |= kCTFontMonoSpaceTrait;
}

if (verticalTrait)
{
retValue |= kCTFontVerticalTrait;
}

if (UIoptimizedTrait)
{
retValue |= kCTFontUIOptimizedTrait;
}

return retValue;
}

- (NSDictionary *)fontAttributes
{

NSMutableDictionary *tmpDict = [NSMutableDictionary dictionary];

NSMutableDictionary *traitsDict = [NSMutableDictionary dictionary];

CTFontSymbolicTraits symbolicTraits = [self symbolicTraits];

if (symbolicTraits)
{
[traitsDict setObject:[NSNumber numberWithUnsignedInt:symbolicTraits] forKey:(id)kCTFontSymbolicTrait];
}

if ([traitsDict count])
{
[tmpDict setObject:traitsDict forKey:(id)kCTFontTraitsAttribute];
}

if (fontFamily)
{
[tmpDict setObject:fontFamily forKey:(id)kCTFontFamilyNameAttribute];
}

[tmpDict setObject:[NSNumber numberWithFloat:pointSize] forKey:(id)kCTFontSizeAttribute];

return [NSDictionary dictionaryWithDictionary:tmpDict];
}

#pragma mark Copying

- (id)copyWithZone:(NSZone *)zone
{
DTCoreTextFontDescriptor *newDesc = [[DTCoreTextFontDescriptor allocWithZone:zone] initWithFontAttributes:[self fontAttributes]];
newDesc.pointSize = self.pointSize;

return newDesc;
}


#pragma mark Properties

@synthesize fontFamily;

@synthesize pointSize;
@synthesize boldTrait;
@synthesize italicTrait;
@synthesize expandedTrait;
@synthesize condensedTrait;
@synthesize monospaceTrait;
@synthesize verticalTrait;
@synthesize UIoptimizedTrait;

@end

0 comments on commit 1ab25c2

Please sign in to comment.