8

Web ビュー用に新しいカスタム フォント (otf ファイル) を作成しようとしています。

anbaaarabic_bold.otf をアセットファイルに入れました。

私が行う方法があります:

String head = "<head><style>@font-face {font-family: 'verdana';src: url('file://"+ getActivity().getFilesDir().getAbsolutePath()+ "/anbaaarabic_bold.otf');}body {font-family: 'verdana';}</style></head>";
String htmlData= "<html>"+head+"<body style=\"font-family: verdana\">"+body+"</body></html>" ;

mBodyArticle.loadDataWithBaseURL("http://nada", htmlData,
                    "text/html", "utf-8", "");

body : 私の html コードが含まれています。

WebView でフォントが機能しない理由がわかりません。body htmlのフォントは変わりません。

4

6 に答える 6

11

カスタム フォントが特定の言語 (タイ語、ヘブライ語、ペルシア語、およびアラビア語が言及されています) では機能しないことを示唆しているように思われる、Androidのバグ レポートがあります。これは Google の誰にも確認されていませんが、同じ問題が報告されている人が多数います。

提案された解決策の 1 つ (少なくとも 1 人のユーザーが機能していることを確認しました) は、フォントを otf から svg に変換することでした。これを行うオンライン ツールは多数ありますが ( Everything Fontsはその一例です)、これが著作権で保護されたフォントであることに問題がある可能性があります。フォント ライセンスでこのような変換が許可されていることを確認してください。

また、フォントを変換したら、それをテキスト エディターで開き、svg 要素が名前空間化されているかどうかを確認します。次のようになります。

<svg xmlns="http://www.w3.org/2000/svg">

名前空間がないだけ<svg>の場合は、xmlns 属性を手動で追加する必要がある場合があります。どうやら、名前空間のない svg フォントも機能しません。

于 2013-08-15T16:08:18.137 に答える
3

これは、html を使用して webview の書体を設定する方法の例です。このビューで書体を HTML 文字列に設定し、webview で読み込みます。フォントをassestsフォルダに入れます。

ここに画像の説明を入力

デフォルトのフォントを持つすべての Android デバイス。書体を使用することで、アプリケーションの外観と操作性を向上させる必要があります。書体の詳細については、ここをクリックしてください。

ステップ :1 新しい Android アプリケーション プロジェクトを作成し、これらのコードを xml ファイル activity_main.xml にコピーします。]

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <WebView
        android:id="@+id/webViewFace"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</LinearLayout>

ステップ:2 src フォルダーに MainActivity.java を作成し、これらのコードをコピーします。

package com.androidtoppers.typeface;

import android.app.Activity;
import android.os.Bundle;
import android.view.Window;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class MainActivity extends Activity {

 WebView mWebView;


 String htmlstr1="<p style='text-align:right'><H2>Android Toppers</H2></p> <p style='text-align:left'>It is safer to use a JSON parser to convert a JSON text to a JavaScript object.</p>";
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  // TODO Auto-generated method stub
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activtiy_main);

  mWebView = (WebView) findViewById(R.id.webViewFace);
  mWebView.setWebViewClient(new WebViewClient() {

   @Override
   public boolean shouldOverrideUrlLoading(WebView view, String url) {
    // TODO Auto-generated method stub
    view.loadUrl(url);
    return true;
   }
  });
   String head1 = "<head><style>@font-face {font-family: 'arial';src: url('file:///android_asset/fonts/bichkam.ttf');}body {font-family: 'verdana';}</style></head>";
   String text="<html>"+head1
     + "<body style=\"font-family: arial\">" + htmlstr1
     + "</body></html>";

   mWebView.loadDataWithBaseURL("", text, "text/html", "utf-8", "");

 }

}

詳細については、このリンクを参照してください: http://velmuruganandroidcoding.blogspot.in/2014/08/set-typeface-for-webview-in-android.html

于 2014-09-05T18:42:35.880 に答える
2

もしかしてあなたの携帯電話は Android 2.1 を実行していますか?

2.1 には既知のバグがあります。その結果、カスタム フォントは 2.1 では機能しません。ただし、これは 1.5、1.6、および 2.2 で機能するはずです。

詳細については、こちらをご覧ください。

于 2013-08-03T14:09:57.247 に答える
0

このリンクを試してください

 <title>example</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

 <style type="text/css">@font-face {font-family: MyCustomFont; src: 

url(file:///android_asset/Bamini.otf)}body {font-family: MyCustomFont, Verdana, Arial, 

sans-serif; font-size: medium; color: black}</head><body>

<h1>tamilStringEncoded </h1></body></html>
于 2013-12-11T06:49:06.190 に答える
-3

フォントが存在するアセットフォルダーにアクセスできないと思いgetActivity().getFilesDir().getAbsolutePath()ます。そのため、フォントの変更は見つからないため無視されます。カスタムフォントを使用していたときは、パスを使用しましたthis.getAssets() + "your_font_name.otf"

私が使用したコード:

Typeface type = Typeface.createFromAsset(this.getAssets(), fontName);
((TextView) findViewById(R.id.textView1)).setTypeface(type);
于 2013-08-03T13:26:31.773 に答える