我想以编程方式将一串大写字母(例如"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)
产生
但是,这真的是最好的方法吗?它是最清晰的吗?
为了教育自己了解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)
返回小写粗体'𝐠'。