ユニコード文字を表示したいので、タグを使用しました:<font face=" Arial">something here</font>
。しかし、WebView
はUFO文字しか表示できないため、Arialフォントを見つけることができないようです。 arial.ttfをどこかにコピーする必要がありますか、またはこのTrueTypeフォントをWebView
で使用するにはどうすればよいですか?ありがとう。
loadData
も機能しなかったので、file:///Android_asset
srcパス。
loadDataWithBaseURL
で動作しました!
この例では、CSSを次のように変更しました。
@font-face {
font-family: 'feast';
src: url('fonts/feasfbrg.ttf');
}
body {font-family: 'feast';}
次に、アセットパスをベースURLとして使用します。
loadDataWithBaseURL("file:///Android_asset/",myhtml,"text/html","utf-8",null);
明らかに、上記の@raychungが提案したように、WebView
にカスタムフォントを使用できます。しかし、これは2.1では機能しません(バグは here と報告されています)。これは、1.5、1.6、および2.2で機能するはずです。
カスタムフォントTTFファイルを/assets
フォルダー、CSSファイルに次を配置できます。
@font-face {
font-family: "myIPA";
src: url('IPA.TTF');
}
.phon, .unicode
{
display: inline;
font-family: 'myIPA', Verdana, sans-serif;
font-size: 14pt;
font-weight: 500;
font-style:normal;
color: black;
}
これで、HTMLファイルでこのフォントスタイルを参照できます。
私はペルシャ語フォントでRTL方向に以下のコードを使用しました、誰かがこのコードを使用したか、誰かが私に最善の方法を提案することを願っています。ありがとう
String myCustomStyleString="<style type=\"text/css\">@font-face {font-family: MyFont;src: url(\"file:///Android_asset/fonts/BYEKAN.ttf\")}body,* {font-family: MyFont; font-size: medium;text-align: justify;}</style>";
webView.loadDataWithBaseURL("", myCustomStyleString+"<div style=\"direction:rtl\">"+myHtm+"</div>", "text/html", "utf-8", null);
@font-face {
font-family: 'MyCustomFont';
src: url('/assets/fonts/MaycustomFont.ttf')
}
わたしにはできる。
->src
->assets
->fonts
->MaycustomFont.ttf
->..
->res
アプリの最初の起動時にアセットからファイルフォルダーにフォントファイルをコピーし、それを次のように参照することで、すべてのバージョンで動作するようになります。
"@font-face {
font-family: cool_font;
src: url('file://"+ getFilesDir().getAbsolutePath()
+ "/cool_font.ttf');
}"
私にとってはうまくいきませんでした。ローカルファイルへの参照を使用する代わりに、Webサーバー上のフォントをリンクする必要がありました。
@font-face {
font-family: 'feast';
src: url('http://yoursite.com/tutorial/css/feasfbrg.ttf');
}
body {font-family: 'feast';}
これは、テストしたすべてのデバイスでうまく機能します。
フォントファイルを/ src/main/assets/fontsに配置し、次の方法を使用します。
public class HTMLUtils {
public static String getLocalFontInHTML(String html, String fontFamily, String fontFileName) {
return "<!DOCTYPE html>\n" +
"<html>\n" +
"<head>\n" +
"<style>" +
"@font-face {" +
"font-family: " + fontFamily + ";" +
"src: url('" + fontFileName + "');" +
"}" +
"* {font-family: '" + fontFamily + "' !important;}" +
"* {font-size: 1rem !important;}" +
"</style>" +
"</head>\n" +
"<body>\n" +
html +
"\n" +
"</body>\n" +
"</html>";
}
}
次のように
webView.loadDataWithBaseURL("file:///Android_asset/", HTMLUtils.getLocalFontInHTML(item.text, Config.FONT_FAMILY, Config.REGULAR_FONT),"text/html", "UTF-8", null);
どこで
public static final String FONT_FAMILY = "Montserrat";
public static final String REGULAR_FONT = "fonts/Montserrat-Regular.otf";
それが誰かを助けることを願っています!
HTMLコードのフォントサイズを維持する場合は削除します
"* {font-size: 1rem !important;}"
1remは約14spに相当することに注意してください
基本的な考え方は、Webページがフォントファイルにアクセスできるようにすることです。これが、HTMLファイルとフォントファイルの両方がassetsフォルダーにあり、そこからHTMLファイルがロードされるときに、提案された元のソリューションが機能する理由です。
これはAndroid機能ではなく、CSSなので、任意のAndroid SDK。
フォントファイルが実際に存在し、スタイルへの正しいパスが指定されている場合、ファイルフォルダーからのフォントの読み込みも機能するはずです。しかし、アプローチは面倒です。ファイルをコピーするコードを作成し、次にファイルの場所を特定するコードを作成する必要があります。
アセットにHTMLコンテンツとフォントファイルを入れて、そこからロードするだけで非常に満足しています。
webView.loadUrl("file:///Android_asset/content.html");
フェリペ・マルティネス・カレーニョが言ったように、資産からコピーすることができ、それは機能します。
詳細については this を参照してください。
cSSを使用
@ font-face { font-family:cool_font; src:url( 'cool_font.ttf'); }