1

我的项目正在创建一种字体(或者我可以使用的有点像字体的东西),它将每个单词映射到字体中的单个字形。这样做的主要目的是自动生成任意文本的“替代语言”段落,用于 D&D 或在线游戏等。

如果转换器从未遇到过该单词,我已经完成了为单词生成新字符的算法的创建,但是我对如何存储这些字符描述以供以后使用感到困惑。有人知道我可以使用的任何字符映射算法/等可以用于 PostScript 语言字体吗?

PostScript 语言参考手册在这方面没有任何有用的信息。我已经尽我所能在整个互联网上搜索了这样的东西,但是我搜索的所有信息都完全无关紧要。我不确定这种东西会被称为什么,即使只是一个指向如何开始寻找的指针也会非常感激。

如果不存在这样的事情,我将如何实现自定义编码算法来做到这一点?PostScript 语言参考手册对这种可能性做了一些小的参考,但我在这方面的搜索没有找到任何有用的信息。

4

2 回答 2

1

我认为后记可以做到这一点。postscript 字体包含两个映射:char-code -> glyph-name,glyph-name -> glyph-drawing-commands。您可以使用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
于 2012-09-16T14:18:30.900 回答
0

首先要注意不同语言中单词之间的关系不是1:1的,顺序也会发生变化。例如,“amo”在拉丁语中的意思是“我爱”,一个词而不是两个词。

PostScript 字体通常有 256 个活动字形的限制并且是静态的 - 您可以定义字体,但是在调用 makefont 之后,您不能轻易更改它们,除非通过制作新字体。CID 字体可以有更多,并且可以即时重新排列,尽管并非所有 PostScript 解释器都支持(例如,我认为 GhostScript 不支持,尽管它确实有一些基本的 CID 支持)。

更常用的方法是更改​​文本本身,例如通过 Unicode 和 OpenType 使用不同的脚本。但是,如果您只是希望文本看起来不同,请将一些常见字符(例如英文中的“e”)映射到某些字体中非常细的字体,而在另一些字体中则映射宽,并将其他字体映射到空格,这样就会出现单词长度改变;然后你可以简单地使用看起来不同的常规字体。

于 2012-09-10T22:29:04.557 回答