无法使 Pango-sharp 重力属性起作用

Can't get Pango-sharp gravity attibute to work

我无法使重力属性与 pango 布局一起使用。我已经尝试使用标记,但没有从标记解析器收到任何错误或警告:

l.SetMarkup ("<span gravity=\"east\" color=\"black\">" + text + "</span>");

并在布局 AttrList 中插入和更改属性:

l.Attributes.Insert (new Pango.AttrGravity (Pango.Gravity.East));

但都没有垂直绘制文本。 AttrList.Change 偶尔也会使程序崩溃。我不太确定我做错了什么,或者重力是否适用于 Gtk#?

这是所有代码的片段:

Pango.Layout l = new Pango.Layout (PangoContext);
l.FontDescription = Pango.FontDescription.FromString ("Courier New 11");
l.SetMarkup ("<span gravity=\"east\" color=\"black\">" + text + "</span>");
GdkWindow.DrawLayout (Style.TextGC (StateType.Normal), x, y, l);
l.Dispose ();

谢谢

编辑:

我在 FontDescription 下找到了一个 Gravity 属性,但它只会导致类似“找不到该字体....”的错误

我的假设是重力绑定到您要显示的文本。因此,如果是中文,gravity east 应该可以工作(或者在这种情况下可能默认启用)。

如果要旋转布局,可以用矩阵引起旋转:

Pango.Layout l = new Pango.Layout (PangoContext);

// Matrix.Identity is a 'no transformation' matrix.
var matrix = Pango.Matrix.Identity;

// A rotation of 90 degrees.
matrix.Rotate(90); 

// Assign the matrix to the Pango context.
l.Context.Matrix = matrix;

l.SetMarkup(@"<span color=""black"">Hello, world!</span>");

GdkWindow.DrawLayout(Style.TextGC(StateType.Normal), 50, 50, l);