android 字体light,Android 字体(1)使用系统字体

本文探讨了如何在UC浏览器和Android环境中实现17°这样极细的字体自定义,通过TextView、Spannable和系统字体设置尝试,揭示了挑战与可用资源,包括 Thin 字体选项和Android API版本的变化。
摘要由CSDN通过智能技术生成

先看UC浏览器的温度

6f579834b50f

要实现17°这样的极细的字体

自定义View

继承TextView,在onDraw方法中设置画笔粗细

TextPaint tp = new TextPaint();

tp.setAntiAlias(true);

tp.setStyle(Paint.Style.FILL_AND_STROKE);

tp.setStrokeWidth(0.1f);

setStrokeWidth方法默认参数是0,而且不接受负数参数,也就是说,只能加粗不能变细。

Spannable

再试试Spannable

Spannable s = new SpannableString("17°29");

s.setSpan(new AbsoluteSizeSpan(30, true), 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

s.setSpan(new AbsoluteSizeSpan(30, false), 3, 5, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

s.setSpan(new RelativeSizeSpan(2.0f), 0, 3, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

tv.setText(s);

效果也是一样,可以改变字体大小,但是只能加粗不能变细

Thin字体

从字体本身出发,尝试寻找细细的字体

Added in Android Jelly Bean (4.1) - API 16 :

Regular (default):

sans-serif

normal

Italic:

sans-serif

italic

Bold:

sans-serif

bold

Bold-italic:

sans-serif

bold|italic

Light:

sans-serif-light

normal

Light-italic:

sans-serif-light

italic

Thin :

sans-serif-thin

normal

Thin-italic :

sans-serif-thin

italic

Condensed regular:

sans-serif-condensed

normal

Condensed italic:

sans-serif-condensed

italic

Condensed bold:

sans-serif-condensed

bold

Condensed bold-italic:

sans-serif-condensed

bold|italic

Added in Android Lollipop (v5.0) - API 21 :

Medium:

sans-serif-medium

normal

Medium-italic:

sans-serif-medium

italic

Black:

sans-serif-black

italic

我自己的尝试

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:id="@+id/textview"

android:textSize="60sp"

android:layout_gravity="center_horizontal|bottom"

android:textColor="@color/colorAccent"

android:gravity="center"

android:textStyle="normal"

android:fontFamily="sans-serif-thin"

android:text="17°"/>

6f579834b50f

系统字体的位置

D:\Android\sdk\platforms\android-N\data\fonts

fonts.xml里配置了字体的别名

在推上fo了个toefl单词机器人,没想到很多单词的音标显示成了小方块,那就是android默认的英文字体对某些英语国际音标不支持了,当然我的Galaxy S刷了第三方ROM的,不过从网上的帖子来看,官方的字体存在一样的问题,总而言之是字体的问题了。 也搜了一些帖子,但没有很好的解决方案,默认的英文字体还是挺美观的,只是某些英语音标的编码位上缺失了相应的字符而已,Anroid使用Java作为默认开发环境,那默认的字体也应该是使用UNICODE UCS编码的,事实证明的却如此。那就很简单了,强大的字体编辑工具FontForge派上用场了。 Ubuntu仓库里面的版本太低了,可以使用GetDeb仓库来安装最新版本的FontForge。用FontForge打开Android默认的英文字体DroidSans.ttf,果然国际音标编码区域空空如也,英语音标现实不完全也就一点儿也不奇怪了。从国际音标wiki上查找到了这写符号的UNICODE编码,从DejaVuSerif.ttf和Gothic.ttf这两个字体里面提取了对应的字形(glyph)插入到DroidSans.ttf相应的BMP(Basic Multilingual Plane)编码位上。当然只补充了英语音标会用到的字符,包括ɑ,ɒ,ɔ,ə,ɛ,ɜ,ɪ,ɵ,ʃ,ʌ,ʒ,ʤ,ʦ,ʧ这几个常用音标字符。默认的字体竟然连重音(primary stress)和次重音(Secondary stress)这两个符号都没有,一并补齐了。 将制作好的字体覆盖Android默认英文字体/system/fonts/DroidSans.ttf,当然需要root权限,再看英语音标,显示的相当完美了,google dictionary里面的音标也完全没有问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值