花体英文转换
把英文换成花体、手写体、粗体、双线体、哥特体、圈号、方框、小型大写、上下标、全角和带装饰边框的写法。每种变体一行,附复制按钮和长度统计。
在上面输入英文,下面会一次给出全部变体
转换结果
还没有输入。填一段英文,这里会列出全部变体;把别处的花体粘进来,还会多出一栏尽量还原。
使用说明
这一页生成的每一个「花体字母」都是另一个 Unicode 码位,不是把普通字母换了一种字体样式。数学粗体来自数学字母数字符号块(U+1D400 起),圈号来自带圈字母数字区(U+24B6 起),方框来自带框字母区(U+1F130 起),上下标和小型大写则是从语音扩展区里一个个挑出来的零散字符。所以它粘到哪里都是这个样子,和目标程序的字体设置无关;反过来,想把它变回普通字母也只能逐个码位换回去,这正是页面下方「尽量还原」在做的事,而且因为多对一,还原只能做到尽量。
最容易出错的地方是这些映射并不是「26 个字母连续排下来」。斜体小写 h、手写体的大写 B E F H I L M R 和小写 e g o、哥特体的大写 C H I R Z、双线体的大写 C H N P Q R Z,早在数学块出现之前就被编进了类字母符号区,数学块里对应的位置是保留未分配的空洞。如果按「大写 A 的码点加偏移」去生成,这几个字母会落到空洞甚至隔壁风格的字母上,输出一串看着像乱码的东西。这里的做法是先算候选码点,再核对它是不是已知空洞,是空洞就查例外表换成真正对应的字符,例外表里也没有的才如实标成无映射,绝不把任意码位放出去。
长度是第二个坑。这些字符大多在基本平面之外,在 UTF-16 里一个字母占两个码元,所以五个字母的花体在按码元限长的表单里会算成十个字符。每一行结果下面同时给出「码点个数」和「UTF-16 码元数」,就是让这个差异一目了然。要更细地看某个字符由几个码点组成,可以用Unicode 转义逐字拆开,或者用十六进制转文本看它真实的字节。
还要提醒的是兼容性。很多游戏、银行、支付和政务表单只接受 ASCII,会把非 ASCII 字符整条过滤掉或者直接报错;部分即时通讯软件会在两个字符的边界上把组合符号拆开,导致删除线断成半截;搜索引擎和用户名系统通常会把花体规范化回普通字母,所以看到的花体昵称可能根本搜不到。这些场合不要用它来绕长度限制,触发校验失败时往往整条输入都被拒。也正因为每个花体字母是独立码位,它在需要「加粗显示」的排版场景里帮不上忙——真正的加粗是字体样式,和替代码位是两码事。
删除线和下划线这两种比较特殊,它们靠组合符号 U+0336、U+0332 贴在前一个字符后面,本身不占显示宽度,所以复制出去的字符串长度比看起来长得多。整段文字的第一个字符没有可依附的前一个字,个别渲染器会画出空心圆圈加横线;换行正好落在组合符号之后时还会出现半截线。真正要稳定的下划线或删除线,用富文本的样式功能,或者配键盘符号英文对照里的独立符号来凑。想找更多可以直接复制的特殊字符,可以看Emoji 与特殊符号;把 ASCII 变宽的任务则交给全角半角转换更合适。
常见问题
为什么斜体的 h 变成了另一个样子的 ℎ?
因为斜体小写 h 在数学字母数字符号块里根本没有码位。早在整块数学字母被编码之前,U+210E 就已经作为「普朗克常量」收进类字母符号区了,占的就是这个位置,数学块里对应处留成空洞。手写体的大写 B E F H I L M R、哥特体的大写 C H I R Z、双线体的大写 C H N P Q R Z 也是同样的历史遗留。这一页的做法是算出候选码点后逐一核对,命中空洞就换成真正对应的那个字符,而不是硬加偏移。
为什么数字在某些变体里原样没变?
数学块里只有粗体、双线体、等宽体等少数几种带数字,斜体、粗斜体、手写体、哥特体压根没有数字码位,所以那些风格下数字会保持普通写法,结果下面会标出「无映射」。这不是漏做,而是 Unicode 里就没有这套字形;硬凑一个别的风格的数字或者直接按偏移去加,只会得到乱码或风格不搭的字符。
为什么复制到游戏或表单里字数会变多?
这些字符大多落在基本平面之外,在 UTF-16 里一个字母要占两个码元。五个字母的花体,按码元计数的表单会算成 10 个字符。每行结果下面同时给了「码点个数」和「UTF-16 码元数」,就是提醒这个差异。另外很多游戏、银行和支付表单只接受 ASCII,会直接过滤或拒收整条输入,所以别拿它去绕字数限制。
这些字符能让我在输入框里得到真正的加粗字体吗?
不能。加粗、斜体在排版里是字体样式,由编辑器或 CSS 决定;而这里的每一个花体字母都是另一个独立的 Unicode 码位,只是碰巧被画成那个样子。所以把它粘进 Word 或别的输入框,它不会跟着字体设置变粗变细,在不认识这些码位的程序里还会显示成小方块。换句话说,它是「别的字符」,不是「加了样式的同一批字符」。
为什么有的结果在词首或词尾显示得怪怪的?
删除线和下划线这两种是靠组合符号 U+0336、U+0332 附加在前一个字符上实现的。组合符号会和底下的字符争夺空间,换字体、改行高或者正好在它之后换行时都可能错位;整段文字开头的第一个字符没有可依附的前一个字,在个别渲染器里会画成一个空心圆圈加一道横线。这也是为什么它不适合放在需要严格对齐的表单里。
反转和镜像出来的文字能还原吗?
反转只是把码点左右倒过来,本身可逆,再反转一次就回到原样。镜像是倒序之后又把 b 换成 d、p 换成 q、括号翻面,这一步是多对一,还原时无法确定原本是哪一个,只能尽量猜。这一页的「尽量还原为普通英文」就是拿所有变体的反向表去查,查到就换回 ASCII,查不到的原样保留,所以它只保证尽量,不保证和原文完全相等。
中文、标点和空格会被一起转换吗?
不会。这些变体本质上只覆盖拉丁字母,圈号和方框再多覆盖一部分数字,中文在 Unicode 里没有对应的花体形态,硬映射只能找到形状相近的假名或符号,读起来更糟,所以一律原样保留。全角是唯一的例外:它本来就是为「把 ASCII 变宽」设计的,空格、标点和数字都会一起换成全角形式,中文不受影响。
想给昵称配一个花体字,怎么挑不容易翻车?
优先选数学粗体、双线体、等宽体这类在整个字母表上都有码位、缺口最少的风格;手写体、哥特体好看但字母不全,要先用真实文案在上面试一遍。定下来之前,把结果粘到目标平台的输入框里确认显示正常再正式用,尤其是游戏昵称、App 用户名这类改一次要等很久的地方。