2011-07-17 12 views
6

Chcę zmienić czcionkę WebView. W folderze "zasoby" znajdują się 2 pliki. Są to:Zmień czcionkę WebView za pomocą CSS; plik czcionki w folderze zasobów. (problem)

aktywa/fonts/DejaVuSans.ttf i

aktywa

/css/result.css

Szukałem kilka odpowiedzi na StackOverflow i znaleźć rozwiązanie, ale to nie działa. Result.css ładuje plik DejaVuSans.ttf, używając dyrektywy @ font-face. Następnie jest zawarty w tagu danych < link, który jest przekazywany do WebView :: loadDataWithBaseURL (kod znajduje się poniżej). Problem polega na tym, że style CSS działają (tekst jest czerwony), ale czcionka nie ma wartości. Kwadratowe znaki pojawiają się, gdy wyświetlam symbole fonetyczne (/ 'pə: sn /).

String resultText = "<html><head>"; 
resultText += "<link href=\"css/result.css\"" + " rel=\"stylesheet\" type=\"text/css\" />"; 
resultText += "<style>" + "@font-face { font-family: \"DejaVuSans\"; " + "" + 
"src: url('file:///android_asset/fonts/DejaVuSans.ttf'); }</style>"; 
resultText += "</head>"; 
resultText += "<body><p>" + text + "</p>" + "</body></html>"; 
resultView.loadDataWithBaseURL("file:///android_asset/", resultText, "text/html", "utf-8", null); 

result.css:

@font-face { 
    font-family: "DejaVuSans"; 
    /*src: url('fonts/DejaVuSans.ttf'); also not work*/ 
    src: url('file:///android_asset/fonts/DejaVuSans.ttf'); 
} 

body { 
    color: red; 
} 

System.out.println (resultText) wynosi:

<html><head><link href="css/result.css" rel="stylesheet" type="text/css" /><style>@font-face { font-family: "DejaVuSans"; src: url('file:///android_asset/fonts/DejaVuSans.ttf'); }</style></head><body><p>person /'pə:sn/</p></body></html> 

Odpowiedz

16

Został rozwiązany. Nie dodałem „font-family” do wyboru ciała i url czcionka musi być plik: ///android_asset/fonts/DejaVuSans.ttf”

@font-face { 
    font-family: 'DejaVuSans'; 
    /* src: url('DejaVuSans.ttf'); This doesn't work */ 
    /* src: url('fonts/DejaVuSans.ttf'); Neither is this */ 
    src: url('file:///android_asset/fonts/DejaVuSans.ttf'); /* but this does */ 
} 

body { 
    font-family: 'DejaVuSans'; 
    color: red; 
} 
+0

Pracuję nad oknami. poznać "rodzinę czcionek"? – MobiDev

+0

Mam ten sam problem, ale czcionka nadal nie ładuje się. Piszę cały plik tekstowy i krój pisma na pliku HTML, który ładuje się do widoku strony. – Kenji

4

znane błędów na 2,0 do 2,1:

http://code.google.com/p/android/issues/detail?id=4448

Dla 2.2 :

@font-face { 
    font-family: 'FontName'; 
    src: url('filefont.ttf'); // with no "fonts/" 
} 
+0

użyłem tag „android-2.2”. ten błąd jest z 2.0. została ona ustalona w 2.2. – Emerald214

+0

prawo, edytowany ... – ChristopheCVB

+0

To nie działa Mój plik czcionek znajduje się w folderze assets/fonts Próbowałem skopiować go do zasobów/ale nadal nie działa – Emerald214

0

użyłem wymiany Cufon dla urządzeń, które nie obsługują. mój lokalny font face. pisałem funkcji javascript, aby ustalić, czy cufon wymagana jest

requiresCufon : function(){ 
    var version = window.navigator.userAgent.match(/Android\s+([\d\.]+)/); 
    var MINIMUM_OS_FONTFACE = 2.2; 
    if(typeof version != 'undefined'){ 
     //strip non digits 
     version = version[0].replace(/[^0-9\.]/g, ''); 
     //if version is less than required for @font-face then cufon 
     if(parseFloat(version) < MINIMUM_OS_FONTFACE) 
      return true; 
     else 
      return false; 
    } 
    else{ 
     return true; 
    } 
},