使用pango_layout时,空格分隔为新行的文本

问题描述

我是嵌入式Linux的新手。我正在尝试显示不同对齐方式的字符串文本。但是当我使用Pango时。它对于单个单词正确对齐,其中没有空格字符。但是我的某些字符串包含空格以分隔单词。但是在使用pango_layout时,它会将int新行对齐。 我正在使用GCC作为编译器在Ubuntu中运行应用程序,系统包含目录显示pongo-1.0。

下面是我的代码

 pLayOut = pango_cairo_create_layout(pCntxt);
   pango_layout_set_text(pLayOut,"Sample text #1",-1);
   desc = pango_font_description_from_string(font);
   pango_layout_set_font_description(pLayOut,desc);
   pango_font_description_free(desc);

   cairo_set_source_rgb(pCntxt,rgbRed,rgbGreen,rgbBlue);

   //Set width of the layout to align correctly
   cairo_text_extents(pCntxt,&extents);
   pango_layout_set_width(pLayOut,extents.width);

   cairo_move_to(pCntxt,pPar->tpUlX,pPar->tpUlY);
   pango_layout_set_alignment(pLayOut,pPar->tpAlign);

   pango_cairo_update_layout(pCntxt,pLayOut);
   pango_cairo_show_layout(pCntxt,pLayOut);

左对齐的输出

Sample 
text 
#1

右对齐的输出

 Sample 
   text 
     #1 

如何使用Pango布局将其绘制成一行?我在Pango布局中尝试了其他几个选项,但没有运气

我想要这样的文字

              Sample text #1//Using left align
Sample text #1  //Using right align
            X,Y location here

解决方法

在编辑中,您将此添加到了问题中

我想要这样的文字

              Sample text #1//Using left align
Sample text #1  //Using right align
            X,Y location here

这不是开罗对齐的工作方式。想象一下您写有“ Hello”的纸。左对齐表示将其写在纸张左边缘附近。右对齐是指右边缘。

作为“图像”,其中|指的是纸张的边缘:

| Hello       |
|       Hello |

更多技术性:左边缘由X / Y位置指定。右边缘由宽度指定。因此,左边缘位于x,右边缘位于x+width

要执行所需的右对齐样式,您必须自己计算正确的位置。您可以使用pango_layout_get_pixel_extents()来做到这一点。您需要逻辑范围(第二个参数)。然后,您想在x-width的x位置绘制文本。那应该产生您想要的对齐方式。

,

只需删除对C:\> a.exe C:\> echo %errorlevel% 42 的呼叫即可。

默认值为pango_layout_set_width,表示无限制,由于您需要以Pango单位设置该值,因此设置错误。有关Pango单元的更多信息,请参见https://developer.gnome.org/pango/stable/pango-Glyph-Storage.html#pango-units-from-doublehttps://developer.gnome.org/pango/stable/pango-Glyph-Storage.html#PANGO-SCALE:CAPS

之所以会出现这种现象,是因为您给Pango的空间少于一像素,并且它会尽力使文本合适。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...