-
-
Save VincentSit/2a725183fdc03f7627705337c720dbf2 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