Изменить шрифт WebView с помощью CSS; файл шрифта в папке активов. (Проблема) - PullRequest
6 голосов
/ 17 июля 2011

Я хочу изменить шрифт WebView.В папке "assets" 2 файла.Это:

assets / fonts / DejaVuSans.ttf и

assets / css / result.css

Я искал несколько ответов в StackOverflow и нашел решение, но это нене работаетФайл result.css загружает файл DejaVuSans.ttf с помощью директивы @ font-face.Затем он включается в тег данных, которые передаются в WebView :: loadDataWithBaseURL (код ниже). Проблема в том, что стили CSS работают (текст красный), но шрифт не .Квадратные символы появляются, когда я показываю фонетические символы (/'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):

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

Ответы [ 3 ]

17 голосов
/ 17 июля 2011

Это было решено. Я не добавил "font-family" к селектору тела, и URL шрифта должен быть 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;
}
4 голосов
/ 17 июля 2011

Известная ошибка на 2.0 и 2.1:

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

Для 2.2:

@font-face {
    font-family: 'FontName';
    src: url('filefont.ttf'); // with no "fonts/"
}
0 голосов
/ 12 июля 2012

Я использовал замену cufon для устройств, которые не поддерживают мой локальный шрифт. Я написал функцию javascript, чтобы определить, требуется ли cufon

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;
    }
},
...