Soru Bir UIWebView'de özel yazı tipi kullanma


Bir UIWebView içinde özel bir yazı tipi göstermek istiyorum. Yazı tipini "Uygulama tarafından sağlanan yazı tipleri" altındaki plist'e zaten koymuştum. Kullanılan kod:

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

html, aşağıdaki içeriğe sahip bir NSString'dir:

<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: &#1101;
</body></html>

İOS 4.2 kullanıyorum, bu yüzden TTF desteklenmeli. Gerçekten işe yarayan bir miktar html / kodu takdir ediyorum.


49
2018-05-07 23:52


Menşei


GOTHAMboldSymbol_0.tff - uzantı olmalı ttf (yazı tipi gerçekten bir tff diskteki uzantı). - Evan Mulawski
Buna da bir çözüm bulmaya çalışıyorum, ama: baseURL için 'nil' kelimesini geçmek istediğinizi düşünüyorum. - MusiGenesis
@Joris Ben şu anda aynı sorunla uğraşıyorum ve bir çözüm bulup duymadığınızı anlamak ilginç olacaktır. - Lindemann
Aşağıda benim html gönderdim ... eğer sizin için çalışıyorsa bildirin - Joris Weimar


Cevaplar:


Bazı Deneme ve Hatalardan sonra yerel bir CSS ile özel Yazı Tiplerini yüklemek için güvenilir bir yol buldum.

1. Yazı Tipi'nizi Uygulamaya ekleyin ... dosyanın hedeflendiğinden emin olun     Uygulamaya uygun şekilde

enter image description here enter image description here

2. Ardından Yazı Tipi'nizi App-Info.plist'inize ekleyin

enter image description here

3. koş NSLog(@"Available fonts: %@", [UIFont familyNames]); Yazı tipi / fontfamily'un Sistem için hangi ismin bulunduğunu kontrol etmek için ...

enter image description here

4. Bu adı kopyalayın ve bunları CSS'nizde kullanın ... @ font-face gerekli değildir

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

96
2017-10-02 19:42



Üzgünüm, bu adımı dahil ettim. Bir şekilde bu adımı zaten yapmış olduğunuzu farz ettim. - Joris Weimar
Teşekkür ederim! Bu herhangi bir yerde belgelenmiş mi? - ozz
Adım 1-3 temel olarak bir Uygulamaya özel yazı tipleri eklemenin standart yoludur ... bu nedenle belgelenmiştir. Ve son adımda, bir sistemde mevcut olan bir yazı tipini çağırmanın standart yolunu kullanıyorsunuz ... :-) - Lindemann
Kullanmanız gereken gerçek font isimleri için: [UIFont fontNamesForFamilyName:"Liberation Serif"] - Koen.
Hala en yeni sürüm iOS için çalışıyor. mayın çevre iOS SDK 11.2. - Jerry Chen


Yukarıda yanlış yaptığımdan emin olmadığım halde işe yaradım. İşte kullandığım HTML (NSString * htmll). Her şeyi ekledim, bir kısmı çözüm için uygun olmayabilir.

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

ve UIWebView'ı aşağıdaki gibi yüklüyorum:

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

12
2017-10-02 05:47



Teşekkürler Joris! <3 - Lindemann
Lindemann'ın başka bir çözümü benim için işe yaramadı ama bu işe yaradı. - Christian