Fonts 如何在UFO 3中使用组合字符?

Fonts 如何在UFO 3中使用组合字符?,fonts,combining-marks,ufo,Fonts,Combining Marks,Ufo,我通过以这种格式编写XML文件来创建字体 有点不清楚如何在格式中创建组合字符,所以我希望有人能用一个简单的例子为我指出正确的方向 在我的例子中,我使用的是Unicode的私有使用区域(U+E000-U+F8FF)。例如,如果依次键入,我希望U+E000和U+E001显示在彼此的顶部。这听起来有点术语混淆;unicode组合字符是一种定义良好的字符,具有精确的含义,与PUA码点无关(基本上是“不受监管的,但码点可寻址的符号”)在现代字体中,最好避免使用.PUA,而是依赖GSUB规则将人类可键入的代

我通过以这种格式编写XML文件来创建字体

有点不清楚如何在格式中创建组合字符,所以我希望有人能用一个简单的例子为我指出正确的方向


在我的例子中,我使用的是Unicode的私有使用区域(U+E000-U+F8FF)。例如,如果依次键入,我希望
U+E000
U+E001
显示在彼此的顶部。

这听起来有点术语混淆;unicode组合字符是一种定义良好的字符,具有精确的含义,与PUA码点无关(基本上是“不受监管的,但码点可寻址的符号”)在现代字体中,最好避免使用.PUA,而是依赖GSUB规则将人类可键入的代码序列解析为内部glyph ID,然后使用GPOS规则根据(对)内部ID执行必要的重新定位

因此,听起来有点像你在试图弄清楚如何定义规则,在OpenType字体中是GPOS数据,用于自定义代码对的定位。如果是这样,这就是你在a中定义的东西,在a中(对于这种特殊情况),你可以设置以实现你需要的重新定位


不幸的是,这里没有“快速”的例子:GSUB/GPOS功能决不是快速和简单的,而且您通常不会手工编写它们(像FontForge、Fontlab、FontCreator等,都带有UI,用于自动化部分或全部编写OpenType脚本/功能/查找定义)。如果必须这样做,您可能需要多次阅读功能文档,以了解确切的语法以及需要使用哪种GPO查找类型。

能否详细说明您真正想要了解的内容?您在为组合字符的特定unicode代码点定义glyph时是否遇到问题选择的角色?或者您在组合对中定义定位时有问题吗?(例如Opentype的GPO,或者不推荐的kern,信息?)@Mike'Pomax'Kamermans我为任何特定的Unicode点创建
.glif
文件没有任何问题,我只是不知道如何将字符定义为可以与另一个字符组合的东西(如果有意义的话)?在我的例子中,我使用的是私人使用区域(U+E000-U+F8FF).我想要一个例子,假设U+E000+U+E001创建一个组合字符,两个字符在一起。为了进一步澄清,我将PUA用于一种人工语言的脚本,在这种脚本中,该脚本的功能类似于abugida;其中元音是辅音的变音。例如,
ć
可能发音为
/ca/
ĉ
作为
/ce/
。据我所知,Unicode提供了两种组合字符,如
U+0302
(◌̂)和预合成字符,如
U+0109
(ĉ)。因此我不能简单地将PUA码点声明为组合字符,对吗?那么我的选项将是预合成字符或OpenType GPOS功能?连字是否更合适?事实上,PUA不是“任何东西”“在unicode中,而不是在可寻址的字形空间中,因此如果您有一种具有组合规则的人工语言,那么您就不想使用PUA,更不想使用GSUB和GPO的组合,而将不可寻址的内部字形用于真实的轮廓。例如,用户键入'ca',字体具有用于
ca->internal\u ca\u glyph
的GSUB连字规则,用户键入'ce',GSUB替代internal\u ce\u glyph,然后GPO使用'internal\u ca internal\u ce->repostation in in somethod'规则进行更复杂的定位工作。内部glyph究竟是如何工作的?如中所示,它们没有指定的代码点<代码>ca只是作为人工脚本中的图示符呈现?我不确定这是否适用于我,因为我仍然希望英文文本以这种字体正确显示。我想用户需要输入法才能输入这种语言。我在读维基百科上关于连字的文章,上面说婆罗门阿布吉达人经常在辅音群中使用连字。由于我的脚本是一个abugida,那么使用连字会更合适吗?这些可以与PUA代码点一起使用吗?正确:从技术上讲,“unicode”和“glyphs”彼此无关。有一个字符映射表示“如果使用这种字体的上下文是unicode,那么输入代码点X映射到glyph id Y”,但重要的是字体在这些glyph id上操作,而不是在这些代码点上操作,这些代码点仅用于将字节字符串解析为成形文本。因此,你可以有数千个字形,所有字形都有ID,只有一些是“真实”的东西(如字母“a”),其中一些不映射到任何字符集中的任何已知字节序列。如果你想让同一字体同时处理英文和人工脚本,那么你可以使用GSUB连字很好地做到这一点,只要所使用的文本引擎(word、latex、browser等)可以被告知打开或关闭连字来延伸文本。有相当多的不同类型的连字特征,所以只需选择最合适的一种(其中,
liga
是最通用的特征)。