A web monoespaçada
(owickstrom.github.io)- Uma página experimental que posiciona elementos da web sobre uma grade baseada em caracteres, exibindo texto, tabelas, diagramas e mídia com uma estética próxima à de terminais dos anos 1970
- Converte documentos simples em Markdown com o Pandoc e renderiza HTML semântico em uma grade monoespaçada com CSS e pouquíssimo JavaScript
- A responsividade não diminui em pixels, mas em unidades de tamanho de caractere; as tabelas se ajustam automaticamente à grade, mas ficam limitadas a uma única coluna expansível
- Lida com elementos padrão como parágrafos comuns, divisores,
<details>, listas, listas em árvore, tabelas, formulários, contêineresgrid, desenhos ASCII baseados em<pre>, imagens e vídeos - Todo o código-fonte está disponível no GitHub, então é possível fazer fork ou copiar as partes necessárias de acordo com os termos da licença
Uma página web construída com grade de caracteres
- Fontes monoespaçadas podem parecer mais legíveis, consistentes e bonitas do que fontes proporcionais para alguns usuários
- Esta página é um experimento técnico e criativo para compor todos os elementos usando uma web monoespaçada
- A implementação converte documentos em Markdown com o Pandoc e depois posiciona HTML semântico sobre uma grade de caracteres com CSS e um pouco de JavaScript
- O layout responsivo se reduz conforme a largura da tela usando unidades de tamanho de caractere em vez de pixels
- O objetivo é fazer com que elementos HTML padrão funcionem naturalmente dentro de uma grade monoespaçada sem trabalho complexo adicional
Elementos suportados e forma de disposição
- A marcação básica inclui parágrafos comuns, divisores horizontais e elementos
<details> - As listas suportam marcadores comuns e listas ordenadas, e uma lista não ordenada com a classe
treepode representar uma estrutura em árvore com aparência de sistema de arquivos - As tabelas se ajustam automaticamente à grade monoespaçada e funcionam de forma responsiva
- No entanto, as colunas que podem se expandir ficam limitadas a uma única coluna
- Formulários também são suportados e são posicionados sobre a mesma grade de caracteres junto com outros elementos padrão
- Ao adicionar a classe
grida um contêiner, as células dividem o espaço horizontal de forma uniforme- Como a característica monoespaçada é preservada, a largura total nem sempre chega a 100%
- Para fazer uma célula específica preencher o espaço restante, defina
flex-grow: 1;nessa célula
- É possível desenhar figuras em estilo ASCII usando a tag
<pre>e box-drawing characters- Você pode envolvê-las com
<figure>e<figcaption>para destacá-las mais - Os exemplos incluem um diagrama de transmissão de mensagens e um gráfico de barras
- Você pode envolvê-las com
- Objetos de mídia como imagens e vídeos também são suportados
- Eles se expandem até a largura da página, e um preenchimento inferior é adicionado para manter a grade monoespaçada
- Todo o código-fonte está disponível em github.com/owickstrom/the-monospace-web
- A inspiração de design vem da U.S. Graphics Company
1 comentários
Opiniões no Hacker News
Estou reunindo uma lista de páginas em largura fixa: https://wonger.dev/posts/monospace-dump#web. Por enquanto há cerca de 50
O tratamento de espaçamento é difícil, e abrir mão de fontes proporcionais também faz perder um pouco de legibilidade
Acho que o kerning em fontes proporcionais faz uma grande diferença para os olhos reconhecerem a forma de grupos de letras
Texto monoespaçado funciona bem em lugares estruturados e com destaque, como editores de código, mas é melhor evitá-lo em textos longos
Ainda assim, ele fica realmente bonito especialmente em tabelas Unicode e arte ASCII
Por exemplo, era algo como
15 space, 1 V, 3 U, 1 V,15 space, 5 U,12 space, 2 x, 5 U, 2 x; depois de umas 250 linhas, aparecia uma imagem do Jordan enterrando uma bola, que dava para imprimirParece a thread perfeita para fazer esta pergunta. Vi há alguns anos um texto, talvez um guia de videogame, escrito para ser lido em fonte monoespaçada, e milhares de linhas inteiras estavam perfeitamente justificadas dos dois lados apenas pela escolha das palavras
Alguém sabe o que era e tem o link?
[0] http://www.catb.org/esr/jargon/html/B/bricktext.html
É meio surpreendente que esse conceito tenha desaparecido completamente dos resultados de busca do Google
https://github.com/laravel/laravel/blob/11.x/config/database...
Há anos quero criar uma extensão para o Visual Studio Code que justifique comentários enquanto eu digito, inclusive com hifenização, permitindo espaços extras quando necessário
Além de pesquisar um pouco algoritmos e bibliotecas relacionados, não cheguei a começar, porque parece bem complexo
Tentei usar coisas como
fmtoupar, mas no fim aceitei que, a menos que eu faça manualmente, preciso desistir de comentários bem alinhados; muitas vezes uma pequena alteração exige retrabalhar várias linhas, o que toma tempo demaisNão quero quebrar identificadores longos no meio da linha se puder evitar, e também teria de lidar com listas aninhadas, tabelas, blocos de código, arte ASCII dentro de comentários, distinguir hífens dentro de palavras de hífens usados para hifenização, além de comentários estruturados como comentários de documentação XML ou tags Javadoc
Depois de ver o Badness 0 do Tom7, pensei até em jogar um LLM no problema, mas, se precisa funcionar em tempo real e não pode criar comentários alucinados, acho que ainda não é prático
Já existe algo assim, ou alguma base que evite que criar essa extensão vire um projeto de um ano?
O monoespaçado em si não me incomoda
O que incomoda são as quebras de linha forçadas
Alguns sites “retrô” acabam, na prática, usando a tag
preNo celular, vira uma parede de texto em fonte pequena, o modo de leitura não funciona, e, se você virar a tela para a horizontal, pode ou não aparecer uma barra de rolagem
Minha quase única reclamação sobre listas de e-mail técnicas hoje em dia também são as quebras de linha forçadas e os layouts rígidos
Em um vídeo que vi hoje, chamavam isso de indie web; diziam que é uma filosofia de se opor aos algoritmos e abraçar as coisas que tornavam a web antiga excelente
Coisas como RSS, blogs pessoais, fóruns e webrings
Eu mesmo comecei um, e é uma sensação muito boa
É bom que seja bonito, semântico e responsivo, mas, no fundo, fontes monoespaçadas não são muito boas para texto corrido.
Já li posts de blog em vários sites com corpo em fonte monoespaçada e até achei ok, mas, para mim, o caminho certo é usar fonte proporcional.
Acho muito melhor do que aquelas páginas “bonitas” que tentam evocar revistas impressas antigas.
No meu blog uso monoespaçada porque tenho baixa visão e uso configurações de zoom, mas acho acessibilidade importante e sempre fico me perguntando qual seria a opção mais legível para todo mundo.
Tirando o resto, acho que a classe CSS
tree ul-listé tão boa que poderia entrar na especificação do HTML como tag. É um componente extremamente útil.O espaçamento entre linhas é estreito demais, o que prejudica a legibilidade. Parágrafos longos com texto tão apertado são difíceis de ler.
Mas tabelas e gráficos de caracteres precisam desse entrelinhamento estreito.
O problema é usar a mesma grade de caracteres tanto para gráficos quanto para texto.
Talvez dê para amenizar usando uma fonte com x-height especialmente baixa, deixando mais espaço acima e abaixo das letras.
Sobre a altura da linha, concordo. Com fonte de 16px e 19,2px de altura, é só 1,2x, então fica apertado demais. Se aumentar para 24px, melhora bastante.
Dito isso, aos meus olhos uma altura de linha maior não parece afetar tabelas ou gráficos de caracteres. Com esse ajuste, o estilo monoespaçado sobrevive muito bem.
Edição: acho que entendi o ponto. Isso quebra o conceito de grade fixa do autor. Dá para conferir adicionando
line-height: 24pxao elementope ativando o “debug mode” do autor para ver a grade.javascript: (function() {(function() {const textElements = document.querySelectorAll('p, span, h1, h2, h3, h4, h5, h6, li, td, th');textElements.forEach((element) => {const textColor = getComputedStyle(element).getPropertyValue('color');element.style.fontFamily = 'system-ui, -apple-system, sans-serif';element.style.WebkitTextStroke = \0.4px ${textColor}`;});location.hash = "";history.replaceState("", "", location.pathname);})();})();`https://caiorss.github.io/bookmarklet-maker/
Isso porque palavras em monoespaçada acabam tendo “formas” mais parecidas do que palavras em fonte proporcional.
Há alguns anos, o OpenBSD passou a configurar a fonte do console como Spleen.
É uma pena que não haja uma versão TrueType.
https://github.com/fcambus/spleen
O chamado VIC article, um material sobre C64 ainda famoso hoje, é disponibilizado em monoespaçada.
https://www.cebix.net/VIC-Article.txt
O principal problema é a saída.
Como esse texto usa diagramas que exigem referências fixas em um espaço bidimensional, aqui a monoespaçada é muito importante.
Esse texto é uma das referências técnicas mais importantes sobre o C64, e 99% dos efeitos de demos técnicas podem ser decompostos nos truques básicos que estão nele.
Estou pensando em mudar a fonte do meu site pessoal para monoespaçada.
Alguém conhece uma fonte monoespaçada especialmente boa para legibilidade em textos longos?
Melhor ainda se estiver no Google Fonts.
Não está no Google Fonts, mas é gratuita, ou a versão de fonte variável é bem barata.