【问题标题】:How to use combining characters in UFO 3?如何在 UFO 3 中使用组合字符?
【发布时间】:2018-04-30 01:12:36
【问题描述】:

我正在通过以Unified Font Object 3 格式编写 XML 文件来创建字体。

有点不清楚如何在格式中创建组合字符,所以我希望有人可以通过一个简单的示例为我指明正确的方向?

就我而言,我使用的是 Unicode (U+E000-U+F8FF) 的私人使用区域。例如,如果一个接一个地键入,我希望 U+E000U+E001 彼此重叠显示。

【问题讨论】:

  • 你能详细说明你真正想知道什么吗?您是否在为您选择的组合字符的特定 unicode 代码点定义字形时遇到问题?或者您在定义组合对中的定位时遇到问题? (例如 Opentype 的 GPOS,或已弃用的紧排信息?)
  • @Mike'Pomax'Kamermans 我没有任何问题为任何特定的 Unicode 点创建 .glif 文件,我只是不知道如何将字符定义为可以与另一个角色是否有意义?就我而言,我使用的是私人使用区域(U+E000-U+F8FF)。我想要一个例子,说 U+E000 + U+E001 创建一个组合字符,两个字符相互重叠。

标签: fonts combining-marks ufo


【解决方案1】:

这听起来有点术语混淆; unicode 组合字符是一个定义明确的东西,具有精确的含义,与 PUA 代码点(基本上是“不受管制,但代码点可寻址的字形”)无关。最好避免现代字体中的 PUA,而是依靠 GSUB 规则来解决人类- 可键入的代码序列到内部字形 id,然后具有基于(成对)内部 id 执行必要重新定位的 GPOS 规则。

所以这听起来有点像您正在尝试弄清楚如何定义 OpenType 字体中的 GPOS 数据规则,用于代码对的自定义定位。如果是这样,那是您在 feature definition 中定义的内容,其中(对于这种特殊情况)您设置 GPOS rules 以实现您需要的重新定位。

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

【讨论】:

  • 为了进一步说明,我将 PUA 用于人工语言的脚本,其中脚本用作 abugida;其中元音是辅音的变音符号。例如,ć 可能发音为 /ca/ĉ 发音为 /ce/。据我了解,Unicode 提供组合字符,如 U+0302 (◌̂) 和预组合字符,如 U+0109 (ĉ)。所以我不能简单地将 PUA 代码点声明为组合字符,对吗?那么我的选择是预先组合的字符,还是 OpenType GPOS 功能?连字会更合适吗?
  • 确实,除了可寻址字形空间之外,PUA 在 unicode 中不是“任何东西”,所以如果你有一种具有合成规则的人工语言,你不想使用 PUA 而是使用 GSUB 的组合和 GPOS,具有用于真实轮廓的不可寻址的内部字形。例如,用户键入“ca”,字体具有c a -> internal_ca_glyph 的 GSUB 连字规则,用户键入“ce”,GSUB 替换为 internal_ce_glyph,然后 GPOS 使用“internal_ca internal_ce -> repostion in some way”规则启动用于更复杂的定位工作。
  • 内部字形究竟是如何工作的?如,他们没有分配的代码点? ca 只是在人工脚本中呈现为字形?我不确定这是否对我有用,因为我仍然希望英文文本以这种字体正确显示。我在想用户输入这种语言需要一个 IME。我正在阅读关于连字的 Wikipedia 文章,它说 Brahmic abugidas 经常在辅音簇中使用连字。 由于我的脚本是 abugida,所以是否更适合使用连字?这些可以与 PUA 代码点一起使用吗?
  • 正确:从技术上讲,“unicode”和“glyphs”彼此无关。有一个字符映射表示“如果使用此字体的上下文是 unicode,则输入代码点 X 映射到 glyph id Y”但重要的是字体对这些 glyph id 进行操作,不是 i> 在这些代码点上,它们仅用于将字节字符串解析为成形文本。所以你可以有成千上万个字形,所有这些都有 id,只有一些是“真实的”东西(比如字母 'a'),其中一些不映射到任何字符集中的任何已知字节序列.
  • 如果你想用相同的字体来做英文和你的人工脚本,那么你可以用 GSUB 连字做到这一点,只要使用文本引擎(word、latex、浏览器等)可以被告知打开或关闭一段文本的连字。有很多不同的既定“种类”连字特征,所以只需选择最合适的一种(liga 是最通用的特征)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-05
  • 1970-01-01
  • 2015-09-02
相关资源
最近更新 更多