分隔符映射字体?

时间:2012-09-10 22:19:32

标签: character-encoding fonts postscript

我的项目是创建一种字体(或者我可以使用的某种字体),它将每个映射到字体中的单个字形。其重点是自动生成"替代语言"段落形成任意文本,用于D& D或网络游戏等。

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

PostScript语言参考手册在这方面没有任何有用的信息。我尽力搜索我知道如何通过互联网进行这样的事情,但我搜索到的所有信息都完全无关紧要。我不确定这种事情会被称为什么,即使只是指示如何开始寻找也会非常感激。

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

2 个答案:

答案 0 :(得分:1)

我认为后记可以做到这一点。 postscript字体包含两个映射:char-code - > glyph-name,glyph-name - >字形-绘图命令。您可以使用glyphshow运算符绕过char映射。您可以使用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

答案 1 :(得分:0)

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

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

更常见的方法是更改​​文本本身,例如通过Unicode和OpenType使用不同的脚本。但是,如果您只是希望文本看起来不同,请将一些常见字符(例如英语中的“e”)映射到某些字体中非常薄的内容,而将其他字体中的内容放宽,并将其他内容映射到空格中,以便显示字长改变;然后你可以简单地使用看起来不同的常规字体。