Android 字体

字体调研

对于Android系统,是不能自己安装字体的,要修改字体就得有ROOT权限,只有获得了ROOT权限才可以修改系统文件(字体)。但是有的国产手机,例如我们配的测试及魅族note3,系统自带了切换字体的功能,并且有一个字体商店。

字体是如何工作的(参考

字符是用点阵描述的矢量构成的,然后通过自己维护的一个 “Character to Glyph Mapping”表来映射到具体的字符编码上。我们在自己在只做字库文件的时候,要通过专用的软件在点阵中将每一个字描绘出来。最终打包成一个ttf文件。

Android系统的内置字体

Android 中字体的单位(如何和像素进行转换)

字体格式种类 以及他们的区别

Android 自定义字体遇到的坑

  1. 字体文件过大
  2. 字体重复加载对内存的消耗
  3. 在一行字中选用不同的字体

Android 系统中字体的适配

Android -全自动将APP的字体替换系统包含的任意字体

关于(fontello.com/)

Android 直装字体库apk,经两台手机(samsung note4 和 魅族note3)测试,均不可用。

android字体大小多屏幕适配(参考)

Android代码中使用自定义字体的几种方式:

为什么打开字体文件(*.ttf)的时候有好多问号(如下图):

因为这个字库只实现了部分的字体,问号的地方是没有实现的文字

字体格式

字体的单位分析(sp)(参考)

An sp is the same base unit (as dp), but is scaled by the user's preferred text size (it’s a scale-independent pixel), so you should use this measurement unit when defining text size (but never for layout sizes).
sp是和dp一样的基本单位,但是他会按照用户的系统设置进行缩放,所以你应该用他来定义字体的大小,但一定不要用他来定义View的大小。
所以当我们系统设置的字体大小是默认的时候,sp 和 dp的单位是一样的。但当系统设置的字体大小是超大的时候,sp单位对应的字就会按一定比例放大。我们通多下面的代码就可以看到:
这个方法实现了将各种单位的尺寸转换成像素的功能,我们对比下dip和sp的转换过程可以发现这一点

public static float applyDimension(int unit, float value,  
                                   DisplayMetrics metrics)  
{  
    switch (unit) {  
    case COMPLEX_UNIT_PX:  
        return value;  
    case COMPLEX_UNIT_DIP:  
        return value * metrics.density;  
    case COMPLEX_UNIT_SP:  
         return value * metrics.scaledDensity;  
     case COMPLEX_UNIT_PT:  
         return value * metrics.xdpi * (1.0f/72);  
     case COMPLEX_UNIT_IN:  
         return value * metrics.xdpi;  
     case COMPLEX_UNIT_MM:  
         return value * metrics.xdpi * (1.0f/25.4f);  
     }  
     return 0;  
}复制代码

(stackoverflow.com/questions/2…)

参考资料:

转载于:https://juejin.im/post/59dcd3bb6fb9a044ff306cfe

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值