Использование табуляции в Панго / Каире
Кто-нибудь может мне помочь с использованием табуляции в Панго / Каире? Я использую Pango и Cairo, чтобы сгенерировать простое изображение, а затем сохранить его в виде файла.png.
Правильно ли я считаю, что эти табуляции могут использоваться для разметки текста? Например, если у меня была следующая строка C/C++;
"<span background=\"black\" foreground=\"red\">\n"
"This is a test of Pango tab stops.\n"
"\n"
"----*----|----*----|----*----|----*----|----*----|\n"
"\tA\tB\tC\tD\n"
"</span>";
должна ли строка, содержащая;
\tA\tB\tC\tD
быть разнесены из-за использования вкладок, т.е. escape-последовательностей '\t'?
Я устанавливаю свои вкладки Pango, используя следующий код;
PangoTabArray* tabArray;
tabArray
=
pango_tab_array_new
(
4, // Setup array for 4 tab stops.
FALSE // Whether positions are in pixel units.
);
// Configure the 4 tab stops in the tab array which was just created.
pango_tab_array_set_tab
(
tabArray,
0, // Configure Tab at index 0.
PANGO_TAB_LEFT, // Configure Tab to be left aligned.
9 // Configure Tab location.
);
pango_tab_array_set_tab
(
tabArray,
1, // Configure Tab at index 1.
PANGO_TAB_LEFT, // Configure Tab to be left aligned.
19 // Configure Tab location.
);
pango_tab_array_set_tab
(
tabArray,
2, // Configure Tab at index 2.
PANGO_TAB_LEFT, // Configure Tab to be left aligned.
29 // Configure Tab location.
);
pango_tab_array_set_tab
(
tabArray,
3, // Configure Tab at index 3.
PANGO_TAB_LEFT, // Configure Tab to be left aligned.
39 // Configure Tab location.
);
Мой код удается скомпилировать и запустить. Однако, когда я запускаю его, я получаю следующее изображение;
Это не то, что я ожидал. Я ожидал, что буквы будут выстроены под звездочками, то есть сразу после четырех табуляций, которые были установлены для мест 9, 19, 29 и 39 соответственно.
Я считаю, что мои табуляторы установлены правильно. Я использую следующий код, чтобы проверить их.
int numTabStops = 0;
PangoTabAlign alignment;
gint location;
numTabStops = pango_tab_array_get_size(tabArray);
cout << "Number of Tab stops in the Tab array = " << numTabStops << endl;
pango_tab_array_get_tab
(
tabArray,
0,
& alignment,
& location
);
cout << "Tab stop at index 0 has location = " << location << endl;
Когда я запускаю свою программу из командной строки, она выводит следующее;
Number of Tab stops in the Tab array = 4
Tab stop at index 0 has location = 9
Код, который я использую, чтобы заставить Pango обрабатывать текст:
pango_layout_set_markup
(
layout,
testString.c_str(), // This is the C/C++ string from above.
-1
);
Полностью ли я неправильно понимаю использование этих табуляций или мне просто нужно вызвать другую функцию Pango или Cairo для их использования?
Заранее спасибо.