I'm creating an ios framework with its bundle for packaging ressources (nib, images, fonts) and I'm trying to embed a custom font in the bundle but I'm not able to load it from the framework, is it possible ?
1) I can localize the font file with this:
objc
NSString *fontPath = [[NSBundle frameworkBundle] pathForResource:@"MyCustomFont" ofType:@"ttf"];
2) But I can't get it in my fonts lists:
objc
NSArray * array = [UIFont familyNames];
I included my font name in the bundle's plist with a "Fonts provided by application", without success, tried also in the app info plist, include it in the framework ressource without success.
I can load the nib and images from the bundle (by prefixing with the bundle's name) but not for the font. Any thought ?
EDIT : I saw the following post : Can I embed a custom font in an iPhone application?, but the question is just "Can I embed a custom font in an iPhone application?" not "Can I embed a custom font in an external framework/bundle ?" It also makes references to a dynamic loading which is interesting but it is using private api, which is not usable solution for a framework.
Thanks
This is a new method that lets you load fonts dynamically without putting them in your Info.plist: http://www.marco.org/2012/12/21/ios-dynamic-font-loading
In swift, I use the code below :
The frameworkBundle method :
Exemple of call : (In my case, i added all fonts in the Fonts folder)
Your corrections and remarks are welcome !
Here is way I implemented it for my fmk based on the solution provided by "David M." This solution doesn't require to add the reference to the font in the plist.
1) Class that load the font
2) Category on NSBundle to get access to my bundle
Note: require to integrate CoreText in your project
Swift 3 version of @Ali-ABBAS's answer, also updated to up-wrap options instead of force unwrapping.
Swift 3:
Firstly, don't access framework bundle from main with appending path components... Instantiate it from its identifier. You can get font URLs like this:
And I find it nice to have
UIFont
extension for registering fonts:Now enjoy the registration: