【问题标题】:Combine my own unicode characters in c#?在 c# 中结合我自己的 unicode 字符?
【发布时间】:2013-05-01 02:33:34
【问题描述】:

é 是一个重音字母。 é也可以用́ + e = é表示。

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

例如:

我正在为 圆圈内的问号寻找一个 unicode 代码点,如下所示(图片):

但我找不到。 (我看了here

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

?(即◯——当然是更大的尺寸)。

? 是常规问号字符 (?),◯ large circle - 几何形状。

在 C# 中可以这样做吗?

在这里编辑

哪里:

【问题讨论】:

  • @Sayse è 是模棱两可的 - 它也可以是一个 unicode 重音符组合字符与常规 e,即 string s = "e\u0300";
  • @RoyiNamir - 应用
  • @ sayseu̡͍̘̭̣ͯ͛̒ͮ͊̈̓̕n͉̥̪̙͈͔̪͈̄͐iͧͯ͗̑̚҉͔͚̩͕̪c̡̰͎̰͇̯ͥ̓ö̧͇͔̟̜̬̟͞d̵̡̞͎͐̓͐̆̔̓ͮ͗͜ḙ̵̡͍̠̗͓̠̟̞͎ͤͥͬ͐̓͐̆̔̓ͮ͗͜ḙ͍̠̗͓̠̟ͤͥͬs̴̴̞̹̤̤̹̠̞̹̤̤̹̠ͭ͐̔ͣ̉ͭ͐̔ͣ̉͢͢͢͢f̣̯͉͚̫̮̌ͬ͟͠ú̜̠̼̘͇̜͍͈͌n̷̸̷̸̷̸̷̸̻̮̻̮̻̮̻̮̊͒ͯͮ̊͒ͯͮ̊͒ͯͮ̊͒ͯͮ̚̚̚̚͟͟͟͟
  • @MarcGravell - 我的第一个想法是 Firefox 搞砸了是不是错了?
  • @RoyiNamir 建议:图标字体会做你想做的事吗? (Font Awesome 有一个带问号的圆圈:fortawesome.github.io/Font-Awesome/#icon/icon-question-sign

标签: c# .net unicode


【解决方案1】:

如果您愿意,可以在任何其他字符上使用组合字符,但是需要注意的是字体在其显示方式中扮演着重要角色。虽然像尖锐重音这样的常见变音符号应该适用于大多数字体中的几乎所有拉丁字符,但更晦涩的变音符号,如 U+20DD 组合封闭圈有点不稳定。但是 ?⃝ 将是您需要的序列,它只需要字体支持。

话虽如此,字体支持非常糟糕。我在这里拥有的所有具有该字符字形的字体(Arial Unicode MS、Calibri、Consolas)都不尊重它的组合性,而只是在问号旁边呈现一个大圆圈。唯一能正确呈现它的是 Cambria 和 Cambria Math,它们至少将字形与前一个重叠:

如果有序列空格、问号、圆圈看起来会好一些:

但还是不太对。

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


您的浏览器:

?⃝


不过,为了准确回答您的问题:您可以在代码中叠加两个字形,方法是直接将两个标签放在彼此的顶部,或者自己绘制。在这种情况下,字体和渲染支持很差,这确实是我通过图像解决的问题。所以理论上这是可能的(从 Unicode 的角度来看,这绝对是因为你可以表示一个带圆圈的问号——但 Unicode 并不关心字体和渲染),但在大多数情况下它不是很实用。

【讨论】:

  • 优秀的答案; a:它观察到存在一个组合封闭圆,并且 b:它观察到对此的字体支持是不可靠的(例如,它对我不起作用)。
  • 顺便说一下,Windows 7 上的 Firefox 20 以与 Win8 上的 Firefox 16 示例几乎相同的方式显示它(除了圆圈有点锯齿,但这可能是由于其他原因)。
  • 请注意,与 Windows 上的 Firefox/Internet Explorer 相比,Chrome 的字体选择往往很差。它应该在 Linux 下表现更好(但只能与 Firefox 相提并论)。
  • @hammar 您使用的代码是什么?请通过jsbin或其他方式分享
【解决方案2】:

不,至少在结合你的写作方式的意义上不是。

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

【讨论】:

  • 如果有什么你应该使用 PUA。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-22
  • 2018-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-06
相关资源
最近更新 更多