在c#中组合我自己的unicode字符?

时间:2013-05-07 07:53:46

标签: c# .net unicode

é是一封严肃的口音。 é也可以由́ + e = é表示。

但是,我想知道我是否可以组合任何unicode字符?

例如:

我正在寻找问号内圈的unicode代码点,就像在这里(图片)一样:

enter image description here

但我找不到任何东西。 (我看了here

所以我想知道我是否可以将这两者结合起来:

?◯ - 当然规模更大。)

其中?是常规问号字符{?),而◯大圆圈 - 几何形状。

是否可以在C#中这样做?

像这里一样编辑

enter image description here

其中:

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:25)

如果您愿意,可以在任何其他角色上使用组合字符,但需要注意的是字体在显示方式中扮演的角色很大。虽然像大急性口音这样的常见变音符号应该适用于大多数字体中的几乎所有拉丁字符,但是更加模糊不清的字符,比如U + 20DD Combining Enclosing Circle有点难以理解。但是?⃝将是你需要的序列,它只需要字体支持。

说到这里,字体支持很糟糕。我在这里拥有该字符字形的所有字体(Arial Unicode MS,Calibri,Consolas)都不尊重它的组合性,只是在问号旁边渲染一个大圆圈。唯一能够正确渲染它的是坎布里亚和坎布里亚数学,它至少将字形与前一个字形重叠:

enter image description here

当序列空格,问号,圆圈时看起来好一点:

enter image description here

但仍然不太正确。

关于浏览器中的常规渲染支持:


您的浏览器:

?⃝

enter image description here


要准确回答您的问题,您可以在代码中叠加两个字形,方法是将两个标签直接放在彼此之上或自己绘制。由于字体和渲染支持与此情况一样差,这实际上是我通过图像解决的问题。因此理论上它是可能的(从Unicode的角度来看,它肯定是因为你可以表示带圆圈的问号 - 但Unicode并不涉及字体和渲染)但在大多数情况下它并不是很实用。

答案 1 :(得分:3)

不,至少没有结合你写作的方式。

您需要使用圆形和引号的图形创建一个新字体,并且可以将该“图形”指定给unicode表中的一个位置(替换默认值)。