javascript alt / fancy text generation

时间:2019-02-16 01:57:21

标签: javascript unicode ascii

我试图了解替代文本/精美文本生成的工作原理。

当我说替代文字/花哨文字时,是指:In [2]: class A: ...: def __init_subclass__(cls, **kwd): ...: super().__init_subclass__(cls) ...: In [3]: class B(A, test=None): ...: pass ...: (Source)

我已经搜索了40分钟,但是我找不到任何东西。我正在尝试用JavaScript制作东西,但我什至不知道如何开始,因为我不了解它是如何生成的。

我想制作一个网站,使您可以将正常的ASCII字符转换为漂亮的文本。为此,使用JavaScript文本会生成这些炫酷/精美的文本。

  1. 用户在输入框中输入A.__init_subclass__,因为他们正在输入...

  2. 使用JavaScript将其实时转换为{"test": None}

因此,只要用户键入 ,它就会开始转换example text

我正在尝试制作自己的coolsymbol版本

1 个答案:

答案 0 :(得分:3)

这些特殊字符实际上每个由两个代码点组成:55349和其他56658及以上的代码点(第二个代码点因每个字符而异)。 / p>

const str = '';
console.log(str.charCodeAt(0), str.charCodeAt(1));

您可以使用正则表达式将输入中的每个字符替换为由55349代码点以及与所讨论字符相关的代码点组成的字符串:

const input = document.querySelector('#input');
const output = document.querySelector('#output');
input.addEventListener('blur', () => {
  output.textContent = input.value.replace(/[a-z]/g, (char) => {
    // make code indexed from 0 to 25, corresponding to a to z:
    const code = char.charCodeAt() - 97;
    // add the above to 56658, since 56658 represents :
    return String.fromCharCode(55349, code + 56658);
  });
});
<input id="input" value="example text">
<div id="output"></div>