问题标签 [combining-marks]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
302 浏览

unicode - Unicode 字符组合不正确

0 投票
1 回答
647 浏览

google-chrome - Firefox、Chrome 和 Safari 中的 Unicode 字体渲染差异

0 投票
0 回答
182 浏览

visual-studio - VS Code“更好地处理 Unicode 组合字符”:不是

在此处记录的更改中输入链接描述,标题为“更好地处理 Unicode 组合字符”,它说 VS Code“围绕处理 Unicode 组合字符进行了改进,我们将这些序列视为原子字符(在光标移动、编辑操作或块中)光标渲染)”。我的问题是这正是我不想做的。我希望光标和编辑操作将基本字符和任何组合字符视为单独的字符,因此我可以单独编辑它们。

我是否正确,没有办法恢复到以前的行为——没有切换?(我当然可以安装早期版本的 VS Code,但这是一个失败的提议,因为以后可能会有很多我想要的更改。)我需要提交请求,还是我忽略了 st?

顺便说一句,我知道 Unicode 规范化形式;一旦标准化为 NFC,光标几乎必须像现在这样。但只要基本文本是 NFD,我希望能够单独编辑组合字符(当我需要编辑堆叠的变音符号时尤其好)。

0 投票
0 回答
46 浏览

unicode - 将字符与 unicode 组合是否有限制?

我知道可以有任意数量的字符,但是可以添加多少字符有限制吗?如果有一种可能的方法可以将组合字符添加到已与普通字母组合的组合字符上。

0 投票
1 回答
57 浏览

c# - 按特定顺序组合列表c#

我在 c# 中有一个可以进行数学运算的 winform 项目。字符串就像"=B10+B4*(B12-B8)". 并B10代表“3”,B4代表“10” ,B12代表“6”,B8代表“2”。我想将此字符串转换为"=3+10*(6-2)". 所以可以进行数学运算。对于解决方案,我创建了三个列表。我成功地制作了 operatorList 和 numberRepresentList ,如下所示。我的问题是将这两个列表与特定顺序结合起来。

我如何将它们与特定顺序结合起来,结果将显示为:

我在表格中搜索过,但找不到类似的。所以我创造了一个。提前谢谢。

编辑:感谢@vivek nuna。我做了一个列表名称 partOfString

0 投票
2 回答
122 浏览

unicode - 如何确定 UTF-16 字符的字节宽度?

读取 UTF-16 字节流以确定一个字符占用多少字节的规则是什么?我已经阅读了这些标准,但是根据对现实世界 UTF-16 编码流的经验观察,似乎有些地方标准不适用(或者我缺少标准的某个方面) .

从阅读 UTF-16 标准https://www.rfc-editor.org/rfc/rfc2781

前 2 个字节的值 结果字符长度(字节)
0x0000-0xC7FF 2
0xD800-0xDBFF 4
0xDC00-0xDFFF 无效序列 (RFC2781 2.2.2)
0xDFFF-0xFFFF 4

在实践中,这似乎是正确的,至少在某些情况下是这样。使用临时 SQL 脚本(SQL Server 2019;UTF-16 排序规则),但也使用在线解码器进行了验证:

特点 统一码名称 ISO 10646 UTF-16 编码(十六进制,大端) 大小(字节)
一个 拉丁文大写字母 A U+0041 00 41 2
Б 西里尔大写字母 BE U+0411 04 11 2
ァ</td> 片假名字母小 A U+30A1 30 A1 2
兔脸 U+1F430 D8 3D DC 30 4

但是,当将以下 ISO 10646 字符编码为 UTF-16 时,它似乎是 4 个字节,但读取前 2 个字节似乎并没有表明它会这么长:

特点 统一码名称 UTF-16 编码(十六进制,大端) 大小(字节)
⚕️ 埃斯库拉皮乌斯的工作人员 26 95 FE 0F 4

虽然我宁愿让我的问题与软件无关;以下 SQL 将使用默认排序规则和默认语言在 Microsoft SQL Server 2019 上重现此行为。(注意 SQL Server 是小端的)。

很简单,您如何/为什么阅读0x2695并认为“我需要阅读这个角色的下一个单词。”?为什么这似乎与已发布的 UTF-16 标准不一致?

0 投票
0 回答
35 浏览

css - 从 HTML 中隐藏给定的组合字符

我的 HTML 包含带有重音符号的文本(U+0301 - 一个组合字符)来表示压力。我希望能够使用复选框显示和隐藏重音。一些 HTML 是动态生成的。

有没有办法只用 CSS 来做到这一点?(没有 JavaScript,也没有在标签中包含所有出现的 U+0301)

我尝试的一个想法是使用将 U+0301 呈现为空字形的自定义字体 - 它确实将 U+0301 单独隐藏,但在与另一个字符组合时无法隐藏它。

0 投票
2 回答
143 浏览

python - python - 如何将带有变音符号ɔ̃,ɛ̃和ɑ̃的字符与python中的非重音字符(从utf-8编码的文本文件导入)进行比较?

总结:我想比较ɔ̃、ɛ̃和ɑ̃与ɔ、ɛ和a,它们都是不同的,但是我的文本文件中有ɔ̃、ɛ̃和ɑ̃写成ɔ~、ɛ~和a~。


我写了一个脚本,它同时沿着两个单词中的字符移动,比较它们以找到不同的字符对两个法语单词之间只有一个音位。

最终目标是过滤 anki 卡片列表,以便仅包含某些音素对,因为其他对太容易识别。每对单词代表一个 anki 音符。

为此,我需要区分鼻音 ɔ̃、ɛ̃ 和 ɑ̃ 形成其他声音,因为它们只会与自己混淆。

如所写,代码将重音字符视为字符加〜,因此视为两个字符。因此,如果一个单词的唯一区别是最后一个重音字符和一个重音字符之间的区别,则脚本在最后一个字母上没有发现任何差异,并且按照所写的那样,然后会发现一个词比另一个词短(另一个词仍然有 ~ 左边)和尝试再比较一个字符时抛出错误。这本身就是一个完整的“问题”,但是如果我可以让重音字符作为单个单元读取,那么单词将具有相同的长度,并且会消失。

我不想用非重音字符替换重音字符,就像有些人为了比较所做的那样,因为它们是不同的声音。

我已经尝试将 unicode '规范化'为'组合'形式,例如 unicodedata.normalize('NFKC', line),但它没有改变任何东西。


这是一些输出,包括它刚刚抛出错误的行;打印输出显示代码正在比较的每个单词的单词和字符;数字是单词中该字符的索引。因此,最后一个字母是脚本“认为”这两个字符的内容,并且它认为 ɛ̃ 和 ɛ 是相同的。当它报告差异时,它也会选择错误的字母对,重要的是这对是正确的,因为我与允许对的主列表进行比较。

这是代码:

0 投票
0 回答
21 浏览

unicode - 使用 ICU 将组合变音符号转换为非组合等价物

ICU 是否包含任何可以自动执行以下转换的功能:

́ '结合重音' (U+0301) ' '重音' (U+00B4)
̀ '结合重音' (U+0300) ` '重音' (U+0060)
̈ '结合分音符' (U+0308) ¨ 'DIAARESIS' (U+00A8)

目标是用独立的等价物替换组合变音符号。

请注意,此转换不对应于Unicode(NFD、NFC 等)定义的任何现有规范化形式。