2011-07-17 37 views
6

Tôi muốn thay đổi phông chữ WebView. Có 2 tệp trong thư mục "asset". Đó là:Thay đổi phông chữ WebView bằng CSS; tệp phông chữ trong thư mục nội dung. (vấn đề)

tài sản/fonts/DejaVuSans.ttf và

tài sản/css/result.css

tôi đã tìm kiếm một số câu trả lời trên StackOverflow và tìm ra một giải pháp nhưng nó không hoạt động. Các result.css tải DejaVuSans.ttf bằng cách sử dụng chỉ thị @ font-face. Sau đó, nó được bao gồm trong liên kết <> thẻ dữ liệu được chuyển đến WebView :: loadDataWithBaseURL (Mã bên dưới). Vấn đề là kiểu CSS hoạt động (văn bản màu đỏ) nhưng phông chữ không. Ký tự Square xuất hiện khi tôi hiển thị các ký hiệu phiên âm (/ '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; 
} 

Các System.out.println (resultText) là:

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

Trả lời

16

Nó đã được giải quyết. Tôi không thêm "font-family" để chọn cơ thể và phông chữ url phải file: ///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

Tôi làm việc trên các cửa sổ. ame để biết "font-family"? – MobiDev

+0

Tôi có cùng một vấn đề nhưng phông chữ vẫn không tải. Tôi viết toàn bộ tệp văn bản và kiểu chữ trên tệp html tải lên chế độ xem web. – Kenji

4

lỗi Known trên 2.0 và 2.1:

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

Dành cho 2.2 :

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

tôi đã sử dụng thẻ "android-2.2". lỗi đó là 2,0. Nó đã được cố định trong 2.2. – Emerald214

+0

đúng của bạn, thay đổi nội dung ... – ChristopheCVB

+0

Nó không hoạt động.Tệp phông chữ của tôi nằm trong thư mục tài sản/phông chữ.Tôi đã cố gắng sao chép nó vào nội dung/nhưng vẫn không hoạt động. – Emerald214

0

tôi đã sử dụng thay thế cufon cho các thiết bị không hỗ trợ. địa phương font face của tôi. tôi đã viết một hàm javascript để xác định xem cufon là cần thiết

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; 
    } 
}, 
Các vấn đề liên quan