
Show HN: unicode.style - ekmartin
https://unicode.style
======
JimDabell
Screen readers don’t do very well with this, so please only use it for novelty
purposes. Otherwise you will unnecessarily be locking people out from what you
write.

~~~
netsharc
Well, look forward to spammers using this to bypass the spam filters...

~~~
floatrock
Also using similar unicode characters in your username for nefarious spoofing
attacks or worse -- [https://labs.spotify.com/2013/06/18/creative-
usernames/](https://labs.spotify.com/2013/06/18/creative-usernames/)

This is called a Homoglyph attack.

If you accept unicode for strings that should be "unique" (eg username), there
are various normalization schemes that basically convert equivalent-ish
looking characters into a consistent hash.

I have no doubt spam filters use this.

~~~
xyzzy_plugh
I'm still waiting for the .corn TLD...

------
alpb
I'm having trouble understanding what this does. Apparently there's a popover
when you select the text you typed. I had to go to
[https://github.com/ekmartin/unicode-
style](https://github.com/ekmartin/unicode-style) to figure this out.

~~~
floatrock
It's a kinda ascii-art thing that 𝔩𝔢𝔱𝔰 𝔶𝔬𝔲 𝔞𝔫𝔰𝔴𝔢𝔯 𝔥𝔫 𝔠𝔬𝔪𝔪𝔢𝔫𝔱𝔰 𝔞𝔩𝔩 𝔣𝔞𝔫𝔠𝔶 𝔩𝔦𝔨𝔢
𝔱𝔥𝔦𝔰. 𝕆𝕣 𝕝𝕚𝕜𝕖 𝕥𝕙𝕚𝕤 𝕚𝕗 𝕪𝕠𝕦 𝕨𝕒𝕟𝕥 𝕝𝕖𝕤𝕤 𝕘𝕠𝕥𝕙𝕚𝕔 𝕞𝕠𝕣𝕖 𝕠𝕦𝕥𝕝𝕚𝕟𝕖.

𝙸𝚜𝚗'𝚝 𝚞𝚗𝚒𝚌𝚘𝚍𝚎 𝚐𝚛𝚎𝚊𝚝?

------
braythwayt
I have been using [https://yaytext.com](https://yaytext.com) for quite a
while. Only for novelty purposes, of course.

------
mejari
Underlines a̲r̲̲̲e̲̲̲̲̲̲̲ ̲̲̲̲̲̲̲a̲̲̲̲̲̲̲̲̲̲̲̲̲̲̲
̲̲̲̲̲̲̲̲̲̲̲̲̲̲̲l̲̲̲̲̲̲̲̲̲̲̲̲̲̲̲̲̲̲̲̲̲̲̲̲̲̲̲̲̲̲̲ittle nesty when re-selecting
already underlined characters from the left

------
Too
This seems like a major source of security issues. How can i protect myself
from it?

Am i supposed to normalize ALL untrusted user input or will that break normal
text in some language i'm not familiar with? Or only normalize things that are
supposed to be unique, like urls, usernames and other identifiers?

------
kowdermeister
I would make it more clear what the app does and that you should highlight
text to format it.

I discovered that by accident.

------
tambourine_man
On iOS, the selection popover interferes with the one you designed.

~~~
ekmartin
Good point. I’m planning on implementing a static (always-enabled) toolbar for
mobile devices — hopefully that’ll make it better.

~~~
pohl
Maybe if your options appeared below the selection rather than above they
wouldn’t interfere.

------
PeterisP
Doesn't work with accented latin alphabet characters ("ü𝕓𝕖𝕣") - is it a
fundamental restriction of the styled unicode charset or a mapping issue?
Seems like it should be supported but would need a transition from precomposed
characters to the equivalent combination of letter + diacritic.

~~~
Veedrac
It's not a fundamental restriction in the character set; "𝕦̈𝕓𝕖𝕣" is valid.

------
app4soft
What about "strikethrough" and "slashthrough"?[0,1,2]

P.S.: It's look like you reinvent YayText[3] website ;-)

[0] [http://adamvarga.com/strike/](http://adamvarga.com/strike/)

[1] [https://yaytext.com/strike/](https://yaytext.com/strike/)

[2] [https://yaytext.com/slash/](https://yaytext.com/slash/)

[3] [https://yaytext.com/](https://yaytext.com/)

------
waynenilsen
[https://github.com/ekmartin/unicode-
style/blob/master/src/tr...](https://github.com/ekmartin/unicode-
style/blob/master/src/transform.js)

I learned something new today, thanks!

------
lucideer
Android Firefox is just showing me black boxes for those Unicode ranges, so
this definitely can't be very effectively used everywhere (I haven't tried
yet, but I'm guessing some native messaging apps may have similar issues).

------
nebulous1
You should keep the toolbar on the screen.

------
na85
Neat idea but completely unusable on Firefox mobile due to the context menu
that pops up whenever text is selected and obscures the site's menu that does
the same.

------
EdSharkey
There is something about rendering these unicode code points that seems to
make Firefox jank more than usual (when scrolling this page up and down). Are
rendering these code points especially costly for some reason?

------
ChrisGranger
People might find Unicode Text Converter useful as well.

[http://qaz.wtf/u/convert.cgi?text=Hacker_News](http://qaz.wtf/u/convert.cgi?text=Hacker_News)

------
bradleybuda
𝔥𝔦 𝕥𝕙𝕖𝕣𝕖 𝓯𝓻𝓲𝓮𝓷𝓭

~~~
neogodless
It was not initially 𝗮𝗽𝗽𝗮𝗿𝗲𝗻𝘁 to me that I could 𝘴𝘵𝘺𝘭𝘦 things that I typed.

------
pimlottc
Not clear what this does? Also, copy button doesn’t work on iOS.

~~~
gkoberger
It lets you 𝗯𝗼𝗹𝗱 or 𝕤𝕥𝕪𝕝𝕖 stuff in unicode, so plain-text places (like Hacker
News) can get formatting.

~~~
Avery3R
HN supports _italics_ it's not entirely plain-text

~~~
function_seven
𝙾𝚗𝚎 𝚘𝚏 𝚝𝚑𝚎 𝚐𝚘𝚝𝚌𝚑𝚊𝚜 𝚘𝚗 𝙷𝙽 𝚝𝚘𝚍𝚊𝚢 𝚒𝚜 𝚠𝚑𝚎𝚗 𝚌𝚘𝚖𝚖𝚎𝚗𝚝𝚘𝚛𝚜 𝚞𝚜𝚎 𝚌𝚘𝚍𝚎 𝚏𝚘𝚛𝚖𝚊𝚝𝚝𝚒𝚗𝚐 𝚝𝚘 𝚖𝚊𝚔𝚎
𝚊 𝚋𝚕𝚘𝚌𝚔𝚚𝚞𝚘𝚝𝚎, 𝚝𝚑𝚎𝚗 𝚜𝚘𝚖𝚎𝚘𝚗𝚎 𝚎𝚕𝚜𝚎 𝚑𝚊𝚜 𝚝𝚘 𝚛𝚎𝚙𝚕𝚢 𝚠𝚒𝚝𝚑 𝚒𝚝 𝚞𝚗𝚏𝚘𝚛𝚖𝚊𝚝𝚝𝚎𝚍 𝚏𝚘𝚛 𝚝𝚑𝚎
𝚋𝚎𝚗𝚎𝚏𝚒𝚝 𝚘𝚏 𝚖𝚘𝚋𝚒𝚕𝚎 𝚞𝚜𝚎𝚛𝚜. 𝙸 𝚌𝚘𝚞𝚕𝚍 𝚜𝚎𝚎 𝚝𝚑𝚒𝚜 𝚋𝚎𝚒𝚗𝚐 𝚊 𝚠𝚘𝚛𝚔𝚊𝚛𝚘𝚞𝚗𝚍 𝚏𝚘𝚛 𝚝𝚑𝚊𝚝
𝚕𝚒𝚖𝚒𝚝𝚊𝚝𝚒𝚘𝚗. 𝙵𝚒𝚡𝚎𝚍 𝚠𝚒𝚍𝚝𝚑 𝚝𝚎𝚡𝚝 𝚠𝚒𝚝𝚑𝚘𝚞𝚝 𝚝𝚑𝚎 𝚑𝚘𝚛𝚒𝚣𝚘𝚗𝚝𝚊𝚕 𝚜𝚌𝚛𝚘𝚕𝚕𝚒𝚗𝚐 𝚘𝚗 𝚗𝚊𝚛𝚛𝚘𝚠
𝚜𝚌𝚛𝚎𝚎𝚗𝚜.

~~~
e_proxus
Or perhaps HN should fix some properties formatting after all these years?
Code gets posted here pretty regularly after all...

------
jotato
Nice work. +1 I would 𝗹𝗼𝘃𝗲 to see this as a chrome plugin.

------
burgerdev
Is it just me, or does the BB style render the most interesting characters as
rectangles? (Chrome on OS X)

𝔸 𝔹 𝔺 𝔻 𝔼 𝔽 𝔾 𝔿 𝕀 𝕁 𝕂 𝕃 𝕄 𝕅 𝕆 𝕇 𝕈 𝕉 𝕊 𝕋 𝕌 𝕍 𝕎 𝕏 𝕐 𝕑

------
jtolmar
This is entertaining but it's completely broken on Chrome mobile in a way I've
never seen before.

------
tmalsburg2
This would be great as an Emacs extension. Is there something like this?

------
username3
𝔲𝔫𝔦𝔠𝔬𝔡𝔢.𝔰𝔱𝔶𝔩𝔢

𝔉𝔬𝔯𝔪𝔞𝔱 𝔱𝔢𝔵𝔱 𝔲𝔰𝔦𝔫𝔤 𝔲𝔫𝔦𝔠𝔬𝔡𝔢 𝔠𝔥𝔞𝔯𝔞𝔠𝔱𝔢𝔯𝔰. 𝔓𝔞𝔰𝔱𝔢 𝔞𝔫𝔶𝔴𝔥𝔢𝔯𝔢 𝔱𝔥𝔞𝔱 𝔞𝔠𝔠𝔢𝔭𝔱𝔰 𝔭𝔩𝔞𝔦𝔫 𝔱𝔢𝔵𝔱.

------
tambourine_man
Neat. Suggestion: maybe don’t “underline” characters such as y or g

------
jancsika
This reveals all kinds of bugs in current software.

For example, if I use the tool to make a url italic, then pasting that url
into Chrome's url bar gives me back a bunch of unicode rectangles.

But that's not what I wanted. I wanted Chrome's url bar to interpret those
unicode code points as an italic version of the actual unicode code points I
want. Chrome should add a check for edge cases like these and add branches to
map the string to the corresponding non-styled code points automatically.

Someone needs to send lots of bug reports to all the relevant pieces of
software that currently have this bug. Firefox, Chromium, probably Edge,
Webkit. Those are just the browsers, but I'm sure there are more. I'm not
actually sure about Firefox tbh, but maybe just send the bug report first and
see if it gets accepted to find out.

Ooh, here's another one-- if you paste some unicode.style'd text into
LibreOffice does it convert it to the "normal" code points and add the
relevant styling? If not, it should, otherwise it's broken.

Actually, I just realized another issue. If I type something in the url bar
that is styled with unicode.style, then there is no way for Chrome to know
whether I want it displayed styled or not.

For example, maybe I'm pasting it there temporarily so that I can copy/paste
it later in a Tweet. In that case I probably want to keep the current styling
for the tweet.

So Chrome should map to the normalized unicode code points (just in case I'm
typing a url or want to instantiate a search), but still _display_ the styled
version. Then when I copy it again, it should put the unicode.style version
into the buffer. And the app which receives the pasted buffer should receive
the unicode.style code points. And of course that app should also normalize it
underneath while retaining the styled display for the same reasons.

To deal with this complexity, there should probably be a standardized way for
all apps to deal with styled text.

Please help by testing every app and filing relevant bug reports.

~~~
bjt2n3904
Ugh. This just further poisons me against unicode being a good thing. ASCII or
bust.

"ABCD" and "𝓐𝓑𝓒𝓓" are the same thing, but they also aren't. Am I supposed to
normalize everything on username creation to prevent people from making
duplicates?

~~~
function_seven
You either have to do that, or restrict usernames to ASCII subset only (and
face the wrath of non-Latin alphabet users), or restrict to a whitelist of
ranges that only represent alpha characters across all languages (i.e. not
math symbols, nor box-drawing, nor emoji, etc.)

i8n is complicated because the diversity of language is itself complicated. I
feel your pain, though, don't get me wrong.

