word中px,pt,dpi,in,em,twip,emu之间的关系

inch英寸

英寸是使用于联合王国(UK,即英国(英联邦)及其前殖民地)的长度单位,英文简写in,1in=2.54cm,12英寸为1英尺,36英寸为1。英寸的符号为"

pt

point,磅,是一个物理长度单位,指的是72分之一英寸

1inch = 72pt,1pt = 1/72inch

px

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

dpi

DPI(Dots Per Inch,每英寸像素数),在扫描打印时一般都有DPI可选。windows系统默认是96dpi,Apple系统默认是72dpi。

em

相对长度单位,相当于当前对象内文本的字体尺寸,最初是指字母M的宽度,故名em。现指的是字符宽度的倍数,用法类似百分比,如:0.8em,1.2em,2em等。通常1em=16px

字号:

是中文字库中特有的一种单位,以中文代号表示特定的磅值pt,便于记忆、表述。

TWIP

word中xml中的长度单位.

1pt=20twip

1px=15twip

1inch=1440twip

不同字体对应大小:

"初号" = 42磅 = 840缇

"小初" = 36磅 = 720

"一号" = 26磅 = 520

"小一" = 24磅 = 480

"二号" = 22磅 = 440

"小二" = 18磅 = 360

"三号" = 16磅 = 320

"小三" = 15磅 = 300

"四号" = 14磅 = 280

"小四" = 12磅 = 240

"五号" = 10.5磅 = 210

"小五" = 9磅 = 180

"六号" = 7.5磅 = 150

"小六" = 6.5磅 = 130

"七号" = 5.5磅 =110

"八号" = 5磅 = 100

emu

100mm=360emu (100mm是一毫米放大一百倍,该单位是uno层的单位)

1磅=12700emu(emu一般是形状锚点里面的单位,xml文件中如果有很大的数字,第一眼可以猜测就是emu)

换算关系

在windows下96dpi来计算,1pt=96/72px=4/3px

字号

pt

px

em

初号

42pt

56px

3.5em

小初

36pt

48px

3em

34pt

45px

2.75em

32pt

42px

2.55em

30pt

40px

2.45em

29pt

38px

2.35em

28pt

37px

2.3em

27pt

36px

2.25em

一号

26pt

35px

2.2em

25pt

34px

2.125em

小一

24pt

32px

2em

二号

22pt

29px

1.8em

20pt

26px

1.6em

小二

18pt

24px

1.5em

17pt

23px

1.45em

三号

16pt

22px

1.4em

小三

15pt

21px

1.3em

14.5pt

20px

1.25em

四号

14pt

19px

1.2em

13.5pt

18px

1.125em

13pt

17px

1.05em

小四

12pt

16px

1em

11pt

15px

0.95em

五号

10.5pt

14px

0.875em

10pt

13px

0.8em

小五

9pt

12px

0.75em

8pt

11px

0.7em

六号

7.5pt

10px

0.625em

7pt

9px

0.55em

小六

6.5pt

8px

0.5em

七号

5.5pt

7px

0.4375em

八号

5pt

6px

0.375em

获取DPI

#include <iostream>
#include <windows.h>
#include <math.h>
using namespace std;

// 1毫米=0.039370078740157英寸 
#define INCH 0.03937

float GetDPI()
{
    HDC hdcScreen;
    hdcScreen = CreateDC(L"DISPLAY", NULL, NULL, NULL);

    int iX = GetDeviceCaps(hdcScreen, HORZRES);    // pixel
    int iY = GetDeviceCaps(hdcScreen, VERTRES);    // pixel
    int iPhsX = GetDeviceCaps(hdcScreen, HORZSIZE);    // mm
    int iPhsY = GetDeviceCaps(hdcScreen, VERTSIZE);    // mm

    if (NULL != hdcScreen)
    {
        DeleteDC(hdcScreen);
    }
    float iTemp = iPhsX * iPhsX + iPhsY * iPhsY;
    float fInch = sqrt(iTemp) * INCH;
    iTemp = iX * iX + iY * iY;
    float fPixel = sqrt(iTemp);

    float iDPI = fPixel / fInch;    // dpi pixel/inch
    cout << "DPI:" << iDPI << endl;
    return iDPI;
}

int main()
{
    GetDPI();
    system("pause");
    return 0;
}

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值