Last active
December 21, 2017 17:51
-
-
Save steipete/10d9cb5b56e65647ef16 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@implementation UIFont (PSPDFAdditions) | |
// https://gist.github.com/nuthatch/7594460 | |
static CGFloat PSPDFMultiplicatorForPreferredContentSize(void) { | |
CGFloat multiplicator = 1.f; | |
NSString *preferredTextStyle = UIApplication.sharedApplication.preferredContentSizeCategory; | |
if ([preferredTextStyle isEqualToString:UIContentSizeCategoryExtraSmall]) { | |
multiplicator = 0.9f; | |
}else if ([preferredTextStyle isEqualToString:UIContentSizeCategorySmall]) { | |
multiplicator = 0.95f; | |
}else if ([preferredTextStyle isEqualToString:UIContentSizeCategoryMedium]) { | |
multiplicator = 1.f; | |
}else if ([preferredTextStyle isEqualToString:UIContentSizeCategoryLarge]) { | |
multiplicator = 1.1f; | |
}else if ([preferredTextStyle isEqualToString:UIContentSizeCategoryExtraLarge]) { | |
multiplicator = 1.2f; | |
}else if ([preferredTextStyle isEqualToString:UIContentSizeCategoryExtraExtraLarge]) { | |
multiplicator = 1.25f; | |
}else if ([preferredTextStyle isEqualToString:UIContentSizeCategoryExtraExtraExtraLarge]) { | |
multiplicator = 1.3f; | |
} | |
return multiplicator; | |
} | |
static CGFloat PSPDFFontSizeForTextStyle(NSString *textStyle, BOOL *isBold) { | |
PSPDFAssert(textStyle); | |
CGFloat fontSize = 12.f; | |
if ([textStyle isEqualToString:UIFontTextStyleHeadline]) { | |
fontSize = 17.f; | |
if (isBold) *isBold = YES; | |
}else if ([textStyle isEqualToString:UIFontTextStyleBody]) { | |
fontSize = 17.f; | |
}else if ([textStyle isEqualToString:UIFontTextStyleSubheadline]) { | |
fontSize = 15.f; | |
}else if ([textStyle isEqualToString:UIFontTextStyleFootnote]) { | |
fontSize = 13.f; | |
}else if ([textStyle isEqualToString:UIFontTextStyleCaption1]) { | |
fontSize = 12.f; | |
}else if ([textStyle isEqualToString:UIFontTextStyleCaption2]) { | |
fontSize = 11.f; | |
} | |
// Return sharp sizes. | |
return floor(fontSize * PSPDFMultiplicatorForPreferredContentSize()); | |
} | |
+ (UIFont *)pspdf_preferredFontWithName:(NSString *)name textStyle:(NSString *)textStyle { | |
PSPDFAssert(name); | |
PSPDFAssert(textStyle); | |
BOOL isBold = NO; | |
CGFloat fontSize = PSPDFFontSizeForTextStyle(textStyle, &isBold); | |
UIFont *font = [UIFont fontWithName:name size:fontSize]; | |
if (isBold) font = font.pspdf_boldFont; | |
return font; | |
} | |
+ (UIFont *)pspdf_systemFontOfDynamicSize:(CGFloat)fontSize { | |
return [UIFont systemFontOfSize:fontSize * PSPDFMultiplicatorForPreferredContentSize()]; | |
} | |
+ (UIFont *)pspdf_boldSystemFontOfDynamicSize:(CGFloat)fontSize { | |
return [UIFont boldSystemFontOfSize:fontSize * PSPDFMultiplicatorForPreferredContentSize()]; | |
} | |
- (UIFont *)pspdf_boldFont { | |
UIFontDescriptor *descriptor = [self fontDescriptor]; | |
descriptor = [descriptor fontDescriptorWithSymbolicTraits:descriptor.symbolicTraits|UIFontDescriptorTraitBold]; | |
return [UIFont fontWithDescriptor:descriptor size:0]; // Pass 0 to keep the same font size | |
} | |
@end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment