VC字体接口SDK有点怪异

简介: VC字体接口SDK有点怪异

首先看看字的结构:


字体结构的Baseline/Leading/Ascent/Descent的图示_柳鲲鹏的博客-CSDN博客_ascent descent 字体


 由图中看到, 正常的接口应该是提供相应的访问功能。因为工作原因,了解了一下VC字体的接口,觉得甚是奇怪。


怪异一:获取字体结构信息的办法

font=CreateMyFont(L"宋体", fontSize);
  SelectObject(hDC,font); //将创建的字体句柄选入设备环境
  TEXTMETRIC tm;
  GetTextMetrics(hDC, &tm);

 有了字体,应该直接从字体中获取信息,为什么要经过HDC?


怪异二:新建字体不能用字号,只能用高度

CreateFont 
( height,    //字体的高度
  0,       //由系统根据高宽比选取字体最佳宽度值
  0,       //文本的倾斜度为,表示水平
  0,   //字体的倾斜度为
  FW_HEAVY,   
  0,      //非斜体字
  0,      //无下划线
  0,      //无删除线
  GB2312_CHARSET,     //表示所用的字符集为ANSI_CHARSET
  OUT_DEFAULT_PRECIS, //输出精度为默认精度
  CLIP_DEFAULT_PRECIS,    //剪裁精度为默认精度
  DEFAULT_QUALITY,     //输出质量为默认值
  DEFAULT_PITCH|FF_DONTCARE, //字间距和字体系列使用默认值
  fontName       //字体名称
  );

 吾想指定的是字号,怎么要指定高度?这不科学啊。吾只知道字号,不知道高度,怎么办?


 有人说字号可以换算为高度,这个想法应该是错的。理由参考下文。


怪异3:实际高度要加上leading

 指定height=1000,结果是:ascent=859,descent=141,leading=141。


 这是怎么回事?吾试了一下JDK,指定字号1000,结果是:ascent=860, descent=141, leading=141。这样一算正好。这可能是接口的定义不同,倒是无所谓了。


 注意ascent,为什么会差一个像素?谁错了?简单分析了一下,可能是JDK算错了。理由就是ascent+leading != 1000。

目录
相关文章
|
7月前
|
物联网 开发工具 Android开发
UniApp调用SDK原生接口
UniApp调用SDK原生接口
544 0
UniApp调用SDK原生接口
|
9月前
|
机器学习/深度学习 人工智能 PHP
百度AI开发平台图像增强与特效API-SDK接口PHP实战记录
百度AI开发平台图像增强与特效API-SDK接口PHP实战记录
96 0
百度AI开发平台图像增强与特效API-SDK接口PHP实战记录
|
9月前
|
网络协议 Java 应用服务中间件
SDK接口远程调试【内网穿透】
SDK接口远程调试【内网穿透】
182 1
|
1月前
|
开发框架 Java .NET
闪速码短信Python接口SDK
闪速码短信Python接口SDK
64 4
|
6月前
|
安全 API 开发工具
获取仓库列表接口可以通过SDK或者REST API两种方式调用
获取仓库列表接口可以通过SDK或者REST API两种方式调用
50 2
|
2月前
|
Web App开发 前端开发 JavaScript
如何快速与呼叫中心系统CTI/API/SDK接口集成
由于呼叫中心系统涉及通信、CTI、终端设备、中继线路等技术与概念,从事信息管理系统、ERP、CRM、工单系统等的研发人员一般不是非常熟悉这部分技术,当需要提供具备呼叫中心能力的解决方案时,往往要用较多的时间来研究这些相对复杂的技术,对接过程比较长,开发调试有一定的阻力,基于此,我们提出一种更加简便高效的集成方法,可以零代码集成呼叫中心平台,实现项目快速上线。
如何快速与呼叫中心系统CTI/API/SDK接口集成
|
4月前
|
JSON JavaScript 前端开发
全面的.NET微信网页开发之JS-SDK使用步骤、配置信息和接口请求签名生成详解
全面的.NET微信网页开发之JS-SDK使用步骤、配置信息和接口请求签名生成详解
|
9月前
|
API PHP 开发工具
漏刻有时API接口实战开发系列(11):腾讯云短信3.0sms开发SDK环境部署及配置的实战总结
漏刻有时API接口实战开发系列(11):腾讯云短信3.0sms开发SDK环境部署及配置的实战总结
187 0
|
10月前
|
网络协议 Java 应用服务中间件
支付宝SDK接口调试- cpolar内网穿透工具实现公网地址调试
支付宝SDK接口调试- cpolar内网穿透工具实现公网地址调试
108 0
|
10月前
|
API 开发工具 开发者
如何对接淘宝开放平台接口 -获取SDK,APPkey
1.首先需要有一个淘宝账户,一般实名认证支付宝之后就可以入住开发者平台。 2.首先确定自己要对接的接口在哪一个应用下面,因为需要下载对应应用的sdk用来调用。确定好是哪一个应用之后创建相对应的应用。 3.创建好应用之后点击前面的sdk小图标会弹出sdk的下载页面,下载sdk保存到本地。在应用管理界面获取到appkey和appSrecet