字体调研
对于Android系统,是不能自己安装字体的,要修改字体就得有ROOT权限,只有获得了ROOT权限才可以修改系统文件(字体)。但是有的国产手机,例如我们配的测试及魅族note3,系统自带了切换字体的功能,并且有一个字体商店。
什么是字体(参考)
字体是如何工作的(参考)
字符是用点阵描述的矢量构成的,然后通过自己维护的一个 “Character to Glyph Mapping”表来映射到具体的字符编码上。我们在自己在只做字库文件的时候,要通过专用的软件在点阵中将每一个字描绘出来。最终打包成一个ttf文件。
Android系统的内置字体
Android 中字体的单位(如何和像素进行转换)
字体格式种类 以及他们的区别
Android 自定义字体遇到的坑
- 字体文件过大
- 字体重复加载对内存的消耗
- 在一行字中选用不同的字体
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…)