{
font-family:'MyWebFont';
我这里是让网页中<body />
里边使用这些字体文件,当然你也可以做你自己的处理!另外需要注意的问题,在myfont.css中如果`font-family
写了相同的名字,则写一个名字即可,但是如果写了不同的名字,则要写上全部的名字,中间用逗号隔开!
③接下来,就要对网页进行处理,加入我们的css!
String assetsFontCSS = "<link href=\"file:///android_asset/myfont.css\" rel=\"stylesheet\" type=\"text/css\"/>";
String assetsbodyCSS = "<link href=\"file:///android_asset/body.css\" rel=\"stylesheet\" type=\"text/css\"/>";
String htmlAdded = htmlSource.replace("</head>", assetsFontCSS + "\n" + assetsbodyCSS + "\n" + "</head>");
将两个css,引入到HTML源码的<head />
标签中!
④最后调用loadDataWithBaseUrl()方法即可!
webView.loadDataWithBaseURL(address, htmlAdded , "text/html","utf-8", null);
因为把字体文件直接打包在APK中,会大大增加APK文件的大小,如果我们想实时在服务器中下载字体,然后再去渲染页面呢,就需要我们将字体文件下载到手机的SD卡中!
这里下载到手机中的目录为SD卡根目录/downloadFont/Fonts/xxx.ttf,对应创建的css文件SD卡根目录/downloadFont/myfont.css
这里字体的下载和文件的创建就不说了,这里说下如何引用。
String SDLinkpath = "file://"+ Environment.getExternalStorageDirectory().getAbsolutePath()+"/downloadFont";
String SDFontCSS = "<link href=\""
+ SDLinkpath
+ "/myfont.css\" rel=\"stylesheet\" type=\"text/css\"/>";
同样的加入到网页源码中<head />
标签中即可!
①在测试中发现,这样引用对字体文件的大小有限制,特别是中文的字体文件,一般都特别大,大概在30M以下可以正常显示,超过30M就不能正常显示了!
High-Logic公司的FontCreator软件是一款功能强大的字体编辑软件!当时使用这个软件将字体文件删除到一定的大小,测试可以正常显示!
如果需要请购买正版,下载仅供测试使用:传送门
②此方法试用于android 4.4及以上版本,即API level 19及以上!以下版本不能显示!
查阅了资料,说WebView内核在4.4以下是webkit,4.4之后是chromium,而chromium是Google和Oprea从webkit分支独立出来的blink渲染引擎!不知道跟这个有没有关系!
这里推荐一位大神人物,对Webkit和Chrominm有很深的研究:
Yongsheng大神
相关参考文章:
开发者应当了解的WebKit知识
Android WebView页面加载优化
Webkit 改善字体加载
Webkit对接Woff字体
Android 拦截WebView加载URL,控制其加载CSS、JS资源
前言有时,当我们使用Webview加载一个网页的时候,需要使用特定的字体来显示,这时就需要我们对页面做下处理!方法①首先需要我们获得目标网页的HTML源码:URL url = new URL(address); URLConnection urlConnection = url.openConnection(); HttpURLConnection conn = (H
function resizeFont() {
//获取屏幕宽度
let clientWidth = document.documentElement.clientWidth || document.body.clientWidth;
//设计图参考宽度
let design = 750;
if (client
document.styleSheets[0].cssRules[0].style.fontSize="44px";
styleSheets为本网页所加载的所有样式表的集合
以百度为例,打开百度任意一个搜索网页,在控制台输入
console.log(document.styleSheets)
StyleSheetList(10) [ StyleSheet , StyleS...
从assets中获取文件 file:///android_asset/page1.jpg
从drawable中获取图片 file:///android_res/drawable/page1.jpg
从font中获取字体 file:///android_res/font/font.otf
其他类型举一反三吧
以下内容没有验证:
Using the re...
手机系统本身预置了不少字体,当然包括android原生的 4种。
android 原生控件设置字体可以用代码设置setTypeface ,或者xml 内设置font family 。
这里就需要主要到这两者的区别
差个前提知识,android实际是linux
① Android 系统的字体文件:位于 /system/fonts/ 文件夹下,我们可以到对应的目录下进行查看,可以看出,Android...
ui.run(() => {
字体 = android.graphics.Typeface.createFromFile("/sdcard/脚本/模块/MiSans-Thin.ttf");
ui.输入框.setTypeface(字体)
String htmlString = "<html><body><h1>Hello World!</h1></body></html>";
Spanned spanned = Html.fromHtml(htmlString);
TextView textView = findViewById(R.id.text_view);
textView.setText(spanned);