使用方法
- 在输入框填要装饰的文字(默认 Hello,仅字母数字参与映射,中文标点原样保留)。
- 选「转换样式」:圆圈字、全角字、数学粗体、下划线、翻转字五选一,默认圆圈字。
- 点「转换」或裸按 Enter,结果区(大字号、居中)立刻显示转换后的文字。
- 点「复制结果」把装饰字存到剪贴板;「导出口径表 CSV」把 14 行样式码位下载成带 BOM 的表格,Excel 不乱码。
- 想换回示例,点「载入示例」恢复 Hello 与圆圈字,结果区随之刷新。
这个特殊字体生成器能解决什么问题
一是快速做出「看起来不一样」的标题。社交昵称、活动海报、视频封面常需要一点视觉变化,但又不值得专门装字体或开设计软件。特殊字体生成器用 Unicode 已有的装饰字符直接拼出 ⓗⓔⓛⓛⓞ、Hello,复制粘贴即用。
二是把数学字母当「特殊字体」用。数学公式里的大写粗体 𝐀、双线 𝔸 本质是独立码位,不在普通字体里。本工具把它们当作装饰样式输出,写笔记、做课件时能让变量名更醒目。
三是提醒「这只是一层皮」。装饰字符不是换了字体文件,而是换了一组 Unicode 码位。所以它不能带进密码、变量名、代码标识符——编译器、登录框大多只接受 ASCII,装饰字符会被拒绝或静默归一化。本工具在结果区与下文都标了这条红线。
本页特殊字体生成器不做这些事:不上传文字、不把装饰字渲染成图片、不保证所有平台都显示(缺字会退回方框)。它只把输入逐字符映射成对应的装饰码位。
生成原理:码位偏移、组合附加符,以及为什么 A 变 Ⓐ
圆圈大写是码位偏移。普通 A 是 U+0041,带圈大写 Ⓐ 是 U+24B6,两者相差 0x2475。所以转换时对每个大写字母算 String.fromCodePoint(0x24B6 + (c - 65)),B 得 Ⓑ、Z 得 Ⓙ。小写同理从 U+24D0 起算。这个区间只覆盖 A–Z、a–z,所以数字和中文不会变圆圈,原样保留。
全角是另一段偏移。全角 A 是 U+FF21、全角 a 是 U+FF41、全角 1 是 U+FF10,分别比半角对应码位高 0xFEE0;半角空格(U+0020)则映射到全角空格 U+3000。全角字符占两个半角宽度,排版时对齐更整齐,但本质仍是独立码位。
数学字母是补充平面( astral )码位。数学粗体 𝐀 在 U+1D400,超过 BMP(U+FFFF),JS 里必须用 String.fromCodePoint 而不是 fromCharCode 才拼得出来。每档数学样式有各自的起始码位与覆盖区间,本页只实现粗体一档用于演示,其余见口径表。
下划线 / 上划线用「组合附加符」。它们不是占位的完整字符,而是 U+0332(下划线)、U+0305(上划线)这类「叠加在前面字符上」的组合标记。做法是把附加符拼到每个字符后面:H + '̲' 得 H̲。多个附加符可以叠加,正是 Zalgo 乱码的来源。
翻转字是「就近找镜像字形」。Unicode 没有真正的水平翻转算子,本页用一张小写字母到翻转字形的映射表(a→ɐ、e→ǝ、l→ʅ、o→o、h→ʜ 等),把整串反序后逐字替换,得到 oʅʅǝH 这种「上下颠倒又反读」的效果。它只覆盖小写,大写与数字原样保留。
完整示例(默认输入实测)
默认输入 Hello,逐样式核对(结果区默认显示圆圈字):
- 圆圈字:H(0x48)→ⓗ、e(0x65)→ⓔ、l→ⓛ、l→ⓛ、o→ⓞ,拼成 ⓗⓔⓛⓛⓞ;
- 全角字:H→H、e→e、l→l、l→l、o→o,拼成 Hello;
- 数学粗体:H→𝐇、e→𝐞、l→𝐥、l→𝐥、o→𝐨,拼成 𝐇𝐞𝐥𝐥𝐨;
- 下划线:每个字符后拼 U+0332,得 H̲e̲l̲l̲o̲(依赖字体渲染组合符);
- 翻转字:先反序 o l l e H,再逐字映射,得 oʅʅǝH。
五组结果都在口径表与结果区里可复现;换成你自己的英文词,点对应样式即可看到同样的映射逻辑。
输入范围与对照表
- 输入长度:单行输入框,建议不超过 200 字符;超长也能转换,只是结果区会换行,装饰字符更占宽度。
- 可映射字符:圆圈字 / 全角字覆盖 A–Z、a–z(全角还覆盖 0–9);数学粗体覆盖 A–Z、a–z 与 0–9;下划线 / 翻转覆盖全部字符(翻转仅小写有镜像)。
- 不可映射字符:中文、 emoji、大部分标点不在装饰区间,转换时原样保留,不会消失也不会报错。
- 口径对照表:14 种样式各给输入 A 的示例与码位范围,前 12 行直接显示,后 2 行点「加载更多」展开,可导出 CSV 或复制 TSV。
口径表是「样式规则」而非「你的文本结果」,所以它与上方结果区是两个独立信息源:结果区告诉你这段具体变成什么,口径表告诉你每种样式背后的码位。
边界与精度说明
- 装饰字符不是字体,是码位。复制到代码、密码、变量名里会被拒或归一化回普通字母,绝不能当「加密」或「防盗」用。本页在多处强调这条红线。
- 平台缺字形会显示方框。数学字母、带圈字母在部分老旧系统、终端、输入框里没有对应字形,会退回「□」或豆腐块。这不代表转换失败,只是显示层不支持。
- 组合附加符依赖渲染顺序。下划线、Zalgo 类效果靠「前一个字符 + 附加符」叠加;某些编辑器会重排组合标记,导致线画错位或跑到错误字符上,属正常现象。
- 数学字母有保留空缺。数学粗体区里 U+1D455(小写 h)等少数码位被保留不给,遇到这类字符本页会原样保留,不是 bug。
- 数值只在本地计算。整条链路只有码位偏移、查表与字符串拼接,全部在当前页面执行,没有任何网络请求,也不写 Cookie 或 localStorage。
常见问题
为什么复制到的字在别人手机上变成方框?
因为装饰字符是独立 Unicode 码位,对方系统或 App 没有对应字形时就会显示成「□」。数学字母、带圈字母在老旧设备、部分聊天输入框里尤其容易缺字形。这是显示层限制,不是转换错误;若要保证人人可见,建议导出成图片再用。
中文为什么没有被变成装饰字?
圆圈字、全角字、数学字母的区间只覆盖拉丁字母与数字,中文不在此范围内,所以本页会让中文原样保留,不会凭空消失或报错。若你希望中文也有装饰效果,目前 Unicode 没有对应的「带圈中文」标准区间,需要图片方案。
能不能把装饰字当密码用?
强烈不建议。登录框、数据库、编译器大多只接受 ASCII 或可归一化的字符,装饰字符会被拒绝、或静默转回普通字母,导致你「以为设了复杂密码其实还是 Hello」。本页在多处标了这条红线:它只用于展示。
下划线为什么有时画歪了?
下划线用的是组合附加符 U+0332,必须紧贴在前一个字符后面才渲染正确。某些编辑器会自动重排组合标记,或你中途插入了别的字符,线就可能错位或跑到错误字符上。这是组合符的固有限制,不是本页问题。
数学粗体里的 h 为什么没变?
数学字母区有少量保留空缺,小写 h 的粗体位(U+1D455)被标准保留未分配,所以本页遇到它只能原样保留。同样的情况还有几个字母,属正常行为,可在口径表里看到说明。
翻转字为什么只翻转小写?
Unicode 只给小写字母定义了「翻转 / 镜像」相近的字形(如 ɐ、ǝ、ʅ),大写和数字的镜像字形并不存在或不可靠。所以本页翻转字只对小写生效,大写数字原样保留,整串还会先反序以模拟「倒过来读」。
全角字和半角字是同一个意思吗?
显示宽度不同但语义相同:全角 A(U+FF21)和半角 A(U+0041)在大小写、读音上一样,只是全角占两个半角宽度。部分老旧系统会把全角当不同字符处理,复制到对这些敏感的地方要留意。
转换结果会被上传吗?
不会。所有映射只在你当前浏览器里完成,页面不发起任何网络请求,也不写 Cookie 或 localStorage。你在开发者工具的 Network 面板里转换几次,面板始终是空的。