Это может соответствовать или не соответствовать вашим требованиям, но интерпретатор, который я написал (xpost), использует Cairo. для всех своих графических и шрифтовых функций, включая show
. Так что какую бы поддержку Cairo ни предлагал, xpost не мешает. Но прежде чем вы слишком воодушевитесь, это проект одного человека, и он еще не предлагает полный постскриптум 1-го уровня.
Изменить: новейшая версия не поддерживает это. Здесь представлена последняя версия (список).
Вот мой код C для самого оператора show.
OPFN_ void show(state *st, object s) {
char str[s.u.c.n+1];
memcpy(str, STR(s), s.u.c.n); str[s.u.c.n] = '\0';
//printf("showing (%s)\n", str);
if (st->cr) {
cairo_show_text(st->cr, str);
cairo_surface_flush(st->surface);
XFlush(st->dis);
}
}
И из документов Каира:
каир_шоу_текст ()
void cairo_show_text (cairo_t *cr,
const char *utf8);
Оператор рисования, который создает фигуру из строки символов UTF-8, отображаемой в соответствии с текущими параметрами font_face, font_size (font_matrix) и font_options.
Эта функция сначала вычисляет набор глифов для текстовой строки. Первый глиф размещается так, чтобы его начало было в текущей точке. Происхождение каждого последующего глифа смещено относительно предыдущего глифа на значения опережения предыдущего глифа.
После этого вызова текущая точка перемещается в исходную точку, где следующий глиф будет помещен в той же последовательности. То есть текущая точка будет в исходной точке конечного глифа, смещенного на его опережающие значения. Это позволяет легко отображать одну логическую строку с несколькими вызовами cairo_show_text().
Примечание. Вызов функции cairo_show_text() является частью того, что разработчики cairo называют «игрушечным» текстовым API. Это удобно для коротких демонстраций и простых программ, но не ожидается, что оно подойдет для серьезных текстовых приложений. См. cairo_show_glyphs() для «реального» API отображения текста в cairo.
http://www.cairographics.org/manual/cairo-text.html#cairo-show-text
Так что это UTF-8 в Postscript, насколько я понимаю! :)
person
luser droog
schedule
21.09.2012