Unicode 中重音符号的不同字体颜色

平面设计 排版
2022-01-04 07:17:42

我正在开发一个使用泰语脚本的应用程序。泰语脚本中的许多元音写成最能描述为辅音上方的重音符号。

例如,在单词中:กึด

ก和ด都是辅音,但ึ是元音。我需要能够将元音设置为与辅音不同的颜色,但我不知道这在 HTML 中是否可行,因为我无法独立于辅音选择元音。

我确信这也适用于其他情况,但我找不到任何解决方案。

2个回答

简短的回答:它不会工作。除了e100所说的,您可以尝试几种不同的方法,但都没有达到预期的效果。

  1. 这是标准的“让我们呈现为 HTML 实体并观察浏览器组合字形”示例文本:

    IE - 正确的字符 - 全部 1 种颜色

  2. 让我们尝试只更改元音的颜色。IE9 呈现组合的字符,但使用第一个字符的颜色。有趣的是,当我们在 Chrome 中执行此操作时(我也假设 Safari,因为它基于 WebKit)- 字符没有组合。Chrome 将元音呈现为离散字符,可能是因为跨度破坏了其字符解析引擎。

    IE - 正确的字符 - 错误的颜色

    Chrome - 错误的字符 - 正确的颜色

  3. 我们可以尝试手动调整元音以将其定位在应有的位置,但不幸的是,字形在底部呈现“幽灵字符”,这看起来不正确。

    IE - 错误的字符 - 正确的颜色

  4. 我们可以尝试变得非常狡猾,而不是分裂角色。我们将在两个字符周围使用单个SPAN,但使用 CSS 的:first-letter伪元素选择器......只是发现它总是呈现为第一个字符的颜色。这种行为在 WebKit 和 Trident 中是相同的。

    IE - 正确的字符 - 错误的颜色

请记住,Presto 和 Gecko 都无法做到这一点。事实上,Gecko 在我们的“相对位置”尝试中做得更糟,因为它结合了字符,然后弄乱了边距,使两个辅音发生碰撞。这几乎涵盖了你所有的主要浏览器......真可惜。

我没有答案,但这个测试用例证明了这个问题,将它与拉丁字符的类似处理进行了比较。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">

<html>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>

<body>
    <div>&#x0E01;<span style='color: red'>&#x0E36;</span>&#x0E14;</div>
    <div>&#x0E01;
        <span style='color: red'>&#x0E36;</span>
&#x0E14;
    </div>
    <div>x<span style='color: red;'>o</span>x</div>
    <div>x
        <span style='color: red;'>o</span>
x
    </div>
</body>
</html>

我在 IE8 和 Chrome 中得到了不同的结果——它们都不像你想要的那样工作。这可能归结为浏览器实现。也许其他人可以以此为基础。