11

PostScript でユニコード文字列 (ほとんどの場合 UTF-8 ですが、任意のエンコーディングである可能性があります) を使用する方法はありますか?

これまでのところ、この関数を使用してフォントを Latin1 エンコーディングに変換してきました。

/latinize {
  findfont
  dup length dict begin
  { 1 index /FID ne {def}{pop pop} ifelse }forall
  /Encoding ISOLatin1Encoding def
  currentdict
  end
  definefont pop
}bind def

/HelveLat /Helvetica latinize
/HelveLatbold /Helvetica-Bold latinize

しかし、私は本当にそれが好きではありません。

4

2 に答える 2

6

実際には、または単純な「すぐに使える」方法ではありません。詳細については、この FAQ エントリを参照してください

于 2009-05-28T10:37:32.263 に答える
2

これはあなたの請求書に合うかもしれないし、合わないかもしれませんが、私が書いたインタープリター ( xpost ) は、show. したがって、カイロが提供するサポートが何であれ、xpost が邪魔になることはありません。しかし、興奮しすぎる前に、これは 1 人のプロジェクトであり、完全な Level-1 Postscript をまだ提供していません。

編集:最新バージョンはこれをサポートしていません。これが最後に実行されたバージョンです (リスト)。


これは、show オペレーター自体の 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);

現在の font_face、font_size (font_matrix)、および font_options に従ってレンダリングされた、UTF-8 文字のストリングから形状を生成する描画オペレーター。

この関数は、最初にテキスト文字列のグリフのセットを計算します。最初のグリフは、その原点が現在のポイントになるように配置されます。後続の各グリフの原点は、前のグリフのアドバンス値によって、前のグリフの原点からオフセットされます。

この呼び出しの後、現在のポイントは、この同じ進行で次のグリフが配置される場所の原点に移動されます。つまり、現在のポイントは、その事前値によってオフセットされた最終グリフの原点になります。これにより、cairo_show_text() を複数回呼び出して単一の論理文字列を簡単に表示できます。

注: cairo_show_text() 関数呼び出しは、カイロの設計者が「おもちゃ」テキスト API と呼んでいるものの一部です。短いデモや単純なプログラムには便利ですが、本格的なテキストを使用するアプリケーションには適していません。cairo の「実際の」テキスト表示 API については、cairo_show_glyphs() を参照してください。

http://www.cairographics.org/manual/cairo-text.html#cairo-show-text

つまり、Postscript では UTF-8 です。:)

于 2012-09-21T04:40:30.667 に答える