装饰文字(花体字)
文本所有处理都在浏览器本地完成,数据不上传服务器
一次给出 18 种 Unicode 风格的写法,另可叠上删除线、下划线、Zalgo 等组合符风格。 ⚠️ 先说清楚:这些不是字体,而是另一个码位。 `𝐀`(U+1D400)与 `A` 是两个完全不同的字符。后果是实打实的:屏幕阅读器读不出来、搜不到(搜 `abc` 找不到 `𝐚𝐛𝐜`)、很多输入框显示成豆腐块、有的系统还会当成乱码。所以它适合一次性好玩 —— 昵称、朋友圈、签名档;不要用于正式内容,也不要放进需要被搜索或被朗读的地方。 还原方向是必须的。 只会「加装饰」的工具是半个工具 —— 你收到别人发来的一串 `𝓗𝓮𝓵𝓵𝓸` 想复制成普通文本时就没辙了。所以这里同时做反向映射:装饰字符查表换回 ASCII,再剥掉叠在字母上的组合符。 ⚠️ 上标与下标刻意不做:`ᵃᵇᶜ` 那套在 Unicode 里不完整(`q` 根本没有上标形式,上标字母一共十几个)。做出来是「一半字母变了、一半没变」,看着像坏了。
功能
- ⚠️ 页面第一行就写明「这些不是字体而是另一个码位」及其代价(读不出、搜不到、显示成豆腐块)
- 18 种风格一次列全:粗体、斜体、粗斜体、手写体、粗手写体、花体、粗花体、双线体、等宽、无衬线四种、圈号、圈号实心、方框、方框实心、全角
- 可选叠加组合符风格:删除线、下划线、斜杠贯穿、Zalgo(轻 / 重)
- 还原模式:把装饰文字(含组合符)变回普通文本
- ⚠️ 组合符的选法是确定性的 —— 同一个输入永远得到同一个结果,不会「复制一次换个样子」
- ⚠️ 只覆盖大写的风格(圈号实心、方框)遇到小写时原样保留,不静默改成大写
- 中文、标点、emoji 一律原样保留,只换字母与数字
使用方法
- 输入要装饰的文字,结果里会一次列出 18 种写法
- 需要删除线、下划线、Zalgo 就打开对应的开关
- 要还原别人发来的装饰文字,把模式切到「还原」再粘进去
常见问题
- 这些「花体字」为什么不能用在正式内容里?
- 因为它们不是字体而是另一个码位:`𝐀` 与 `A` 是两个不同的字符。三个实际后果:屏幕阅读器念不出来(或者念成「数学粗体大写 A」),依赖它的人完全读不到你的内容;搜索不到 —— 站内搜索、搜索引擎都找不到 `𝐚𝐛𝐜` 里的 `abc`;显示不出 —— 服务端没装覆盖这些码位的字体时,用户看到的是豆腐块。所以拿它做昵称很好,拿它做标题就有人在你的页面上读到一串方框。
- 为什么没有上标和下标?
- 因为 Unicode 里那两段不完整。上标字母一共只有十几个(`ᵃᵇᶜᵈᵉᶠᵍʰⁱʲᵏˡᵐⁿᵒᵖʳˢᵗᵘᵛʷˣʸᶻ`),`q` 就没有对应的上标形式;下标更少。做出来的效果是「一半字母变了、另一半还是原样」,用户会以为工具坏了 —— 与其给一个残缺的映射,不如不做,并说明原因。
- 「还原」能认得出所有风格吗?
- 能认得出这里列出的全部 18 种,以及叠加的组合符(删除线、下划线、Zalgo 等)。做法是查一张反向表把装饰字符换回 ASCII,再把组合符剥掉。⚠️ 有一种情况会保留:普通的带重音字母(`café` 里的 `é` 是 `e` + 组合符 U+0301,而删除线用的 U+0336 就在同一段码位里)。所以这里的判据是「组合符是不是紧跟 ASCII 字母」—— 装饰是我们自己叠在 ASCII 上的,真重音不是。
- 为什么 Zalgo 每次结果都一样?
- 因为这里是按位置轮转选的组合符,没有用随机数。不少这类工具用 `Math.random()` 挑,于是同一个输入每次得到不同的输出 —— 用户复制一次发现变了样,只会以为是自己复制错了。确定性的输出才好核对、也才好还原。
相关工具
文本对比
文本把两份文本逐行对比,高亮标出新增、删除与未改动的行,改动按最小差异对齐,而不是整段标成变了。全部在浏览器本地完成,内容不上传。
字数统计
文本中英混排的文本到底有多长?中文按字、英文按词分开统计,给出字符数、行数、字节数、阅读与朗读时长,以及会被切成几条短信。全部在本机完成。
文本清洗
文本清洗从日志或表格里复制出来的一列内容:去重行、排序、去空行、去首尾空白、去行号、合并多空格,规则逐条开关。粘贴的内容只在本机处理。
命名风格转换
文本在十四种命名风格之间转换标识符,拆词时认得 fooBarBaz 与 FOO_BAR 这类混写,连续大写也会按词拆开。全部在浏览器本地完成,不上传。
简繁转换
文本在简体与繁体之间互转中文,常用词整词替换,其余字取最常见写法,因此个别字词仍需人工核对。全部在浏览器本地完成,不上传。
正则测试
文本浏览器里调试正则:匹配实时高亮、捕获组、替换预览,并挡住灾难性回溯;调好可生成 JavaScript、Python、Java、Go、PHP 代码,反向引用按语言转换。