Могу ли я автоматически использовать два стиля шрифта в макете Pango Cairo?

Я хочу два абзаца с разными стилями текста, один над другим. Это самый быстрый способ описать это:

<p style="font-size: 20pt">Para 1</p><p style="font-size: 10pt">Para 2</p>

Я устанавливаю перенос строки на обоих, поэтому я не знаю, какой высоты будет первая, до времени выполнения. Если у меня много строк в абзаце 1, я захочу переместить абзац 2 вниз. Если у меня есть одна строка в первом абзаце, я хочу переместить абзац 2 вверх. Как будет вести себя HTML.

Но, похоже, я могу установить только один стиль шрифта для каждого макета, используя pango_layout_set_font_description(PangoLayout *, PangoFontDescription *).

  1. Означает ли это, что мне нужно использовать 2 макета?
  2. Если да, то как мне сделать так, чтобы второй макет отображался сразу под вторым? Нужно ли мне использовать pango_layout_get_height(PangoLayout *) и соответственно перемещать второй макет?

person Joe    schedule 20.09.2012    source источник


Ответы (1)


Это должно быть возможно. Если вы использовали pango_parse_markup(), вы могли бы использовать что-то вроде '‹span font="Sans 12"›foo‹/span›‹span font="Sans 16"›bar‹/span›. Если вы не хотите использовать pango_parse_markup(), посмотрите PangoAttrType и PangoAttrList. Однако у меня нет для них примера. Похоже, вам нужны pango_attr_list_new(), pango_attr_list_insert(), pango_attr_size_new() и pango_layout_set_attributes(). (Установите start_index и end_index в PangoAttribute!)

Конечно, вы также можете использовать несколько макетов, но может быть проще заставить pango разобраться с необходимой вам магией.

person Uli Schlachter    schedule 25.09.2012
comment
Я боюсь, что проект, для которого мне это нужно, был отменен, поэтому я не могу это проверить. Я дам вам голос, но я не могу отметить это как правильное, извините. - person Joe; 26.09.2012