Je voudrais afficher une police personnalisée dans une UIWebView. J'ai déjà mis la police dans le plist sous "Polices fournies par l'application". Le code utilisé:
UIWebView *webView = [[UIWebView alloc] initWithFrame:myRect];
NSURL *baseURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]];
[webView loadHTMLString:html baseURL:baseURL];
[self addSubview:webView];
où html est une chaîne NSS qui a le contenu suivant:
<html><head>
<style type="text/css">
@font-face {
font-family: gotham_symbol;
src: local('GOTHAMboldSymbol_0.tff'), format('truetype')
}
body {
font-family: gotham_symbol;
font-size: 50pt;
}
</style>
</head><body leftmargin="0" topmargin="0">
This is <i>italic</i> and this is <b>bold</b> and this is some unicode: э
</body></html>
J'utilise iOS 4.2, donc TTF devrait être pris en charge. J'apprécierais un peu de code html/qui fonctionne réellement.
Après quelques essais et erreurs, j'ai trouvé un moyen fiable de charger des polices personnalisées avec un CSS local.
1. Ajoutez votre police à l'application ... assurez-vous que le fichier est correctement ciblé sur l'application
2. Ajoutez ensuite votre police à votre application-Info.plist
3. Exécutez NSLog(@"Available fonts: %@", [UIFont familyNames]);
Pour vérifier le nom de la police/famille de polices pour le système ...
4. Copiez ce nom et utilisez-les dans votre CSS ... @ font-face n'est pas nécessaire
body {
font-family:"Liberation Serif";
}
J'ai fini par le faire fonctionner même si je ne suis pas sûr de ce que j'ai fait de mal ci-dessus. Voici le HTML que j'utilise (NSString * htmll). J'ai tout ajouté, certains pourraient ne pas être pertinents pour la solution.
<html><head><style type="text/css">
@font-face {
font-family: 'gotham_symbol';
src: url('GOTHAMboldSymbols_0.ttf') format('truetype')
}
@font-face {
font-family: 'gotham_symbol_italic';
src: url('GothamBoldItalic.ttf') format('truetype')
}
#w {display:table;}
#c {display:table-cell; vertical-align:middle;}
i { font-family: 'Helvetica-BoldOblique'; }
</style></head><body topmargin="0" leftmargin="0">
<div style="display: table; width: 320px; height: 50px; #position: relative; overflow: hidden;">
<div style=" #position: absolute; #top: 50%;display: table-cell; vertical-align: middle;">
<div style=" #position: relative; #top: -50%">
<p style="font-size:20px;font-family:'gotham_symbol';color:#97371f;">THE TEXT GOES HERE</p></div></div></div></body></html>
et je charge l'UIWebView comme suit:
UIWebView *webView = [[UIWebView alloc] initWithFrame:rect];
[webView makeTransparent];
NSURL *baseURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]];
[webView loadHTMLString:html baseURL:baseURL];