`
rex_wong
  • 浏览: 17403 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

pt, px与dpi的关系

阅读更多

来源:http://wanliqunn.blog.163.com/blog/static/9865179200951492229591/

我的笔记本像素已经调节到了最大1440×900,但是在看一些网页的时候,发现字体实在是太小了,由于,我试着改了一下系统的dpi,从96DPI改到120DPI,结果发现有些网页的字体没有发生改变,有些网页的字体变大了。真是奇怪,查了一下资料,终于发现是怎么回事。

       在印刷排版中“point”是一个绝对的单位,它等于 1/72 英寸。可以用尺子丈量的,物理的英寸。
  但在电脑显示器中pt的含义却非如此,例如我们指定一个字体是9pt,浏览器会以电脑显示器的规范解释,它等于:

  9 * 1/72 = 1/8 inch

  这是一个误解,因为我们的显示器被分割为了一个个的像素,单个像素只能有一种颜色(为了简化,这里暂不讨论次像素反锯齿技术),要在屏幕上显示,必须先把以pt为单位的长度转换为以像素为单位的长度,这个转换的媒介,就是dpi(事实上,这里的所谓的dpi,是操作系统和浏览器中使用的术语,即为PPI, pixels per inch,扫描仪、打印机、数码相机中的DPI是不同的)。

  例如,无论在哪个操作系统中,Firefox浏览器默认的dpi都是96,那么实际上:

  9pt = 9 * 1/72 * 96 = 12px

  所以,虽然“pdi”中的“I”和“1pt”等于1/72 inch中的“inch”,都不代表物理上的英寸,但这两个单位互相之间是相等的,也就在相乘中约掉了。

  那么,真实的物理长度怎么计算呢?请拿出一把尺子,丈量你的显示器的可见宽度 (我这里是 14 英寸),除以横向分辨率 (我这里是 1024 像素),得到的就是每个像素的物理长度。

  现在我们可以回答这样一个问题,网页上 9pt 的字体究竟占用了多宽的空间?答案是:

  9 * 1/72 * 96 * 14 / 1024 inch

  那为什么我的电脑更改dpi以后,有的网页字体变大,有的不变。原来,当dpi从96增加到120时,1px占的实际物理尺寸是1px/1440px × 14inch,而为96时,1px占的实际物理尺寸为1px/1440px×14inch。由此可见,那些以px作为尺寸单位的字体仍然会保持原样,而以pt作为单位的字体则会增大。

下面是我查找的一篇解释px, pt方面不错的文章,原文章地址:http://publish.it168.com/2009/0602/20090602004201.shtml


在网页设计CSS中,经常用到字体,而字体大小的设置单位,常用的有2种:px、pt。这两个有什么区别呢?

  先搞清基本概念:px就是表示pixel,像素,是屏幕上显示数据的最基本的点;而pt就是point,是印刷行业常用单位,等于1/72英寸。

  这样很明白,px是一个点,它不是自然界的长度单位,谁能说出一个“点”有多长多大么?可以画的很小,也可以很大。如果点很小,那画面就清晰,我们称它为“分辨率高”,反之,就是“分辨率低”。所以,“点”的大小是会“变”的,也称为“相对长度”。

  pt全称为point,但中文不叫“点”,查金山词霸可以看到,确切的说法是一个专用的印刷单位“磅”,大小为1/72英寸。所以它是一个自然界标准的长度单位,也称为“绝对长度”。

  因此就有这样的说法,在网页设计中,pixel是相对大小,而point是绝对大小。

  但这种说法其实还是有问题,先来看看下面的例子:


       从上面的字体中我们能看出72px要比72pt小一些,但96px正好和72pt一样大小 。

  让我们来调整电脑的设置:在桌面上右键 > 属性 > settings > Advanced > General > DPI setting > 96 DPI。

  试着改变设置,设为72DPI,重启,再打开浏览器看:72px已经等同于72pt了。为什么?

  还是再做个实验:分别用800×600和1024×768看刚才的例子,明显高分辨率下,文字就变小。而且,关键的是,无论用px还是pt,都会变小。pt并没有如有些人所说,是“绝对”的,“固定”的。

  但如果用打印机把这页面打印出来,就可以看到:无论屏幕用什么分辨率,打印出来大小都是一样的(这是当然的)。

  首先要分清“屏幕效果”和“打印效果”这两个概念:

  在浏览网页过程中,所有的“大”“小”概念,都是基于“屏幕”这个“界面”上。“屏幕”上的各种信息,包括文字、图片、表格等等,都会随屏幕的分辨率变化而变化,一个100px宽度大小的图片,在800×600分辨率下,要占屏幕宽度的1/8,但在1024×768下,则只占约1/10。所以如果在定义字体大小时,使用px作为单位,那一旦用户改变显示器分辨率从800到1024,用户实际看到的文字就要变“小”(自然长度单位),甚至会看不清,影响浏览。

  那是不是用pt做单位就没这样的问题呢?错!问题同样出现。刚才的例子已经很清楚的说明,在不同分辨率下,无论是px还是pt,都会改变大小 。以现在的电脑屏幕情况,还没有一种单位可以保证,在不同分辨率下,一个文字大小可以“固定不变”。因为这很难以实现也不是很有必要:全球电脑用户以亿来数,屏幕从14寸到40寸甚至更高都有,屏幕大小不同,分辨率也不同,要保证一个字体在所有用户面前大小一样,实在是MISSION IMPOSSIBLE。另外,电脑有其自身的调节性,用户可以自己来调节:1)在浏览器中调节字体大小;2)在刚才提到的显示属性里调节。

  那在页面设计中到底是用px还是pt呢?

  我认为,这个并没有什么原则性差异,就看自己处于什么角度思考了。
  Mac机怎么情况不清楚,在Windows里,默认的显示设置中,把文字定义为96DPI(PPI,微软都将DPI和PPI混为一体,我们也就无须较真了)。这样的定义,说明了:1px=1/96英寸。联系pt的概念,1pt=1/72英寸,可以得出,在这样的设置中,1px=0.75pt,常见的宋体9pt=12px。在显示器分辨率不变的基础上(比如现在常用的1024×768),1px大小也就固定不变,改变显示设置,调整为144DPI,可以得出,1px=0.5pt,常见的宋体9pt=18px。原先用12px来组成的一个文字,现在需要18px来组成,px多了,文字就“大”了,更易阅读了。

  所以,px和pt的使用区别,只有当用户改变默认的96DPI下才会产生:使用px定义文字,无论用户怎么设置,都不会改变大小;使用pt定义文字,当用户设置超过96DPI的值,数值越大,字体就越大。

  (附公式:px = pt * DPI / 72)

  对了,刚才还提到改变浏览器中文字大小的选项,也可以改变网页的文字大小。但在这种情况下,使用px和pt都是无效的,因为这2个都是有实际“pixel”数值的单位,比如9pt是12px,大小固定。这里要引用新的单位:em,其实就是%。因为当网页中的字体没有给出实际的px或pt定义的话,会有一个默认值:12pt即16px,对应浏览器中“字体大小”中的“中等”,以这个为标准,变大或缩小。(只适用于IE,在FF中,即便定义px或pt也都可以变大变小)

  所以,从这个概念上看,em才是真正的“相对单位”(百分比嘛,当然是相对),而px和pt都是绝对单位(都有固定值)。

  在网页设计中,面向用户的屏幕的基本单位是px,因此使用px作为单位是最简单也最容易理解的,而pt也不过是通过了Windows的设置乘上了一个比率转变成px再显示,算是绕了个圈子。参考大部分大型网站,包括Adobe和Microsoft,都是使用px作为单位,而且在HTML中,默认的单位就是px,是不是也暗示着px是网页设计的“内定单位”?

  但在Word或Photoshop中,使用pt就相当方便。因为使用Word和Photoshop的主要目的都不是为了屏幕浏览,而是输出打印。当打印到实体时,pt作为一个自然长度单位就方便实用了:比如Word中普通的文档都用“宋体 9pt”,标题用“黑体 16pt”等等,无论电脑怎么设置,打印出来永远就是这么大。又或者在Photoshop中,设置一个图片中的某个艺术效果的字体是72pt大小,然后分别将这张图片设为300DPI和72DPI,再打印出来,就可以看出,这2个字体大小完全一样,只是“清晰度”不同,300DPI更清晰。这是毫无疑问的结果。

  最后整理一下所有出现过的单位:
  px:pixel,像素,屏幕上显示的最小单位,用于网页设计,直观方便;
  pt:point,是一个标准的长度单位,1pt=1/72英寸,用于印刷业,非常简单易用;
  em:即%,在CSS中,1em=100%,是一个比率,结合CSS继承关系使用,具有灵活性。
  PPI(DPI):pixel(dot)per inch,每英寸的像素(点)数,是一个率,表示了“清晰度”,“精度”
分享到:
评论

相关推荐

    Android中dip、dp、sp、pt和px的区别

    本文将详细解析Android中常见的五种尺寸单位:dip(设备独立像素)、dp(密度无关像素)、sp(可缩放像素)、pt(点)和px(像素),并探讨它们之间的关系和应用场景。 首先,我们来了解一下px(像素)。像素是屏幕...

    中文字号VS英文字号(磅)VS像素值的对应关系

    在探讨中文字号、英文字号(磅)与像素值之间的对应关系时,我们需要了解不同单位的基本定义及其换算方式。本文将详细解释这些概念,并通过具体的实例来展示它们之间的转换逻辑。 ### 基本概念介绍 1. **中文字号*...

    android布局单位sp,dp,pt,px的区别

    例如,如果一台设备的屏幕密度为160dpi(dots per inch),那么1pt将转换为大约2dp或2sp,这是因为1英寸等于72pt,而160dpi意味着每英寸有160个像素点。 ### px (Pixels) px是最基础的像素单位,它直接表示屏幕上...

    你知道CSS中长度单位pt、px、dpi的意思吗?

    要在屏幕上显示,必须先把以pt为单位的长度转换为以像素为单位的长度,这个转换的媒介,就是dpi(事实上,这里的所谓的dpi,是操作系统和浏览器中使用的术语,即为PPI,pixelsperinch,扫描仪、打印机、数码相机中的...

    Android中的长度单位详解(dp、sp、px、in、pt、mm).pdf

    本文将深入探讨Android中常见的长度单位:dp、sp、px、in、pt以及mm,帮助开发者们更好地理解和应用这些单位。 首先,我们要知道Android系统支持多种尺寸单位,主要是为了适应不同屏幕大小和分辨率的设备。以下是对...

    Android的计量单位px,in,mm,pt,dp,dip,sp

    下面将详细解释Android系统中常见的几种像素单位,包括px、in、mm、pt、dp、dip以及sp,并给出它们之间的关系和使用场景。 1. px(像素):像素是屏幕上的最小显示单元,直接对应屏幕上的一个点。当你使用px作为...

    引用 Android上dip、dp、px、sp等单位说明

    在不同的设备上,相同的px值可能会导致不同的显示效果,因为不同设备的像素密度(DPI)不同。 **计算公式**:`物理像素(px) = dp * (屏幕密度 / 160)`。 #### 3. sp **sp**(scaled pixels)是一种与屏幕密度相关的...

    CSS长度单位 px和pt的区别

    例如,72px在96DPI的设置下等于72pt,而在72DPI的设置下,它们则相等。 在不同的屏幕分辨率下,不论是px还是pt,定义的元素尺寸都会发生变化。例如,一个100px宽的元素在800×600分辨率下会占据屏幕宽度的1/8,而在...

    css中的px、em、rem、pt 特点和区别及换算详解

    1、px (pixel,像素):是一个虚拟长度单位,是计算机系统的数字化图像长度单位,如果px要换算成物理长度,需要指定精度DPI(Dots Per Inch,每英寸像素数),在扫描打印时一般都有DPI可选。Windows系统默认是96dpi,...

    Android中dip、dp、sp、pt和px的区别详解

    本文主要解析Android中的五个关键单位:dip、dp、sp、pt和px,以及它们之间的区别。 1. **dip(设备独立像素)**: 设备独立像素是一种与设备硬件无关的单位,它的大小会根据设备的物理密度进行调整,确保在不同...

    Adnroid 中dip、dp、px、sp等单位说明

    例如,1dip在160dpi的设备上等于1px。当设计适配多种分辨率的界面时,推荐使用dip,因为它能够自动调整,确保在高密度或低密度屏幕上元素大小相对恒定。在WVGA、HVGA和QVGA这样的不同分辨率下,使用dip可以避免元素...

    Android dip,px,pt,sp 的区别详解

    以下是关于Android中dip, px, pt, sp的区别详解: 1. dip(设备独立像素,Device Independent Pixels):dip是一种抽象单位,旨在确保在不同密度的屏幕上元素看起来具有相同的大小。它不直接对应于物理像素,而是...

    详解CSS中的几种长度px、em、pt

    在打印文档或需要与印刷相关联的设计时,pt单位较为合适。 除了以上三种,还有其他几种单位: - `pc`(派卡)是另一种绝对长度单位,1pc等于12pt,常用于排版和打印。 - `in`(英寸)是国际通用长度单位,1in等于...

    APP界面设计规范二Android版样本.doc

    Android 设计常识是指在 Android 端设计规范中的一些基本概念和单位,包括 PPI、DPI、屏幕尺寸、分辨率、px、pt、sp 和 dp 等。 2. Android 设计常识详解 * PPI(Pixels Per Inch):数字影像的解析度,也就是每...

    Android-AndroidUnits用于在不同Android显示单位之间转换的工具类

    由于pt和dp之间的关系固定,转换方法相对简单。 6. **px转pt**:将像素值转换为点值。 7. **in转px**:将英寸值转换为像素值,考虑到屏幕的dpi。 8. **px转in**:将像素值转换为英寸值。 在实际开发中,使用`...

    iPhone及iPad切图规范

    - **导航栏**:高度为44pt,图标推荐尺寸为20x20px(@1x)、40x40px(@2x)和60x60px(@3x)。 - **工具栏**:高度为44pt,图标推荐尺寸同导航栏。 4. **文本和字体**: - 苹果官方推荐使用系统字体SF Pro,不同...

Global site tag (gtag.js) - Google Analytics