Character encoding 分隔符映射的字体面?

Character encoding 分隔符映射的字体面?,character-encoding,fonts,postscript,Character Encoding,Fonts,Postscript,我的项目是创建一种字体(或者我可以使用类似字体的东西),将每个单词映射到字体中的单个字形。其要点是自动生成任意文本形式的“替代语言”段落,用于D&D或在线游戏等 我已经完成了为一个单词生成一个新字符的算法的创建,如果转换器从来没有遇到过这个单词,但是我被如何存储这些字符描述以供以后使用的问题难住了。有人知道我可以使用哪些字符映射算法/等来处理PostScript语言字体吗 PostScript语言参考手册在这方面没有任何有用的信息。我尽我所能在互联网上搜索这样的东西,但是我搜索到的所有信息都是完

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

我已经完成了为一个单词生成一个新字符的算法的创建,如果转换器从来没有遇到过这个单词,但是我被如何存储这些字符描述以供以后使用的问题难住了。有人知道我可以使用哪些字符映射算法/等来处理PostScript语言字体吗

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


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

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

PostScript字体通常有256个活动标志符号的限制,并且是静态的-您可以定义字体,但在调用makefont后,您无法轻松更改它们,除非创建新字体。CID字体可以有更多的字体,并且可以动态地重新排列,尽管并非所有PostScript解释器都支持这一点(例如,我认为GhostScript不支持,尽管它确实有一些基本的CID支持)


更常见的方法是更改文本本身,例如通过Unicode和OpenType使用不同的脚本。但是,如果您只是想让文本看起来不同,请映射一些常用字符(例如英语中的“e”)一些字体很薄,另一些字体很宽,并将其他字体映射到一个空格,因此字长似乎会发生变化;然后您可以简单地使用外观不同的常规字体。

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

PostScript字体通常有256个活动标志符号的限制,并且是静态的-您可以定义字体,但在调用makefont后,您无法轻松更改它们,除非创建新字体。CID字体可以有更多,并且可以动态重新排列,尽管并非所有PostScript解释器都支持这一点(例如,我认为GhostScript没有,尽管它有一些基本的CID支持)


更常见的方法是更改文本本身,例如通过Unicode和OpenType使用不同的脚本。不过,如果您只是想让文本看起来不同,请映射一些常用字符(例如英语中的“e”)一些字体很薄,另一些字体很宽,将另一些字体映射到一个空格,这样字长看起来会改变;然后你可以简单地使用看起来不同的常规字体。

我认为postscript可以做到这一点。postscript字体包含两个映射:字符代码->字形名称,字形名称->字形绘图命令。你可以绕过t他使用
glyphshow
操作符创建字符映射。您可以使用
definefont
创建自定义字体。因此,我设想如下(草稿,未经测试):

/doglyph{
{
cvn字形显示
}停止{

% 我认为postscript可以做到这一点。postscript字体包含两个映射:char code->glyph name,glyph name->glyph drawing命令。您可以使用
glyphshow
操作符绕过char映射。您还可以使用
definefont
创建自定义字体。因此,我想象类似这样的情况(草稿,未经测试):

/doglyph{
{
cvn字形显示
}停止{

%关键是自动生成一种虚拟语言,可用于游戏目的,而不是实际翻译成其他语言。此外,这种方法的问题是,当遇到以前从未见过的单词时,我需要能够向集合中添加更多字符。关键是自动生成为一种虚拟语言评分,该语言可用于游戏目的,而不是实际翻译成其他语言。此外,这种方法的问题是,当它遇到以前从未见过的单词时,我需要能够向集合中添加更多字符。谢谢你的帮助,我会看看我能做些什么。谢谢你的帮助,我很高兴我看看我能做什么。
/doglyph {
    {
        cvn glyphshow
    } stopped {
        %<-- Reinstall  font with new word here
        glyphshow
    } if
} def

/myshow { % (string of words)
    ( ) {
        search {
            doglyph
        }{
            doglyph exit
        } ifelse
    } loop
} def