0

我想开发一个支持我提供的 Unicode 字体的简单 android 网络浏览器应用程序。我做了一些研究,但找不到为 android 添加自定义字体的成功方法WebView。有一些解决方案可以为 a 添加自定义字体,WebView但它们都是基于在CSS. 但是由于我无法控制在 WebView 中加载的页面,是否有一种方法可以将字体直接添加到WebView类似的setTypaFace()方法中TextView

这是到目前为止我用来为 webview 添加自定义字体的代码:

package com.example.sinhalafontrendering;

import android.app.Activity;
import android.graphics.Typeface;
import android.os.Bundle;
import android.view.Menu;
import android.webkit.WebView;
import android.widget.TextView;

import com.example.sinhalafontrendering.R.id;

public class MainActivity extends Activity {
    WebView mWebView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        FontUtils.setCustomFont(findViewById(id.txtHelloWorld), getAssets());
        Typeface tf = Typeface.createFromAsset(getAssets(), "iskpota.ttf");
        TextView tv = (TextView) findViewById(id.txtHelloWorld);
        tv.setText("ශ්‍රී ලංකා, \n ");
        //tv.setTypeface(tf,0);

        String html = "<html><head><style type=\"text/css\">@font-face { font-family: MyCustomFont; src: url(\"Bamini.eot\") /* EOT file for IE */}@font-face { font-family: MyCustomFont; src: url(\"file:///android_asset/iskpota.ttf\") /* TTF file for CSS3 browsers */}body { font-family: MyCustomFont, Verdana, Arial, sans-serif;font-size: medium;color: black}</style></head><body><LI><a href=\"http://www.thelastrow.lk/\">ශ්‍රී ලංකා;</a></LI></UL></div></body></html>";

        mWebView = (WebView) findViewById(R.id.webGoogle);
        mWebView.getSettings().setJavaScriptEnabled(true);
        mWebView.getSettings().setBuiltInZoomControls(true);
        mWebView.getSettings().setSupportZoom(true);
        //mWebView.loadUrl("file:///android_asset/a.html");
        mWebView.loadDataWithBaseURL("www.thelastrow.lk", html, "text/html", "UTF-8", null);
        mWebView.setWebViewClient(new HelloWebViewClient());


    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
}
4

1 回答 1

0

它与 loadDataWithBaseURL 一起使用!

对于此示例,我将 CSS 更改为:

@font-face {
    font-family: 'feast';
    src: url('fonts/feasfbrg.ttf');
}

body {font-family: 'feast';}

然后使用资产路径作为基本 url:

loadDataWithBaseURL("www.google.com",myhtml,"text/html","utf-8",null);
于 2013-07-16T05:20:26.427 回答