列出系統所有字型:
for (int i=0 ; i< [[UIFont familyNames] count]; ++i) {
NSLog(@"Font Family: %@", [UIFont familyNames][i]);
for (int j=0; j<[[UIFont fontNamesForFamilyName:[UIFont familyNames][i]] count] ; ++j) {
NSLog(@"Font Name: %@", [UIFont fontNamesForFamilyName:[UIFont familyNames][i]][j]);
}
}
找尋 monospaced font:
NSString *words = @"Hello World!";
for (int i=0 ; i< [[UIFont familyNames] count]; ++i) {
//NSLog(@"Font Family: %@", [UIFont familyNames][i]);
for (int j=0; j<[[UIFont fontNamesForFamilyName:[UIFont familyNames][i]] count] ; ++j) {
//NSLog(@"Font Name: %@", [UIFont fontNamesForFamilyName:[UIFont familyNames][i]][j]);
float width = -1 ;
bool found = true;
for (int k=0; k< [words length]; ++k) {
unichar word = [words characterAtIndex:k];
CGSize wordSize = [[NSString stringWithFormat:@"%C", word] sizeWithAttributes:@{
NSFontAttributeName: [UIFont fontWithName:[UIFont fontNamesForFamilyName:[UIFont familyNames][i]][j] size:16]
}];
if (width < 0) {
width = wordSize.width;
} else if (width != wordSize.width) {
found = false;
break;
}
}
if (found) {
NSLog(@"width(size16): %f, monospaced font: %@", width, [UIFont fontNamesForFamilyName:[UIFont familyNames][i]][j]);
}
}
}
結果:
width(size16): 9.601562, monospaced font: CourierNewPS-BoldMT
width(size16): 9.601562, monospaced font: CourierNewPS-ItalicMT
width(size16): 9.601562, monospaced font: CourierNewPSMT
width(size16): 9.601562, monospaced font: CourierNewPS-BoldItalicMT
width(size16): 9.601562, monospaced font: Courier-BoldOblique
width(size16): 9.601562, monospaced font: Courier
width(size16): 9.601562, monospaced font: Courier-Bold
width(size16): 9.601562, monospaced font: Courier-Oblique
width(size16): 9.632812, monospaced font: Menlo-Italic
width(size16): 9.632812, monospaced font: Menlo-Bold
width(size16): 9.632812, monospaced font: Menlo-Regular
width(size16): 9.632812, monospaced font: Menlo-BoldItalic