Названия шрифтов iOS: тире или тире - PullRequest
2 голосов
/ 28 августа 2011

Я обнаружил, что Core Graphics хочет имена других шрифтов, чем те, которые принимает UIFont.

Например, CG принимает «Helvetica Bold», но не «Helvetica-Bold», тогда как UIFont наоборот.

Существует ли в Интернете какой-либо исчерпывающий список шрифтов, в котором разъясняются, какие имена подходят для каждого контекста?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 16 октября 2011

Вот код от этой ссылки но затянут. Это только для UIFont:

for (NSString *familyName in [UIFont familyNames])
{
    NSLog(@"----------------");
    NSLog(@"FAMILY: %@", familyName);
    for(NSString *fontName in [UIFont fontNamesForFamilyName:familyName])
    {
        NSLog(@"  %@", fontName);
    }
}

но эти имена, похоже, тоже хорошо работают для CGFontRef, поэтому используйте (например):

CGContextSelectFont (context, "Didot-Bold", FONT_SIZE, kCGEncodingMacRoman);

конечно, вы можете использовать font.fontName.UTF8String, чтобы получить от UIFont ....

1 голос
/ 27 июля 2012

Имя шрифта, используемого UIFont, зависит от создателя шрифта.Иногда имя шрифта для курсива заканчивается на Ita, а иногда -Italic - для этого нет четкого правила именования.Я придумал реализацию, которая обрабатывает все различия и возвращает вам правильный UIFont для всех комбинаций font-family + font style, поэтому вам не нужно жестко кодировать имя шрифта.Вы можете увидеть его на http://eclipsesource.com/blogs/2012/07/26/uifont-from-a-css-definition/

С помощью предоставленного мною кода вы можете получить желаемый UIFont так же просто, как:

UIFont *myFont = [FontResolver fontWithDescription:@"font-family: Helvetica; font-size:17px; font-weight: bold; font-style: italic;"];

...