标签: combining-marks

这些Unicode组合字符有什么用处,我们如何过滤它们?

กิิิิิิิิิิิิิิิิิิิิก้้้้้้้้้้้้้้้้้้้้ก็็็็็็็็็็็็็็็็็็็็ก็็็็็็็็็็็็็็็็็็็็กิิิิิิิิิิิิิิิิิิิิก้้้้้้้้้้้้้้้้้้้้ก็็็็็็็็็็็็็็็็็็็็กิิิิิิิิิิิิิิิิิิิิก้้้้้้้้้้้้้้้้้้้้กิิิิิิิิิิิิิิิิิิิิก้้้้้้้้้้้้้้้้้้้้ก็็็็็็็็็็็็็็็็็็็็ก็็็็็็็็็็็็็็็็็็็็กิิิิิิิิิิิิิิิิิิิิก้้้้้้้้้้้้้้้้้้้้ก็็็็็็็็็็็็ ็็็็็็็กิิิิิิิิิิิิิิิิิิิิก้้้้้้้้้้้้้้้้้้้้

这些最近出现在Facebook评论部分.

我们怎样才能消毒这个?

unicode sanitize combining-marks zalgo

89
推荐指数
4
解决办法
5万
查看次数

如何防止Z͎̠͗ͣḁ̵͙̑l͖͙̫̉ͦ̾͊ͬg͔̤̞͓̐̓̒̽o͓̳͇̔ͥ文本?

我已经了解了Zalgo文本如何工作的,我正在研究如何通过聊天或论坛软件来防止这种烦恼.更确切地说,需要的完整的Unicode组合字符是什么:

a)要么被剥离,假设聊天参与者只使用不需要组合标记的语言(即你可以用组合标记写"未婚夫",但是如果你坚持做的话,你自己会有点Zalgo'ed所以); 要么,

b)减少到最多8个连续字符(实际语言中遇到最大值)?

编辑:与此同时,我发现了一个完全不同的措辞问题(" 如何防止......变音符号? "),这与此基本相同.我让它的标题更明确,所以其他人也会发现它.

javascript unicode diacritics combining-marks zalgo

17
推荐指数
3
解决办法
6416
查看次数

在Unicode中"组合字符"和"字形扩展器"之间有什么区别?

在Unicode中"组合字符""字形扩展器"之间有什么区别?

就我所知,他们似乎做了同样的事情 - 尽管一组字形扩展器比组合字符组大.我在这里显然遗漏了一些东西.为什么区别?


Unicode标准,第3章,D52

  • 组合字符:具有组合标记(M)的常规类别的字符.
  • 组合字符由所有字符组成,具有间距组合标记(Mc),非间距标记(Mn)和封闭标记(Me)的常规类别值.
  • 具有非零规范组合类的所有字符都组合字符,但反之则不然:存在组合字符与零规范组合类.
  • 私有字符(Co)作为组合字符或不组合字符的解释由实现决定.
  • 除非正在描述,否则这些字符通常不会单独使用.它们包括重音符号,变音符号,希伯来语点,阿拉伯元音符号和印度语母语等字符.
  • 组合字符的图形定位取决于最后一个基本字符,除非它们由既不是组合字符也不是零宽度连接符或零宽度非连接符的字符分隔.据说组合字符适用于该基本字符.
  • 可能没有这样的基本字符,例如当组合字符位于文本的开头或遵循控件或格式字符时 - 例如,回车符,制表符或左右标记.在这种情况下,组合字符称为隔离组合字符.
  • 对于孤立的组合字符或当进程不能执行图形组合时,进程可以呈现没有图形组合的组合字符; 也就是说,它可能会将其呈现为基本字符.
  • 组合字符的代表性图像在代码表中用虚线圆圈表示.当以与前面的基本字符的图形组合呈现时,该基本字符旨在出现在由虚线圆圈占据的位置中.

Unicode标准,第3章,D59

  • Grapheme扩展器:具有Grapheme_Extend属性的角色.
  • Grapheme扩展器字符包括所有非间距标记,零宽度连接器,零宽度非连接器,U + FF9E,U + FF9F和少量间距标记.
  • 可以将字形扩展器主要设想为在另一个间隔字符之上或之下应用的非间距图形标记.零宽度连接器和零宽度非连接器被正式定义为字形扩展器,因此它们的存在不会破坏一系列其他字形扩展器.
  • 具有Grapheme_Extend属性的少量间距标记是两部分组合标记的第二部分.
  • 根据定义,具有Grapheme_Extend属性的字符集和具有Grapheme_Base属性的字符集是不相交的.

unicode terminology grapheme combining-marks

13
推荐指数
1
解决办法
1776
查看次数

什么组件在字符串中处理组合Diaeresis?

我正在使用Java编写文件名列表.

我观察到文件名中的一些单个字符,如a,ö和ü实际上包含一个序列,您可以将其描述为后续的两个单个ASCII字符:

ö由...表示o,¨

我通过检查看到了这个codePointAt().德语名称"Rölli"实际上是"Ro¨lli":

...
20: R, 82
21: o, 111
22: ?, 776
23: l, 108
24: l, 108
25: i, 105
...
Run Code Online (Sandbox Code Playgroud)

¨上面日志中的字符的值为776,即"组合分离".这是一种所谓的组合标记,属于字形,或者更确切地说是组合变音符号.所以这一切都有道理,但我不明白什么软件组件将两个字符组合到一个变音符号,以及指定此行为的位置.

  • 它与强大的字符代码表使用多个字节作为内部表示这一事实无关.几个字节与两个组合字符不同.
  • 任何简单print()的字符串都会显示组合字符,因此它不是上面的某个UI层.
  • 我记得也用PHP观察过这个.我猜任何现代语言都可以解决这个问题.

什么组件导致组合字符显示为单个组合字符?这一切有多可靠?

Java是一种规范化方法,可以生成组合代码点的单个代码点,就像这里一样吗?对使用正则表达式有帮助...

非常感谢任何提示.

java string character-encoding unicode-normalization combining-marks

5
推荐指数
1
解决办法
506
查看次数

如何用 Hangul Jamo 组成音节块

我正在开发一个项目,需要输入旧的韩文音节块(即使用过时字符的韩文音节块,例如 \xe3\x86\x85 和 \xe3\x85\xbf,位于 Hangul Compatibility Jamo 中unicode 块),但我一直很难将这些块显示为整个块(如 \xeb\xa3\xb0),而不是一串分隔的字形(如 \xe1\x85\x98\xe1\x86\ x87\xe1\x87\x88)。显然,字符串 \xe3\x84\xb1\xe3\x85\x8f\xe3\x85\x81、\xea\xb0\x80\xe3\x85\x81 和 \xea\xb0\x90 彼此等效,但是韩文字体的“GSUB 特征”在不同程度上将它们联系在一起。根据我收集的信息,类似的过程也适用于 Hangul Jamo,其中猜测元音后面的块将如何形成(就像 \xe3\x84\xb1 之间的区别) xea\xb5\xac 和 \xea\xb8\xb0) 以及它是否有结尾辅音(如 \xea\xb0\x80 和 \xea\xb0\x88 中的 \xe3\x84\xb1 之间的区别)。

\n\n

我想这类似于组合变音符号的工作方式,其中它会猜测大写 A\xcc\x81 和小写 a\xcc\x81 的高度差。有很多拉丁字体不支持组合字符,考虑到虽然 \xe3\x84\xb1\xe3\x85\x8f\xe3\x85\x81、\xea\xb0\x80\xe3\x85\x81、和 \xea\xb0\x90 是相等的,最后 \xea\xb0\x90 是一个预组合字符,Hangul Jamo unicode 块的整个目的是(根据维基百科上的文章)“动态地用于组成在 Unicode 中无法作为预先组成的韩文音节使用的音节,特别是包含后来在现代发音中与其他声音在语音上合并的声音的古老音节。” 这让我想知道 Hangul Jamo 的行为是否更像空间修改字符,需要 { EQ \\o(X1,X2) } 与各自的字符组合。

\n\n

我读过的大部分内容都是关于字体设计和命令行的,这使得作者所做的不仅仅是在文字处理器上输入过时的字符,但你看: https: //github.com/adobe -fonts/source-han-sans/issues/34。发帖者和评论员正在尝试找出垂直形式的韩文字字组成,但他们已经在文字处理程序中水平组成了音节块,但无处可寻。

\n

unicode ms-word input asianfonts combining-marks

4
推荐指数
1
解决办法
1876
查看次数

检测Java中的任何组合字符

我正在寻找一种方法来检测java字符串中的字符是否是"组合字符".例如,

String khmerCombiningVowel = 
 new String(new byte[]{(byte) 0xe1,(byte) 0x9f,(byte) 0x80}, "UTF-8"); // unicode 17c0
Run Code Online (Sandbox Code Playgroud)

代表结合高棉元音符号.我尝试过"\\p{InCombiningDiacriticalMarks}" 正则表达式,但它似乎不适用于这些特殊的组合字符.或者即使有一些所有unicode组合字符块的综合列表,我也可以为它们制作一个正则表达式?

java regex unicode combining-marks

2
推荐指数
1
解决办法
1858
查看次数