在UIWebView中使用自定义字体

我想在UIWebView中显示自定义字体。 我已经将字体放在“应用程序提供的字体”下的plist中。 正在使用的代码:

UIWebView *webView = [[UIWebView alloc] initWithFrame:myRect]; NSURL *baseURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]]; [webView loadHTMLString:html baseURL:baseURL]; [self addSubview:webView]; 

其中html是具有以下内容的NSString:

 <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> 

我使用的是iOS 4.2,因此应该支持TTF。 我会欣赏一些实际工作的HTML /代码。

经过一些尝试和错误后,我find了一种可靠的方式来加载自定义的字体与本地的CSS。

1.将您的字体添加到应用程序…确保该文件的目标正确的应用程序

在这里输入图像说明在这里输入图像说明

2.然后将您的字体添加到yourApp-Info.plist

在这里输入图像说明

3.运行NSLog(@"Available fonts: %@", [UIFont familyNames]); 要检查字体/ fontfamily对于系统的名称…

在这里输入图像说明

4.复制这个名字并在你的CSS中使用它们@ @ font-face不是必需的

 body { font-family:"Liberation Serif"; } 

我结束了它的工作,虽然我不知道我上面做错了什么。 这是我使用的HTML(NSString * htmll)。 我添加了所有内容,其中一些可能与解决scheme无关。

 <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> 

我加载的UIWebView如下:

 UIWebView *webView = [[UIWebView alloc] initWithFrame:rect]; [webView makeTransparent]; NSURL *baseURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]]; [webView loadHTMLString:html baseURL:baseURL];