花体文本生成器

把英文字母逐字符换成 Unicode 里的连笔花体字形,一次给出数学花体、加粗花体、德文尖角体三档,每档都标出真实码位,并说明哪些字母落在保留位上、只能回退到别的区块。

提示:输入框里按 Ctrl + Enter(macOS 用 Cmd + Enter)可以立刻重新生成;单行内按 Enter 只会换行,不会触发生成。每一档右侧的「复制」只取走该档结果本身,不带码位说明。

原字符Script 档Bold Script 档Fraktur 档

使用方法

  1. 在文本框里输入要转换的内容。页面默认已经填好示例 Cafe Zoom 2026;只有 A–Z、a–z 这两个字母区间会被替换,数字 0–9、汉字、标点、emoji 一律原样保留。
  2. 结果区固定给出三档:Script 档(数学花体)、Bold Script 档(加粗花体)、Fraktur 档(德文尖角体)。每档上面是档位名与「复制」按钮,中间是转换后的整串文字,下面是这一档逐字符的真实码位,形如 U+1D49E。
  3. 点某一档右侧的「复制」,只把该档转换后的文字写进剪贴板,不带码位行;直接粘到昵称、个人简介、标题或签名里即可。
  4. 下方「全字符映射表」把 A–Z、a–z 共 52 个字母在三档下的结果与码位全部列出,默认显示 12 行,点「加载更多」每次再放 12 行。点「复制映射表」得到制表符分隔的文本,点「导出映射表 CSV」下载一个开头带 UTF-8 BOM 的表格文件,双击用 Excel 打开不会乱码。
  5. 输入框内按 Ctrl + Enter(macOS 为 Cmd + Enter)立即重新生成;载入示例按钮随时把内容恢复成 Cafe Zoom 2026。

这个花体文本生成器能解决什么问题

一是在只接受纯文本的字段里做出连笔花体的观感。社交平台的昵称、简介、弹幕大多不允许上传字体文件,把 Script 换成 𝒮𝒸𝓇𝒾𝓅𝓉 是唯一能在字符层面做出这种观感的办法,换行、头像框裁切都不会破坏它。

二是直接产出数学排版里要用的花体符号。花体字母在数学里是专用记号:拉普拉斯变换、拉格朗日量、傅里叶变换、幂集、哈密顿量、集合族分别写作 𝓛、𝓛、𝓕、𝓟、ℋ、ℱ。这些字符在公式编辑器之外没法直接敲出来,用本页映射一遍再粘进论文批注、图表题注或讲义里即可。

三是做德文尖角体式的复古排版。Fraktur 的字形来自中世纪德文手抄本,常出现在啤酒标签、报纸报头、乐队标识上;把标题换到 Fraktur 档,就能得到那种古老印刷物的气质。

四是核对一段已经带花体的文字到底是什么码位。别人发来的花体句子看起来差不多,码位却可能完全不同:ℋ 是 U+210B、𝓗 是 U+1D4D7,两者外观接近但属于不同区块。逐字符码位列可以直接比对,排查复制后掉字、显示方框的原因。

本页不做这些事:不安装或更换字体(换的是字符,不是字体文件)、不做笔画加粗、不做斜置变形、不做社交平台昵称能否注册的兼容性诊断。需要这些能力请到对应的专门页面。

原理和变量:三个花体区块与码点平移

这个花体文本生成器做的事只有一句:把输入按码点切成字符,判断它是不是 A–Z 或 a–z,是就换成一个同属拉丁字母、但字形是连笔花体的 Unicode 字符,再拼回去。用到的两个 API 是 str.codePointAt(0) 与 String.fromCodePoint();切分必须用 Array.from(str),不能用 str.length 直接循环。

为什么必须按码点走。这三个区块都位于 Unicode 补充平面,码位大于 U+FFFF,在 JavaScript 的 UTF-16 字符串里以代理对的形式占两个码元。charCodeAt(0) 只能读到半个代理(例如 55349),拿不到完整的 U+1D49E;codePointAt(0) 才会还原真实码位。同理,按 str.length 循环会把代理对从中间劈开,所以要先 Array.from 切成真实字符。

三档的码点平移规则。每个区块里 26 个大写和 26 个小写各自连续排布,所以能按基址加序号直接算:大写码位 = 大写基址 + (原码位 − 65),小写码位 = 小写基址 + (原码位 − 97)。三档基址分别是:数学花体 Script,大写 U+1D49C、小写 U+1D4B6;加粗花体 Bold Script,大写 U+1D4D0、小写 U+1D4EA;德文尖角体 Fraktur,大写 U+1D504、小写 U+1D51E。三档同排字符的间隔恰好都是 52 个码位,这正是 26 个大写加 26 个小写的结果。

保留位让「整段推」这条路走不通。看似方正的区间里其实有空位:Script 档 52 个字母中有 11 个是保留位——大写 B E F H I L M R(U+1D49D、U+1D4A0、U+1D4A1、U+1D4A3、U+1D4A4、U+1D4A7、U+1D4A8、U+1D4AD),小写 e g o(U+1D4BA、U+1D4BC、U+1D4C4);Fraktur 档有 5 个——大写 C H I R Z(U+1D506、U+1D50B、U+1D50C、U+1D515、U+1D51D);Bold Script 档最幸运,一个缺口都没有,52 个字母全部连续可推。

这些位置之所以空着,是因为对应的字形在更早的 Unicode 版本里已经单独编过码,为了不出现「一个字符两个码位」,新区块给它们留了空。它们的真实码位落在 Letterlike Symbols 区块:Script 档的大写回退到 ℬ U+212C、ℰ U+2130、ℱ U+2131、ℋ U+210B、ℐ U+2110、ℒ U+2112、ℳ U+2133、ℛ U+211B,小写回退到 ℯ U+212F、ℊ U+210A、ℴ U+2134;Fraktur 档回退到 ℭ U+212D、ℌ U+210C、ℑ U+2111、ℜ U+211C、ℨ U+2128。

所以正确写法是:能整段平移的字符用基址算,命中保留位的字符查一张回退表。本页给 Script 档挂了 11 项、Fraktur 档挂了 5 项回退表,Bold Script 档不需要。数字方面,三个花体区块都没有数字字形,所以 0–9 一律原样输出——这正是示例里的 2026 从头到尾没有变化的原因。

完整示例:Cafe Zoom 2026 的逐字符结果

示例条件就是页面打开时文本框里的那段文字:Cafe Zoom 2026,共 14 个字符。下面把它在 Script 档下的每个字符与码位逐位列出,可以和结果区第一行下面的码位行对照:

整串在 Script 档下是 𝒞𝒶𝒻ℯ 𝒵ℴℴ𝓂 2026,码位序列为 U+1D49E U+1D4B6 U+1D4BB U+212F U+0020 U+1D4B5 U+2134 U+2134 U+1D4C2 U+0020 U+0032 U+0030 U+0032 U+0036。

同一串在 Bold Script 档下是 𝓒𝓪𝓯𝓮 𝓩𝓸𝓸𝓶 2026,码位 U+1D4D2 U+1D4EA U+1D4EF U+1D4EE U+0020 U+1D4E9 U+1D4F8 U+1D4F8 U+1D4F6 U+0020 U+0032 U+0030 U+0032 U+0036——这一档没有缺口,所以 e 的码位是 U+1D4EE 而不是上一档的 U+212F,全部落在区块内部。

在 Fraktur 档下是 ℭ𝔞𝔣𝔢 ℨ𝔬𝔬𝔪 2026,码位 U+212D U+1D51E U+1D523 U+1D522 U+0020 U+2128 U+1D52C U+1D52C U+1D52A U+0020 U+0032 U+0030 U+0032 U+0036——C 和 Z 恰好都是 Fraktur 的缺口,回退成了 ℭ U+212D 与 ℨ U+2128。

这三组码位是 Unicode 的固定分配结果,与显示效果无关;屏幕上好不好看,取决于你的系统有没有为这些码位准备字形。

输入范围与三档映射对照表

下表是三个区块的覆盖范围、保留位数量与代表性字符,用来快速判断某一档能不能覆盖你要的字母。三个区间都在 U+1D400–U+1D7FF 这个「数学字母数字符号」大区块内,彼此紧挨着。

档位大写范围小写范围保留位需回退字母数字字形
Script 档(数学花体)U+1D49C–U+1D4B5U+1D4B6–U+1D4CF11B E F H I L M R e g o无
Bold Script 档(加粗花体)U+1D4D0–U+1D4E9U+1D4EA–U+1D5030无无
Fraktur 档(德文尖角体)U+1D504–U+1D51DU+1D51E–U+1D5375C H I R Z无

第二张表给出全部 16 个回退字母的真实码位。凡是遇到 Script 档或 Fraktur 档,先来这里查;Bold Script 档不出现回退,因此不在表内。

档位字母回退字符真实码位原本应在的保留位
Script 档BℬU+212CU+1D49D
Script 档EℰU+2130U+1D4A0
Script 档FℱU+2131U+1D4A1
Script 档HℋU+210BU+1D4A3
Script 档IℐU+2110U+1D4A4
Script 档LℒU+2112U+1D4A7
Script 档MℳU+2133U+1D4A8
Script 档RℛU+211BU+1D4AD
Script 档eℯU+212FU+1D4BA
Script 档gℊU+210AU+1D4BC
Script 档oℴU+2134U+1D4C4
Fraktur 档CℭU+212DU+1D506
Fraktur 档HℌU+210CU+1D50B
Fraktur 档IℑU+2111U+1D50C
Fraktur 档RℜU+211CU+1D515
Fraktur 档ZℨU+2128U+1D51D

输入上限是文本框的 maxlength="120",按 UTF-16 码元计算。花体字符本身占两个码元,所以粘贴已经转换过的结果时实际只能放约 60 个,纯英数才放得满 120 个。上方动态生成的映射表按行分页,默认 12 行,可以展开到 52 行。

边界与兼容性:保留位回退、方框与平台归一化

常见问题

为什么 Script 档里 e 和 o 看起来和别的字母不太一样?

因为这两个字母在 Script 区块里的位置(U+1D4BA、U+1D4C4)是保留位,本页把它们回退到了符号区的 ℯ U+212F 和 ℴ U+2134。它们和区块内的字母出自不同年代的字形设计,笔画倾角会略有差异,属于 Unicode 分配造成的结果。

为什么数字 2026 一个都没变?

三个花体区块只收录了拉丁字母,没有对应的数字字形。Unicode 给数学字母风格配的数字段只存在于其它风格里,花体不在其列,所以 0–9 会原样保留,这是设计而不是 bug。

同一个字母在三档之间的码位相差多少?

恰好都是 52。大写 A 在 Script 是 U+1D49C、Bold Script 是 U+1D4D0、Fraktur 是 U+1D504,相邻两档相差 0x34 即 52;小写 a 是 U+1D4B6、U+1D4EA、U+1D51E,同样是 52 递增。因为每个区块正好是 26 个大写加 26 个小写。

粘到微信、微博、抖音之后花体没了,是工具的问题吗?

不是。这些平台在入库或渲染时可能做一次 NFKC 归一化,把花体字母统一打回普通 ASCII 字母(实测 𝒞、𝓐、𝔄、ℋ、ℭ 全部被折叠)。这是对方系统的行为,你在发送端看不到,也无法从这一端避免。

结果里出现空心方框,怎么修?

方框表示当前设备的字体没有这个码位的字形。换一款覆盖更全的数学字体能解决你自己这一端,但对方看到的仍可能是方框——方框取决于对方设备,你无法替他解决。想更稳妥,可以优先使用符号区的回退字符,它们的字体覆盖率高一些。

输入中文会怎样?

中文原样输出。本页映射的是 A–Z、a–z 这些存在花体变体的拉丁字母;汉字没有对应的花体码位,Unicode 里也不存在「花体汉字」,所以只有字母段会被替换,混排时中文保持不变。

「复制映射表」和「导出映射表 CSV」有什么区别?

前者把 52 行映射表以制表符分隔的文本写进剪贴板,粘进 Excel 会自动分列;后者下载一个开头带 UTF-8 BOM 的 .csv 文件,双击用 Excel 打开不会中文乱码。两者内容完全一致。

输入的内容会传到服务器吗?

不会。这个花体文本生成器的切分、码点平移、回退查表和拼回全部在当前页面的脚本里完成,全程没有网络请求,也不写浏览器存储。打开开发者工具的 Network 面板边输入边观察,不会有新请求发出。

相关工具