如何将大写字符串转换为unicode粗体大写



我想以编程方式将一串大写字母(例如"ABC")转换为以unicode粗体大写字母表示的字符串("U0001d400"以粗体a开头)

我可以在26个unicode的元组中逐个字符查找:

x='AB'
bold_unicodes = ( 'U0001d400', 'U0001d401', ..., 'U0001d419')
result = []
for c in x:
result.append( bold_unicodes[ ord(c)-ord('A')] )
result = ''.join(result)

print(result)产生(哎呀,我可以复制/粘贴unicode到StackOverflow!)

但是,这真的是最好的方法吗?它是最清晰的吗?

为了教育自己了解bytes和unicode的奥秘,是否有一种方法可以将整数偏移量ord(c)-ord('A')与表示26个连续unicode的基点的整数0x1d400结合起来?因为有许多类似的将小写字母和数字转换为粗体、斜体和其他字体的转换。

您可以将unicode块之间的偏移量相加。在您的示例中,偏移量是119743(基本上是ord(bold_unicodes[0])-ord('A')),因此chr(ord(char)+119743)返回与char等效的黑体。您可以对其他转换执行相同的操作。

一个警告:这可能是显而易见的,但您需要确保输入字符在正确的块中,以避免得到任何意外的输出-例如,chr(ord('a')+119743)返回小写粗体'𝐠'。

最新更新