文档章节

Android系统字体规范

扬名立万
 扬名立万
发布于 2014/07/31 11:27
字数 1026
阅读 51
收藏 0

Android系统字体规范

1. 移动设计中与字号有关的基本概念

  • px:Pixels即像素,基本原色素及其灰度的基本编码。

  • DPI:dots per inch,是印刷上的记量单位,意思是每个英寸上,所能印刷的网点数。

  • PPI:pixels per inch 数字影像的解析度,意思是每英寸所拥有的像素数,即像素密度。

  • PPI = √(长度像素数² + 宽度像素数²) / 屏幕对角线英寸数

  • pt:Point,磅因,国际通行的印刷单位,是一个自然界标准的长度单位。

    inch = 2.54cm = 25.4 mm = 72pt, 1pt≈0.35mm
    Photoshop里的字体单位pt和point不一样。在Photoshop里,同样是10pt的字,只要变换字体,字的高度就会变化。

  • dp:Density-independent pixels,以160PPI屏幕为标准,则1dp=1px

  • dp和px的换算公式 :dp*ppi/160 = px

  • sp:Scale-independent pixels.安卓的字体单位,以160PPI屏幕为标准,当字体大小为 100%时, 1sp=1px

  • sp 与 px 的换算公式:sp*ppi/160 = px


2. Android 系统默认字体 Rotobo,限定使用以下字号

032516uL1


3. Android 字体单位 sp 与 px 的换算

  • PPI = √(长度像素数² + 宽度像素数²) / 屏幕对角线英寸数

  • sp与px的换算公式:sp*ppi/160 = px

以三星Note2为例,PPI = √(1280² + 720²) / 5.5=267
0325166eM

经测量,三星Note2的字体高度确实如此,见下图:
0325165K5


4. 规范字号的意义

保证相同字号的字在不同PPI屏幕上显示的物理高度一致,下面来验证一下。

  • 设定 PPI为 267 时,高度18sp(即 30px)的字的物理高度为 X,则:
    一英寸里的像素数 267 / 一英寸里的毫米数 25.4mm = 30 / X
    X ≈ 2.86mm

  • 设定 PPI为 160 时,高度18sp(即 18px)的字的物理高度为 Y,则:
    一英寸里的像素数 160 / 一英寸里的毫米数 25.4mm = 18 / Y
    Y ≈ 2.86mm

综上,X = Y,这就证明了同为18sp的字在 PPI分别为 267 和 160 时,显示的物理高度都是 2.86mm


5. 印刷业的规范字号的用法

看书的时候眼睛距离书本的最佳距离为 33cm,书本的阅读距离比较接近于手机的阅读距离,所以我们来参考下书本上印刷文字的规范。

印刷业已经有成熟的行业字号标准,如下表所示:
032516FuM

其中正文常用的字号是六号(7.5p)、小五号(9p)、五号(10.5p),如下表所示:
032516DIV


6. Android 规范字号的近似用法

通过计算出 Android规范字号的物理高度,找到每个字号最接近的印刷字号:
032516zev

再根据印刷字号的用途,近似得出Android 规范字号的用法
032516h0W


7. 如何向前端输出?

第一步:将sp 换算成px。但是px随PPI 变化而变化,这一点可以从sp 与px的换算公式“sp*ppi/160 = px ”看出来。我们不能算出所有的情况,所以只计算首选需要适配的ppi 对应的像素高度。

第二步:把算好的像素高度和换算公式“ sp * ppi/160 = px ”同时输出给前端,这样以后再换ppi,前端可以自动计算。另外,前端代码里定义字体高度用的也是px,所以设计师向前端输出以px计算的字号尺寸是非常合适的。例如:
032516RML


8. 如何在photoshop里选择字号?

上文中,我们已经算出了字体像素高度,把这些像素高度画到ps 里,
再把你要使用的字体调到这样的像素高度,得出photoshop 里对应的字号,用于设计。也就是说Photoshop 里的字号都需要根据实际情况,手动调出来,没有捷径。例如ppi 为240 时,对应的像素高度和字体字号如下图所示:
0325174p4

如果ppi 变化,上面的图就不能用了,又要重新算,比较劳神费力,但我目前还没有更好的办法,欢迎大家拍砖,我会积极采纳意见,优化方案。


本文转载自:

扬名立万
粉丝 8
博文 80
码字总数 36824
作品 0
厦门
私信 提问
移动开发规范概述-alloyteam【腾讯】

移动开发规范概述 以下规范建议,均是Alloyteam在日常开发过程中总结提炼出的经验,规范具备较好的项目实践,强烈推荐使用 字体设置 iOS 4.0+ 使用英文字体 Helvetica Neue,之前的iOS版本降...

陈文亮
2015/02/28
9
0
Android Q 文本新功能

作者: Florina Muntenescu, Android 开发技术推广工程师 文本显示是大部分应用的重要任务之一。为了帮助您打造更好的文本体验,我们在 Android Q 中引入多项新特性,在满足开发者需求的同时,...

Android_开发者
08/05
0
0
小弟求教个关于android程序界面适配问题

我是一名android菜鸟,对于安卓APP开发中界面自适应手机各种尺寸各种分辨率的解决方案有点疑问,网上也看了看相关的资料。 先来讲讲我对网上相关资料的大致理解:界面适配中资源主要有两大类...

清时明月
2016/01/19
558
2
提升应用视觉Android效果的10个UI技巧

在Android应用开发中,风格和设计或许不是最关键的要素,但它们在决定Android应用成功与否上确实扮演重要的角色。以下是10个Android应用的UI设计技巧,还有个附加技巧,能够提供你的Android...

任洪君
2012/02/22
662
0
提升Android应用视觉效果的10个UI技巧【转】

看完这篇文章后觉得很实用很精辟,出于分享精神,能让更多的朋友看到这篇文章,产生更多的brainstorm,于是就转过来了,原文地址是 http://blog.csdn.net/muge0913/article/details/7294124 ...

长平狐
2012/11/12
82
0

没有更多内容

加载失败,请刷新页面

加载更多

计算机实现原理专题--二进制减法器(二)

在计算机实现原理专题--二进制减法器(一)中说明了基本原理,现准备说明如何来实现。 首先第一步255-b运算相当于对b进行按位取反,因此可将8个非门组成如下图的形式: 由于每次做减法时,我...

FAT_mt
今天
4
0
好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
今天
7
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
今天
6
0
【技术分享】TestFlight测试的流程文档

上架基本需求资料 1、苹果开发者账号(如还没账号先申请-苹果开发者账号申请教程) 2、开发好的APP 通过本篇教程,可以学习到ios证书申请和打包ipa上传到appstoreconnect.apple.com进行TestF...

qtb999
今天
10
0
再见 Spring Boot 1.X,Spring Boot 2.X 走向舞台中心

2019年8月6日,Spring 官方在其博客宣布,Spring Boot 1.x 停止维护,Spring Boot 1.x 生命周期正式结束。 其实早在2018年7月30号,Spring 官方就已经在博客进行过预告,Spring Boot 1.X 将维...

Java技术剑
今天
18
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部