如何将大写字符串转换为unicode粗体大写
How to convert string of caps to unicode bold caps
我想以编程方式将一串大写字母(例如 "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)
产量(是的,我可以 copy/paste unicodes 进入 Whosebug!)
但是,这真的是最好的方法吗?是最清楚的吗?
为了了解 bytes
和 unicode 的奥秘,有没有办法将整数偏移量 ord(c)-ord('A')
与表示基点的整数 0x1d400
结合起来26个连续的unicodes?因为有许多类似的小写字母和数字转换为粗体、斜体和其他排版。
您可以将 unicode 块之间的偏移量相加。在您的情况下,偏移量是 119743
(基本上是 ord(bold_unicodes[0])-ord('A')
),因此 chr(ord(char)+119743)
returns 相当于 char
的粗体字。您可以对其他转换执行相同的操作。
一个警告:这可能很明显,但您需要确保输入字符在正确的块中,以免得到任何意外的输出——例如,chr(ord('a')+119743)
returns lowercase bold ''.
我想以编程方式将一串大写字母(例如 "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)
产量(是的,我可以 copy/paste unicodes 进入 Whosebug!)
但是,这真的是最好的方法吗?是最清楚的吗?
为了了解 bytes
和 unicode 的奥秘,有没有办法将整数偏移量 ord(c)-ord('A')
与表示基点的整数 0x1d400
结合起来26个连续的unicodes?因为有许多类似的小写字母和数字转换为粗体、斜体和其他排版。
您可以将 unicode 块之间的偏移量相加。在您的情况下,偏移量是 119743
(基本上是 ord(bold_unicodes[0])-ord('A')
),因此 chr(ord(char)+119743)
returns 相当于 char
的粗体字。您可以对其他转换执行相同的操作。
一个警告:这可能很明显,但您需要确保输入字符在正确的块中,以免得到任何意外的输出——例如,chr(ord('a')+119743)
returns lowercase bold ''.