Могу ли я встроить пользовательский шрифт в приложение для iPhone? - PullRequest
768 голосов
/ 11 декабря 2008

Я бы хотел, чтобы приложение включало пользовательский шрифт для рендеринга текста, загружал его, а затем использовал его со стандартными UIKit элементами, такими как UILabel. Это возможно?

Ответы [ 32 ]

0 голосов
/ 11 октября 2017

Как указывалось во всех предыдущих ответах, это вполне возможно и довольно просто в новых версиях iOS.

Я знаю, что это не технический ответ, но так как многие люди делают это неправильно (таким образом, эффективно нарушая лицензии, которые могут стоить вам больших денег, если вам предъявят иск), позвольте мне подчеркнуть одно предостережение здесь: Встраивание пользовательского шрифта в приложение для iOS (или любого другого вида) в основном перераспределяет шрифт. Большинство лицензий для коммерческих шрифтов запрещают распространение, поэтому убедитесь, что вы действуете в соответствии с лицензией.

0 голосов
/ 12 августа 2013

В качестве улучшения @ bdev's answer , здесь обновленная версия для перечисления только пользовательских шрифтов.

Шаг 1. Найдите все системные шрифты, используя ответ @ bdev, и сохраните в файл.

Поместите следующий код в первый элемент View Controller -(void)viewDidLoad, после [super viewDidLoad] (или в делегат приложения):

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                                                     NSUserDomainMask, YES);
NSMutableArray *system_fonts = [NSMutableArray array];
for (NSString *familyName in [UIFont familyNames]) {
    for (NSString *fontName in [UIFont fontNamesForFamilyName:familyName]) {
        [system_fonts addObject:fontName];
    }
}
if([paths count] > 0) {
    [system_fonts writeToFile:[[paths objectAtIndex:0]
                               stringByAppendingPathComponent:@"array.out"] atomically:YES];
}

Запустите приложение один раз. Останови это потом.

Шаг 2. Добавление настраиваемого шрифта в проект

Используя метод, показанный в принятом ответе, добавьте свои пользовательские шрифты (не забудьте обновить .plist и добавить файлы шрифтов для сборки, установив Add To Target.

Шаг 3: Сравните системные шрифты с текущим списком шрифтов

Заменить коды на шаге 1 на:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                                                     NSUserDomainMask, YES);
NSMutableArray *system_fonts = [NSMutableArray arrayWithContentsOfFile:[[paths objectAtIndex:0]
                                                                        stringByAppendingPathComponent:@"array.out"]];

for (NSString *familyName in [UIFont familyNames]) {
    for (NSString *fontName in [UIFont fontNamesForFamilyName:familyName]) {
        if (![system_fonts containsObject:fontName]) {
            NSLog(@"%@", fontName);
        }
    }
}

Запустите приложение и отобразится список добавленных вами пользовательских шрифтов.

Это относится к iOS 3.2 до iOS 6 (вероятно, будущие выпуски будут работать нормально). Работает также с .ttc и .ttf.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...