c++ - Motif 如何计算或检索字体像素大小?
问题描述
我正在尝试在 Motif 中编写代码来更改对话框警告框以调整其大小,如果框不够宽。宽度和高度始终由调用类设置,并且它并不总是足够宽以显示消息并且行尾被截断。他们不想到处固定以使用自动调整大小(即宽度为 0 或根本不设置),而是想弄清楚对话框中字符的像素宽度大小是多少。然后,他们可以乘以最长的线 X 像素宽度来获得以像素为单位的线长度。然后我们将查看是否需要重置对话框声明的宽度以停止截断。只有太短的对话框才会被更改(太宽的对话框不会被更改)。
然而; 我找不到任何关于如何在任何地方获取以像素为单位的字符宽度的示例。我记得几年前我在一个项目中,他们创建了某种类型的小部件,将一个字符插入其中,然后执行 XtGetValues 来获取宽度和高度,所以我认为可以完成。那么有人知道该怎么做吗?
解决方案
那是很久以前的事了,但如果没有记错的话,Xt 对字体没有任何特定的支持,它依赖于普通的 libx11。您将需要调用XQueryFont
或XLoadQueryFont
获取XFontStruct
描述您的字体的信息,然后通过per_char
数组查找单个字形的范围。
推荐阅读
- haskell - Haskell堆栈安装包,但模块无法导入
- python - Python sounddevice 示例不发出任何声音(树莓派)
- python - 执行 np.where 字段为日期类型时的类型提升无效
- react-native - Redux:在 React Native 中调用 Reducer 后获取空值?
- java - 为什么 JSON 数据无法到达 ViewPager?
- c++ - c++ 中的预处理器指令:以下代码的输出是什么?
- sas - 从静态 url 链接将 xlsx 文件导入 SAS
- reactjs - useEffect 获取 Firebase 数据不起作用
- reactjs - 使用反应钩子从前端过滤graphql数据
- fortran - 如何在 Fortran 中释放所有分配的内存?