Шрифт с разделителем?

Мой проект создает шрифт (или что-то, что я могу использовать как шрифт), который сопоставляет каждое слово с отдельным глифом в шрифте. Суть этого заключается в том, чтобы автоматически генерировать отрывки на «альтернативном языке» из произвольного текста для использования в таких вещах, как D&D или онлайн-игры.

Я закончил создание алгоритма генерации нового символа для слова на тот случай, если конвертер никогда не встречал это слово, но я озадачен тем, как сохранить эти описания символов для последующего использования. Кто-нибудь знает какие-либо алгоритмы сопоставления символов и т. Д., Которые я мог бы использовать и которые можно заставить работать со шрифтами языка PostScript?

В справочнике по языку PostScript не было никакой полезной информации по этому поводу. Я пытался искать, насколько я знаю, такие вещи по всему Интернету, но вся информация, которую я нашел, оказалась совершенно неактуальной. Я не уверен, как будут называться такие вещи, даже просто указатель на то, как начать искать, был бы очень признателен.

Если такой вещи не существует, как мне реализовать собственный алгоритм кодирования для этого? В Справочном руководстве по языку PostScript есть небольшая ссылка на эту возможность, но мои поиски в этом отношении не дали никакой полезной информации.


person AJMansfield    schedule 10.09.2012    source источник


Ответы (2)


Я думаю, что постскриптум может это сделать. Шрифт Postscript содержит два сопоставления: код символа -> имя глифа, имя глифа -> команды рисования глифа. И вы можете обойти карту символов, используя оператор glyphshow. И вы можете создать собственный шрифт с помощью definefont. Итак, я представляю себе что-то вроде этого (черновик, непроверенный):

/doglyph {
    {
        cvn glyphshow
    } stopped {
        %<-- Reinstall  font with new word here
        glyphshow
    } if
} def

/myshow { % (string of words)
    ( ) {
        search {
            doglyph
        }{
            doglyph exit
        } ifelse
    } loop
} def
person luser droog    schedule 16.09.2012
comment
Спасибо за вашу помощь, я посмотрю, что я могу сделать. - person AJMansfield; 17.09.2012

Прежде всего обратите внимание, что соотношение между словами в разных языках не 1:1, и порядок их следования также меняется. Например. «amo» означает «я люблю» на латыни, одно слово вместо двух.

Шрифты PostScript обычно имеют ограничение в 256 активных глифов и являются статическими — вы можете определить шрифт, но после вызова makefont вы не можете легко изменить их, кроме создания нового шрифта. Шрифтов CID может быть гораздо больше, и их можно переупорядочивать на лету, хотя не все интерпретаторы PostScript поддерживают это (например, я думаю, что GhostScript этого не делает, хотя у него есть некоторая базовая поддержка CID).

Более обычный подход к этому - изменить сам текст и, например. использовать разные сценарии через Unicode и OpenType. Однако, если вы просто хотите, чтобы текст выглядел по-другому, сопоставьте некоторые общие символы (например, «e» в английском языке) с чем-то очень тонким в некоторых шрифтах и ​​широким в других, и сопоставьте что-то еще с пробелом, чтобы отображались длины слов. измениться; тогда вы можете просто использовать обычные шрифты, которые выглядят по-другому.

person barefootliam    schedule 10.09.2012
comment
Суть в том, чтобы автоматически генерировать вымышленный язык, пригодный для игровых целей, а не фактический перевод на другие языки. - person AJMansfield; 11.09.2012
comment
Кроме того, проблема с этим подходом, поэтому я еще не сделал его, заключается в том, что мне нужно иметь возможность добавлять больше символов в набор, когда он встречает слова, которые он раньше не видел. - person AJMansfield; 11.09.2012