Юникод в постскриптуме

Есть ли способ использовать строки Unicode (скорее всего, в UTF-8, но может быть любая кодировка) в PostScript?

До сих пор я использовал эту функцию для преобразования шрифтов в кодировку 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

но мне это действительно не нравится.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
11
0
8 617
2

Ответы 2

Не совсем или каким-то простым "из коробки" способом. См. эта запись в FAQ для подробностей.

спасибо, это действительно неудобно и что-то платформенно-зависимое (помимо шрифтозависимого); но пока это единственный шаг в правильном направлении, который я видел

Javier 28.05.2009 18:29

Это может соответствовать вашим требованиям, а может и не соответствовать, но интерпретатор, который я написал (xpost), использует Cairo для всех своих функций графики и шрифтов, включая show. Так что какую бы поддержку ни предлагал Каир, xpost не мешает. Но пока вы не слишком взволнованы, это проект одного человека, который еще не предлагает полного 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);

A drawing operator that generates the shape from a string of UTF-8 characters, rendered according to the current font_face, font_size (font_matrix), and font_options.

This function first computes a set of glyphs for the string of text. The first glyph is placed so that its origin is at the current point. The origin of each subsequent glyph is offset from that of the previous glyph by the advance values of the previous glyph.

After this call the current point is moved to the origin of where the next glyph would be placed in this same progression. That is, the current point will be at the origin of the final glyph offset by its advance values. This allows for easy display of a single logical string with multiple calls to cairo_show_text().

Note: The cairo_show_text() function call is part of what the cairo designers call the "toy" text API. It is convenient for short demos and simple programs, but it is not expected to be adequate for serious text-using applications. See cairo_show_glyphs() for the "real" text display API in cairo.

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

Так что это UTF-8 в Postscript, насколько я понимаю! :)

ну это хорошо; но это означает только то, что xpost предполагает текст в кодировке UTF-8 (хороший выбор!). Мне не помогает использовать текст Unicode в документах PS, который будет отправлен на принтер (или преобразован в PDF)

Javier 22.09.2012 02:11

Другие вопросы по теме