Unicode有“组合字符”。如何使用它们?

10

通过组合字符,可以在单个位置使用两个Unicode字符,创建两个图形的组合。我正在思考简单的ASCII艺术,我需要首先使用,正如维基百科所说的“带水平填充的正方形”▤,然后在其上面放置字母“A”。如何完成这个操作?


3
我不确定是否存在可以随意组合其他字符的字符。相反,我认为“组合字符”是指旨在修改其他字符的字符,比如将“它们自己”放在另一个字符的上方。不过我真的不确定。 - Lasse V. Karlsen
3
SQUARE WITH HORIZONTAL FILL 不是一个组合字符,因为在其属性中可以看到 Combine: 0组合字符 是那些被设计成放在其他字符上的,比如 Å (U+00C5) 具有另一种表示形式: A (U+0041) + combining ring above (U+030A) - phuclv
1
这不是随意的,而是文本渲染引擎将它们合并成单个字形。它了解当前 UI 语言中的印刷规则。它很可能不会按照你想要的方式执行。 - Hans Passant
4个回答

8
您所描述的方法可以滥用变音符号。请随意使用以下演示进行玩耍:演示http://demo.danielmclaren.com/2015/diacriticism/)。
下面是我从上述演示中获得的Unicode代码的一些屏幕截图: Claudio.txt content copied to a terminal 将Claudio.txt内容复制到终端 Claudio.txt displayed in gedit 在gedit中显示Claudio.txt Claudio.txt displayed in SciTE 在SciTE中显示Claudio.txt
抱歉,但我现在不知道为什么相同的基础Unicode文本在SciTE中的表示看起来不同。
这里是Claudio.txt文件的十六进制码: Claudio.txt displayed as hex code in GHex 在GHex中以十六进制码显示的Claudio.txt
这里是复制/粘贴到stackoverflow答案编辑器框中的Unicode:
C̱̙̳̲͇͉̄̄̚l̝̩̩̝̺̠͞ā̝͉̩̟͆u̻͈̘̞̪̅̿d̝̄̅͆̚i͇̙͈̎̚o̘̟̎̄̄̎
由于您必须能够在终端中显示ASCII艺术,我认为没有办法覆盖任意两个Unicode字符来实现此目的。

3
根据应用程序或浏览器的不同,使用Unicode组合变音符号有两种方法:
  • 以ā(长音符a)为例,您可以先输入“a”,然后再输入十进制代码̄

  • 或者ALT+(必须来自数字键盘的+),然后是十六进制代码0304(即U+0304)。

在某些情况下,您可以先输入组合变音符号,然后再输入'a'或任何其他前导字母。


1
例如在Ubuntu文本编辑器中键入x CONTROL SHIFT U 364 SPACE,您将得到一个带有e的x。 - Pierre ALBARÈDE
首先和接下来,在某些情况下是第一个和下一个。这是什么鬼?一定有一种标准化的方法来做这件事。这不是猜测的问题,对吧? - Thomas Weller

1

具有水平填充的正方形U+25A4。

组合的拉丁小写字母A U+0363。

在Ubuntu文本编辑器中获得带'a'顶部的具有水平填充的正方形▤ͣ,请键入

SHIFT CONTROL U 25A4 SHIFT CONTROL U 363 SPACE

组合的大写拉丁字母A不存在。


0

这只适用于Mac用户,但我遇到了这个问题,自己无法尝试解决,后来发现了一种不必担心麻烦的方法来实际编写Unicode字符:https://www.webnots.com/how-to-use-unicode-hex-input-method-in-mac/

tldr; 在Mac OS中,有一个用于输入Unicode字符的键盘输入编码,位于启用其他语言键盘布局的同一区域。它在底部的“其他”下面。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接