最近在写调试器的字体. 遇到了个很奇怪的问题.
明明字体应该很漂亮, 但是画上去的总是很难看. 如下图:
字体错乱.
重点看左下角数据区的HEX区域. 显示的数据全部挤在一起.
实际上这是因为字节间距的问题. 为了让字体显示适应各种字体,特意在程序中动态获取字体的大小.
但在实际程序中,获取到的大小和想像中的完全不一样.
比如下例代码:
[C++] 纯文本查看 复制代码
SIZE tagSize_[30] = {0};
ODplugin_UI_GetDCSize(hDbBuff, tagSize_[i++], _TEXT(" "));
ODplugin_UI_GetDCSize(hDbBuff, tagSize_[i++], _TEXT("1"));
ODplugin_UI_GetDCSize(hDbBuff, tagSize_[i++], _TEXT("a"));
ODplugin_UI_GetDCSize(hDbBuff, tagSize_[i++], _TEXT("A"));
ODplugin_UI_GetDCSize(hDbBuff, tagSize_[i++], _TEXT("w"));
ODplugin_UI_GetDCSize(hDbBuff, tagSize_[i++], _TEXT("W"));
ODplugin_UI_GetDCSize(hDbBuff, tagSize_[i++], _TEXT("Q"));
正常情况我的理解是同一个字体,同一个环境下, 1个字节长度理应是一样的.如下图:
1字节大小一样
但实际却不一定的. 不同的字体, 同样是1字节,获取的长度未必一样. 如下图:
1字节大小不一样
在我随机找的几个字母测试, 其中 "W" 是最宽的. 我之前都是用的 " " 空格, 在有的字体中, 空格是最窄的.
以后在写类似的代码, 我就用 "W" 做为1字节来获取, 不会再用空格了.
|