Unicode (HTML) 用于数字上的抑扬符?

问题描述 投票:0回答:1

要在前面的字符上添加扬抑符,即“帽子”(^),我们可以使用 Unicode U+0302、COMBINING CIRCUMFLEX ACCENT 或 HTML 中的 ̂,例如

ŝ
给出 ŝ(“帽子”)。

音乐理论中,这个重音符号用在数字之上。

尝试使用数字组合代码并不总是能正确呈现。在 Windows/Chrome 中,扬抑符向右移动并略微叠印。 Android/Chrome 中省略了扬抑符。

3Į
在您的系统上给出

虽然 HTML 是我想使用此标记的地方,但它并不是它出现的唯一地方。

这是 Windows 字符映射表中的:

可以做些什么来让它正确且一致地渲染吗?

旁注:维基百科使用返回图像的特殊模板来解决它,例如

{{music|scale|3}}
给出 。如果维基百科大军无法提出更好的解决方案,也许根本就不存在。

html unicode diacritics
1个回答
0
投票

根本问题在于用于显示组合的字体是否被设计为支持该特定组合。让我解释一下。

在字体中,每个字形都有度量值,这些值确定形状相对于初始笔位置(“左侧轴承”)的位置,以及绘制该字形后笔位置从初始位置移动多远(“前进宽度”)。下图说明了 Arial 字体中的数字 3:水平指导线是字体范围的指标值,但垂直指导线显示特定于字形的指标:

字形的左侧轴承为 86 个设计单位,前进宽度为 1139 个设计单位。

显示序列

3Į
时,U+0302 字形的默认位置将取决于其左侧方位 — 即轮廓与 x = 0 相关的位置。下图显示了组合的度量Arial 中的抑扬符号:

请注意,前进宽度为 0:这是一个组合标记,不应在其所在的基本字符之外添加任何前进宽度。另请注意轮廓的位置:它横跨 x = 0。因此,对于序列

3̂3
,组合标记的默认位置横跨 3 和 3 之间间隙的中间,这就是我们观察到的:

现在,我指的是“默认”位置。在 OpenType 字体中,字体设计者可以添加高级布局表,以修改特定上下文的字形度量。这些将包含在字体内的“GPOS”(字形定位)表中。 “GPOS”表支持多种定位操作(在 OpenType 术语中,多种“查找子表类型”)。对于上方或下方组合标记字形,相对于基本字形的放置通常将使用“标记到基本附件定位”来实现。这种类型的定位动作允许为基本字形定义“锚点”,并为标记字形定义锚点。当为两个字形定义锚点时,布局引擎将自动对齐两个锚点以获得标记相对于基础的所需位置。 以下是设计师工具中使用锚点定位在 a 字形上的组合扬抑字形的外观:

因此,有了这个背景,我现在可以解释一下,对于使用 Arial 字体的序列

3̂

,该字体对该字符序列中的字形没有任何定位操作,并且仅使用其默认位置显示扬抑符和指标。

为了将组合抑扬符正确定位在数字 3 上,默认位置必须提供该结果,或者该特定组合需要标记定位操作。没有多少字体可能具有用于组合标记与数字的定位数据,因为这不是常用的组合,但支持它需要字体中的额外数据以及字体设计人员的额外工作。

但是,某些字体确实支持数字上的标记定位。例如,Doulos SIL 字体具有 3 的标记到基础附件定位,并结合扬抑符:

因此,要使此组合发挥作用,您只需找到一种设计用于支持该组合的标记定位的字体即可。

© www.soinside.com 2019 - 2024. All rights reserved.