这可能符合您的要求,也可能不符合您的要求,但我编写的解释器 ( xpost ) 使用 Cairo 的所有图形和字体功能,包括show
. 因此,无论开罗必须提供什么支持,xpost 都不会妨碍您。但在您过于兴奋之前,这是一个单人项目,还没有完全提供完整的 Level-1 Postscript。
编辑:最新版本不支持这个。这是最后一个版本(列表)。
这是我的表演操作员本身的 C 代码。
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);
}
}
来自开罗文档:
cairo_show_text ()
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() 以了解 cairo 中的“真实”文本显示 API。
http://www.cairographics.org/manual/cairo-text.html#cairo-show-text
所以它是 Postscript 中的 UTF-8,我可以想象!:)