-- Leo's gemini proxy

-- Connecting to bbs.geminispace.org:1965...

-- Connected

-- Sending request

-- Meta line: 20 text/gemini; charset=utf-8

Comment by πŸš€ mbays


Re: "ANSI formatting What do you think of the use of ANSI..."

In: s/Gemini


@jeang3nie That's a good point about syntax highlighting code blocks -- I think that's better than abusing the alttext line to indicate the language so the client can do highlighting, as has been suggested.


πŸš€ mbays [OP]

2023-06-04 Β· 1 year ago


Poll Results


1. ANSI formatting is neat and should be considered part of gemtext. Clients should support it.

β–ˆβ–ˆβ–ˆβ–β–β–β–β–β–β–β–β–β–β–β–β–β–β–β–β–β–β–β–β– 13%

2. ANSI formatting is awkward but we don't need to ban it... servers can send it and clients may display it, but they shouldn't be expected to.

β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–β–β–β–β–β–β–β–β–β–β–β– 50%

3. Like option 2, but it should only be tolerated within preformatted text; elsewhere clients SHOULD strip all ANSI escape codes.

β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–β–β–β–β–β–β–β–β–β–β–β–β–β–β–β–β–β–β– 21%

4. ANSI formatting is an abomination, and should be explicitly disallowed in the spec. Real gemtext does not contain any such escape codes, and clients should of course strip any they find.

β–ˆβ–ˆβ–ˆβ–β–β–β–β–β–β–β–β–β–β–β–β–β–β–β–β–β–β–β–β– 13%

5. Other, see comment.

β–ˆβ–β–β–β–β–β–β–β–β–β–β–β–β–β–β–β–β–β–β–β–β–β–β– 3%


38 votes were cast.


12 Later Comments ↓


🐝 Addison · 2023-06-04 at 18:38:

Rosy Crow converts everything to HTML/CSS under the hood, so this shouldn't be too difficult to implement. Now I have another excuse to procrastinate on adding Titan support. 😁


πŸ¦€ jeang3nie Β· 2023-06-04 at 20:33:

@mbays it's one of the few things that I miss from blogging on the big web using Markdown. What I find interesting is that the alt text a we know it in Gemtext is used for precisely that in CommonMark - relaying to the renderer that this block should be rendered as code. I agree that this shouldn't be done in Gemtext though, because that bit of info should be reserved for those using screen readers with ansi art.


I'm not even sure it's something that I'll ever get around to implementing, but it has been in the back of my brain for a long time. I have some idea how I could automate adding all of those escapes when building the capsule already, just too many projects going at once.


πŸ‘€ emilis Β· 2023-06-04 at 20:49:

The colours you added to the word β€œcolour” made it hard to read, therefore I would like for my browser to strip them.


I’m not sure about syntax highlighting case too, because the author can’t control the background that a browser/terminal is providing. It is hard to find colors that work on both light and dark backgrounds and most authors falsely assume everyone is using their mode of choice. I notice this quite often, because I use a light terminal background.


πŸ¦‹ teal Β· 2023-06-05 at 11:48:

I want to be able to use it in some of my notes, but I haven't been able to get it to display in amfora.


πŸ›°οΈ lufte Β· 2023-06-05 at 15:42:

I don't like it. I don't think it should be banned because then we would have to explicitely ban countless formats being thrown in preformatted blocks but I don't think clients should be forced to process them. It breaks accesibility and my choice of having any background color I like.


πŸš€ mbays [OP] Β· 2023-06-05 at 17:36:

@emilis @lufte re background colour: a terminal client could be more clever about how it renders ANSI-coloured text than just passing the escape codes through to the terminal, it could munge them to account for a configured background colour. @lufte: Banning it (prohibiting it in the spec) would be straightforward, and I don't think there's any slippery slope there. It's certainly the cleanest option. I'm surprised there isn't more support for it in the poll...


πŸ›°οΈ lufte Β· 2023-06-05 at 18:36:

@mbays I think I understood option 4 as "Ban capsule owners from writing special codes in their document" instead of "force clients to not do any special handling with the text in pre blocks", which makes more sense. In that case I'm all for option 4.


πŸ•ΉοΈ skyjake [mod...] Β· 2023-06-05 at 20:36:

@mbays I agree it's SGR that makes most sense here, but I think because actually adding support for these codes is highly implementation dependent (for instance, can be much easier for a TUI app), there should be no common baseline of expected support. The only common denominator should be that clients strip out the sequences, if they can't parse and apply them properly.


But IMO even that is too complicated a requirement for implementing a Gemtext parser. My speccing suggestion is to simply not pass control characters like <ESC> through to disable these sequences, even when the client just dumps the source to a terminal.


Allowing SGR in preformatted blocks makes some sense because there one might reasonably expect a client to take the part of the source between the ``` markers and show it as-is (inside a terminal emulator).


The way GUI clients would render the codes depends greatly on the underlying display method. A web view has powerful CSS styling features, so once you parse the sequence, you can display it easily. Other GUI controls might be more limited in what they can render. In any case, the client would have to be smart about the presentation, by choosing colors and fonts that remain legible.


It's all a surprising amount of complexity when implemented properly, however I think it's still compatible with the idea that the client is empowered to present the Gemtext source as it sees fit.


❄ freezr Β· 2023-06-05 at 23:41:

I believed this topic was already settled down, and we eventually agreed it was a bad idea especially because text-readers read the full text...


πŸš€ mbays [OP] Β· 2023-06-06 at 23:01:

@skyjake Right yes, it's best to have the baseline behaviour lead to something unreadable when escape sequences are used, discouraging their use except in dynamic systems where the user has specifically opted in to receiving them.


That doesn't mean we can just leave optional use of escape sequences unspecced and let conventions around them build up, because that's a definite loophole for extending the capabilities of gemini. So I think we have to tightly constrain what's permitted. Hopefully Solderpunk will pronounce on it one day.


πŸš€ totroptof Β· 2023-06-25 at 01:17:

There is a π˜₯𝘦 𝘧𝘒𝘀𝘡𝘰 standard ANSI sequence that provides a little bit more utility than SGR: VTE ([and a bunch of other terminals]) support inline hyperlinks with OSC 8. There’s a [rough spec] available as a Github Gist. I’m not sure how widely used it is, but I have noticed GCC using it to link to documentation about warnings (for example).


I’m not really advocating that ANSI sequences in general and OSC 8 in particular be widely adopted so we can have inline links, I just thought I would mention it because it’s kinda neat (and it tickles that β€œhow can I exploit this to do something interesting” itch πŸ™‚).


β€” and a bunch of other terminals

β€” rough spec


πŸš€ mbays [OP] Β· 2023-06-25 at 07:50:

@totroptof Oof... thanks. That's a serious extensibility hole which I wasn't aware of at all. OK, so this is a great argument for making sure terminal gemini clients strip out most (at least all non-CSI) escape sequences, and for having the spec tightly constrain which, if any, sequences may not be stripped.


By the way, after the discussion in this thread, I tweaked how my terminal client diohsc handles this: as of the next version, escape characters in gemtext are filtered out except where they introduce CSI sequences ('[') within a preformatted block.


Original Post


πŸŒ’ s/Gemini

ANSI formatting What do you think of the use of ANSI formatting (for colour and emphasis) in gemtext? This is one of those cases where the current spec is silent. A tradition of using these escape sequences in certain circumstances has built up, popularised (and pioneered?) by Astrobotany, and later Wordo. It worked with some terminal clients just because they didn't think to strip the escape codes, and some graphical clients (Lagrange at least) then...

πŸ’¬ mbays Β· 19 comments Β· 1 like Β· 2023-06-04 Β· 1 year ago Β· πŸ—³οΈ

-- Response ended

-- Page fetched on Sun Jun 2 14:33:47 2024