I want to use DTCoreText in my app to convert HTML to NSAttributedString, but I can't figure out how to use the system font (as of iOS 8: Helvetica Neue) as the base font. By default DTCoreText seems to create the NSAttributedString with the Times New Roman font.
I'd really prefer not to hardcode it. If Apple updates their font again (they previously updated it from Helvetica to Helvetica Neue) I don't want to replace all instances of it, or have a bunch of conditionals depending on the OS version running the code.
I tried:
NSDictionary *options = #{
DTUseiOS6Attributes: #(YES),
DTDefaultFontFamily: [UIFont systemFontOfSize:[UIFont systemFontSize]].fontName
};
But it still renders as Times New Roman.
How do I make it use the system font? I just want it to look normal.
Looks like DCCoreText is expecting to receive font family name, and you're providing font name which is different. Try to replace your code with
[UIFont systemFontOfSize:[UIFont systemFontSize]].familyName
I have embedded font in ios, like the normal version italics and all by following methodes.
1.Added font to project folder.
2.Added font names "MuseoSans_100.otf" inside "Fonts provided by application" in info.plist.
3. created UIFont in viewdidload method
UIFont *newfont = [UIFont fontWithName:#"MuseoSans_100" size:13.0];
[labelname setFont:newfont];
but when i run this in simulator, i can see the font and size are not changing.
Please help.
You can use the fontNamesForFamilyName: method to retrieve the specific font names for a given font family.
Check the font family
NSLog(#"%#",[UIFont fontNamesForFamilyName:#"MuseoSans_100"]);
This question already has answers here:
Can I embed a custom font in an iPhone application?
(32 answers)
How to include and use new fonts in iPhone SDK?
(9 answers)
Closed 8 years ago.
I am import the font in my app folder.
Then i added font in info.plist file.
Like..... Fonts provided by application--->add two font.
Then set the font to title.After create the UILabel to set the font. Like this
self.title = #"Home";
CGRect frame = CGRectMake(0, 0,100, 44);
label = [[UILabel alloc] initWithFrame:frame];
label.backgroundColor = [UIColor clearColor];
label.font = [UIFont fontWithName:#"Benguiat Gothic" size:9];
label.textAlignment = UITextAlignmentCenter;
self.navigationItem.titleView = label;
label.text =self.title;
This code written in viewdidload method.
But the font is not changed.its appear only default font for that label.
1 Add your custom font into your project , i.e. Dragged the font file(CALIBRIZ_0.TTF) into XCode project.
2 Edit Info.plist: Add a new entry with the key "Fonts provided by application".
3 For each of your files, add the file name to this array
4.Opened the font in font book(double click on your font in finder) to see what the real filename is and I see this:
Now set font to your label
yourLabel.font = [UIFont fontWithName:#"Calibri" size:15];
First download your relevant font
Add your custom font into your project , i.e. Dragged the font file(Berlin Sans FB.TTF) into XCode project.
Add a new entry with the key "Fonts provided by application".
Now use this font in your textview
txtview.font = [UIFont fontWithName:#"Berlin Sans FB" size:15];
i used Berlin Sans FB you use your teleugu font
for more detail check this link
Using a custom font in iOS requires a few steps:
Have access to the TTF or OTF file for the desired font.
Drag the TTF or OTF font file into your Xcode project.
Located the application's Plist file and add a new row with the key "Fonts provided by the application.
Make sure that the associated value in the Plist perfectly matches the naming of the dragged in font file.
In your code, you can now assign the custom font to be used with your label, textfield or any other control that has the font property.
[myLabel setFont:[UIFont fontWithName:#"Benguiat Gothic" size:12.0f]];
Or, if you prefer dot notation syntax
myLabel.font = [UIFont fontWithName:#"Benguiat Gothic" size: 12.0f];
There's a few things to take into consideration. The actual naming of the Font File may not always be what you have to pass in as a string literal. Some custom fonts may have different weights associated with it (Light, Regular, Medium, Bold, Italic Bold etc). If the font isn't displaying as you would expect and all steps above have been explicitly followed then it could be down to the string you're using in your code.
You can get the list of font family names in debug by logging out as so:
NSLog (#"Font families: %#", [UIFont familyNames]);
That should give you a decent indication of what to actually use in your code when defining the custom font for use with the label.
My client wants me to change the label font to "Interstate-bold". I have installed the font. I dragged the font to the resource folder in Xcode and added it to the Info.plist but it is not supported yet. What else do I need to do?
I think you followed correct steps to apply this fonts in app.
You can check exact name of font supported, by following way:
NSArray *fonts = [UIFont fontNamesForFamilyName:#"interstate"];
NSLog this fonts array and give that exact name in the fontName parameter llike this
[UIFont fontWithName:#"Interstate-Bold" size:14.0];
I am getting this, plz check at ur end.
So as you say you have:
added asset
in plist: Fonts provided by application, then name of the font FSAlbert.otf [*.otf]
placing the used name to your label:
the name of the font is not the same as the name you put on your label is different,
self.myLabel.font = [UIFont fontWithName:#"FS Albert" size:14];
look what is the name of that font for example in photo shop [or font book], and that would be the name for your label.font
Check in font book the name of the font.
Most probably the font name in the file name doesn't matches what is required to be given in iOS app.
So check what is the font name in font book and put it the app.
What is the name of the default system font on the iPhone?
I would like to retrieve this for customizing a UIView.
To the delight of font purists
everywhere, the iPhone system
interface uses Helvetica or a variant
thereof.
The original iPhone, iPhone 3G and
iPhone 3GS system interface uses
Helvetica. As first noted by the
always excellent DaringFireball, the
iPhone 4 uses a subtly revised font
called "Helvetica Neue."
DaringFireball also notes that this
change is related to the iPhone 4
display rather than the iOS 4
operating system and older iPhone
models running iOS 4 still use
Helvetica as the system font.
iPod models released prior to the
iPhone use either Chicago, Espy Sans,
or Myriad and use Helvetica after the
release of the iPhone.
From http://www.everyipod.com/iphone-faq/iphone-who-designed-iphone-font-used-iphone-ringtones.html
For iOS9 it has changed to San Francisco. See http://developer.apple.com/fonts for more info.
If you're doing programatic customisation, don't hard code the system font. Use UIFont systemFontOfSize:, UIFont boldSystemFontOfSize: and UIFont italicSystemFontOfSize (Apple documentation).
This has become especially relevant since iOS 7, which changed the system font to Helvetica Neue.
This has become super especially relevant since iOS 9, which changed the system font again to San Francisco.
afaik iPhone uses "Helvetica" by default
< iOS 10
Swift
Specific font
Setting a specific font in Swift is done like this:
let myFont = UIFont(name: "Helvetica", size: 17)
If you don't know the name, you can get a list of the available font names like this:
print(UIFont.familyNames())
Or an even more detailed list like this:
for familyName in UIFont.familyNames() {
print(UIFont.fontNamesForFamilyName(familyName))
}
But the system font changes from version to version of iOS. So it would be better to get the system font dynamically.
System font
let myFont = UIFont.systemFontOfSize(17)
But we have the size hard-coded in. What if the user's eyes are bad and they want to make the font larger? Of course, you could make a setting in your app for the user to change the font size, but this would be annoying if the user had to do this separately for every single app on their phone. It would be easier to just make one change in the general settings...
Dynamic font
let myFont = UIFont.preferredFont(forTextStyle: .body)
Ah, now we have the system font at the user's chosen size for the Text Style we are working with. This is the recommended way of setting the font. See Supporting Dynamic Type for more info on this.
Related
Visual List of iOS Fonts
How do I make an attributed string using Swift?
You can always use
UIFont *systemFont = [UIFont systemFontOfSize:12];
NSLog(#"what is it? %# %#", systemFont.familyName, systemFont.fontName);
The answer is:
Up to iOS 6
Helvetica Helvetica
iOS 7
.Helvetica Neue Interface .HelveticaNeueInterface-M3
but you can just use Helvetica Neue
I'm not sure there is an api to get the default system font name. So I just get the name like this :
//get system default font
UILabel *label = [[UILabel alloc] init];
fontname = label.font.fontName;
[label release];
Looks stupid but it works.
Here is some update for supporting iOS 7. It has Dynamic Font Size now.
For any and all apps that support “Dynamic Type,” users can select a
font size in iOS 7 that works system wide, simply by visiting the
"General" section under "Settings" and selecting "Font Size."
UIFont *dynamicFont = [UIFont preferredFontForTextStyle:UIFontTextStyleBody];
And constants list, detailed explanation is here
NSString *const UIFontTextStyleHeadline;
NSString *const UIFontTextStyleSubheadline;
NSString *const UIFontTextStyleBody;
NSString *const UIFontTextStyleFootnote;
NSString *const UIFontTextStyleCaption1;
NSString *const UIFontTextStyleCaption2;
Category UIFontSystemFonts for UIFont (UIInterface.h) provides several convenient predefined sizes.
#interface UIFont (UIFontSystemFonts)
+ (CGFloat)labelFontSize;
+ (CGFloat)buttonFontSize;
+ (CGFloat)smallSystemFontSize;
+ (CGFloat)systemFontSize;
#end
I use it for chat messages (labels) and it work well when I need to get size of text blocks.
[UIFont systemFontOfSize:[UIFont labelFontSize]];
Happy coding!
UIFont *systemFont = [UIFont systemFontOfSize:[UIFont systemFontSize]];
This will give you the system font with the default system font size applied for the label texts by default.
Swift
You should always use the system defaults and not hard coding the font name because the default font could be changed by Apple at any time.
There are a couple of system default fonts(normal, bold, italic) with different sizes(label, button, others):
let font = UIFont.systemFont(ofSize: UIFont.systemFontSize)
let font2 = UIFont.boldSystemFont(ofSize: UIFont.systemFontSize)
let font3 = UIFont.italicSystemFont(ofSize: UIFont.systemFontSize)
beaware that the default font size depends on the target view (label, button, others)
Examples:
let labelFont = UIFont.systemFont(ofSize: UIFont.labelFontSize)
let buttonFont = UIFont.systemFont(ofSize: UIFont.buttonFontSize)
let textFieldFont = UIFont.systemFont(ofSize: UIFont.systemFontSize)
download required .ttf file
add the .ttf file under copy bundle resource, double check whether
the ttf file is added under resource
In info.pllist add the ttf file name as it is.
now open the font book add the .ttf file in the font book, select
information icon there you find the postscript name.
now give the postscript name in the place of font name
The default font for iOS is San Francisco . You can refer the link for further details