Taking into account the shape of different ASCII characters is brilliant, though!
ASCII characters are not pixels: a deep dive into ASCII rendering
41–50 of 158 posts
Re: ASCII characters are not pixels: a deep dive into ASCII rendering
#42Re: ASCII characters are not pixels: a deep dive into ASCII rendering
#43Great breakdown and visuals. Most ASCII filters do not account for glyph shape. It reminds me of how chafa uses an 8x8 bitmap for each glyph: https://github.com/hpjansson/chafa/blob/master/chafa/interna... There's a lot of nitty gritty concerns I haven't dug into: how to make it fast, how to handle colorspaces, or like the author mentions, how to exaggerate contrast for certain scenes. But I think 99% of the time, it…
Re: ASCII characters are not pixels: a deep dive into ASCII rendering
#44Great breakdown and visuals. Most ASCII filters do not account for glyph shape. It reminds me of how chafa uses an 8x8 bitmap for each glyph: https://github.com/hpjansson/chafa/blob/master/chafa/interna... There's a lot of nitty gritty concerns I haven't dug into: how to make it fast, how to handle colorspaces, or like the author mentions, how to exaggerate contrast for certain scenes. But I think 99% of the time, it…
Re: ASCII characters are not pixels: a deep dive into ASCII rendering
#45Re: ASCII characters are not pixels: a deep dive into ASCII rendering
#46Re: ASCII characters are not pixels: a deep dive into ASCII rendering
#47Re: ASCII characters are not pixels: a deep dive into ASCII rendering
#48Re: ASCII characters are not pixels: a deep dive into ASCII rendering
#49Great article! I think there's a small problem with intermediate values in this code snippet: const maxValue = Math.max(...samplingVector) samplingVector = samplingVector.map((value) => { value = x / maxValue; // Normalize value = Math.pow(x, exponent); value = x * maxValue; // Denormalize return value; }) Replace x by value.
Re: ASCII characters are not pixels: a deep dive into ASCII rendering
#50Acerola worked a bit on this in 2024[1], using edge detection to layer correctly oriented |/-\ over the usual brightness-only pass. I think either technique has cases where one looks better than the other.