gpt4 book ai didi

c++ - 如何使用 x11 中的 xft 字体在窗口中心对齐文本

转载 作者:行者123 更新时间:2023-11-30 16:44:09 26 4
gpt4 key购买 nike

我需要在 X11 应用程序的 X11 窗口中对齐文本。对齐方式必须取决于窗口大小、字体大小和字符串长度。预先感谢:)

我想在 x11 窗口中使用单元格填充的概念。我使用 xft 字体作为文本。我使用上升、下降来垂直对齐它。现在我想要一些帮助来水平对齐(左、中、右和对齐),就像在 MSWord 中一样。

Example for horizontal+vertical spacing

我想,现在每个人都可以理解我的需求了。

I need the text with cell padding

XftTextExtents8(display, fontXft, (XftChar8 *)textStr, strlen(textStr),&extents); 
fontWidth = extents.width -extents.x;
singleFontHeight = fontXft->ascent - fontXft->descent;
if(vAlign == TOP_ALIGN)
textY = singleFontHeight;
else if(vAlign == CENTER_ALIGN)
textY = ((heightWin - fontHeight)/2 + singleFontHeight);
else
textY = heightWin;

if(hAlign == CENTER_ALIGN)
textX = (widthWin - fontWidth)/3;
else if(hAlign == RIGHT_ALIGN)
textX = widthWin - fontWidth;
else
textX = 0;

最佳答案

我可以在您的代码中看到至少一个错误,即您将字形的高度视为(上升 - 下降),而实际上两者都是正数,因此总高度应该是(上升 + 下降)。

此外,我不明白为什么要使用(窗口宽度 - 字符串宽度)/3 进行中心对齐,除非您想要在右侧进行一些填充。

关于c++ - 如何使用 x11 中的 xft 字体在窗口中心对齐文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44699416/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com