Пользовательский путь шрифта iOS для UIWebViews
У меня есть UIWebView, и у меня есть собственный шрифт, который я хочу загрузить в редактируемый HTML-документ, который я буду отображать через UIWebView. В моей папке SupportingFiles (resources) у меня есть "Nosifer-Regular.ttf"... Чтобы использовать собственный шрифт в моем HTML, мне нужен путь (URL) к плитке шрифта... Я пытался сделать это, но это не так кажется, не работает... есть идеи?
bundle = [NSBundle mainBundle];
pathFont = [bundle bundlePath];
fontURL = [NSBundle pathForResource:@"Nosifer-Regular" ofType:@"ttf" inDirectory:pathFont];
path_font = [fontURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
fileAppend = [[NSString alloc] initWithFormat:@"file://"];
path_font = [[NSString alloc] initWithFormat:@"%@%@", fileAppend, path_font];
HTML (CSS):
@font-face {
font-family: 'Nosifer';
font-style: normal;
font-weight: 400;
src: local('Nosifer'), local('Nosifer-Regular'), url('%@') format('truetype');
}
Где%@ заменяется на "path_font" (определено выше в первом блоке кода)
4 ответа
Прежде всего, добавьте в поле "Шрифты, предоставленные приложением". info.plist
, Это будет массив как
item0 myFont.otf
item1 anotherFont.ttf
или что-то.
В HTML используйте font-face, чтобы добавить шрифт. И поместите ваши файлы шрифтов в тот же каталог, где находится HTML-файл. Если HTML генерируется динамически и не отображается из пакета, вам следует скопировать шрифт.
Удачи.
Добавьте свой собственный шрифт в свой проект. затем
Получить имя шрифта
UIFont *font = [UIFont fontWithName:@"Your-Custom-font" size:20];
Затем создайте строку HTML
NSString *htmlHeader=[NSString stringWithFormat:@"<html><head><head><link rel=\"stylesheet\" type=\"text/css\" href=\"file://localhost%@\"></head><body><font face=\"%@\"; size=\"4\">HI</font></body></html>",cssPath,font.familyName];
Удачи.
Я получил рабочий пример HTML-кода здесь.
<html>
<head>
<style type='text/css'>
p.p1 {margin: 0.0px 0.0px 0.0px 30.0px; font: 34.0px;}
@font-face {
font-family: 'Nosifer'; font-style: normal; font-weight: 400; src: local('Nosifer'), local('Nosifer-Regular'), url('Nosifer-Regular.ttf') format('truetype');
}
.nosifer {
font-family: Nosifer;
}
</style>
</head>
<body allowtransparency='true'>
<p class="nosifer">Nosifer ABCabc</p>
</body>
Как вы можете видеть, я использовал класс css для более простого определения шрифта. Я не уверен, что означает весь этот CSS-код внутри font-face, но, похоже, он работает.
Я подтвердил, что вам НУЖНО добавить "Nosifer-Regular.ttf" в массив шрифтов, предоставляемых приложением, в файле *-info.plist (ключ: шрифты, предоставляемые приложением). Кстати, я погуглил Nosifer-Regular.ttf и нашел его на шумном сайте здесь. Это действительно работает, хотя: http://www.ffonts.net/Nosifer.font.download
Затем я также смог загрузить OTF, который я буду использовать в моем случае. В CSS я изменил формат с истинного на опентипе.
Вот как вы можете добавить шрифт в ваш Info.plist:
<key>UIAppFonts</key>
<array>
<string>Nosifer-Regular.ttf</string>
</array>
Затем используйте @font-face согласно этому другому ответу.