Monospace Web
(owickstrom.github.io)- कैरक्टर-आधारित ग्रिड पर वेब elements को align करके, text, table, diagram और media को 1970 के दशक की terminal aesthetics के करीब दिखाने वाला एक experimental page है
- सरल Markdown दस्तावेज़ों को Pandoc से convert किया जाता है, और CSS तथा बहुत कम JavaScript के साथ semantic HTML को monospace grid पर render किया जाता है
- responsive handling pixels के बजाय character-size units में सिकुड़ने के तरीके से होती है, और tables grid के अनुसार अपने-आप adjust हो जाती हैं, लेकिन expand होने वाली columns की संख्या एक तक सीमित है
- यह सामान्य paragraphs, separators,
<details>, lists, tree-style lists, tables, forms,gridcontainers,<pre>-आधारित ASCII drawings, images और videos जैसे standard elements को संभालता है - पूरा source code GitHub पर public है, इसलिए ज़रूरत के मुताबिक हिस्सों को license conditions के अनुसार fork या copy करके इस्तेमाल किया जा सकता है
कैरेक्टर ग्रिड से बनी वेब पेज
- Monospace fonts कुछ users को proportional fonts की तुलना में अधिक readable, consistent और सुंदर लग सकते हैं
- यह page सभी elements को monospace web के रूप में बनाकर देखने का एक technical और creative experiment है
- implementation में Markdown documents को Pandoc से convert करने के बाद, CSS और थोड़ी JavaScript के साथ semantic HTML को character grid पर रखा जाता है
- responsive layout स्क्रीन की चौड़ाई के अनुसार pixels के बजाय character-size units में सिकुड़ता है
- लक्ष्य यह है कि standard HTML elements बिना अलग से जटिल काम किए monospace grid के भीतर स्वाभाविक रूप से काम करें
समर्थित elements और layout का तरीका
- मूल markup में सामान्य paragraphs, horizontal separators और
<details>elements शामिल हैं - lists में सामान्य bullet lists और ordered lists का समर्थन है, और
treeclass लगी unordered lists के ज़रिए file system जैसी दिखने वाली tree structure दिखाई जा सकती है - tables monospace grid के अनुसार अपने-आप adjust होती हैं और responsive तरीके से काम करती हैं
- हालांकि expand होने वाली सिर्फ एक column की अनुमति है
- forms भी supported हैं, और उन्हें दूसरे standard elements के साथ उसी character grid पर रखा जाता है
- container में
gridclass जोड़ने पर cells क्षैतिज जगह को बराबर बाँटते हैं- monospace विशेषता बनाए रखने के कारण कुल चौड़ाई हमेशा 100% नहीं भी हो सकती
- अगर किसी खास cell को बची हुई जगह भरनी हो, तो उस cell पर
flex-grow: 1;सेट किया जाता है
<pre>tag और box-drawing characters का उपयोग करके ASCII-style drawings बनाई जा सकती हैं- इन्हें
<figure>और<figcaption>में wrap करके अधिक उभरता हुआ बनाया जा सकता है - उदाहरण के तौर पर message-passing diagram और bar chart शामिल हैं
- इन्हें
- images और videos जैसे media objects भी supported हैं
- वे page की चौड़ाई तक फैलते हैं, और monospace grid बनाए रखने के लिए नीचे padding जोड़ी जाती है
- पूरा source code github.com/owickstrom/the-monospace-web पर public है
- design inspiration का स्रोत U.S. Graphics Company है
1 टिप्पणियां
Hacker News की राय
fixed-width पेजों की सूची इकट्ठा कर रहा हूं: https://wonger.dev/posts/monospace-dump#web. अभी करीब 50 हैं
spacing संभालना मुश्किल है, और proportional-width font छोड़ने पर readability भी कुछ हद तक खो जाती है
मुझे लगता है कि proportional-width font की kerning आंखों को अक्षरों के समूहों का आकार पहचानने में बड़ा फर्क डालती है
fixed-width text, code editor जैसी संरचित और highlighted जगहों में ठीक है, लेकिन लंबे लेखों में इससे बचना बेहतर है
फिर भी खासकर Unicode charts और ASCII art में यह सचमुच सुंदर लगता है
जैसे
15 space, 1 V, 3 U, 1 V,15 space, 5 U,12 space, 2 x, 5 U, 2 xजैसी चीजें होती थीं, और करीब 250 lines पूरी करने पर Jordan के dunk करने की तस्वीर बनती थी, जिसे print कर सकते थेयह सवाल पूछने के लिए बिल्कुल सही thread लगता है. कुछ साल पहले मैंने शायद किसी video game walkthrough जैसा एक लेख देखा था, जिसे fixed-width font में पढ़ने के लिए लिखा गया था, और हजारों lines पूरी तरह सिर्फ शब्दों के चुनाव से perfectly justified थीं
किसी को पता है कि वह क्या था और link है?
[0] http://www.catb.org/esr/jargon/html/B/bricktext.html
Google search results से यह concept पूरी तरह गायब हो गया है, यह थोड़ा हैरान करता है
https://github.com/laravel/laravel/blob/11.x/config/database...
कई सालों से Visual Studio Code extension के रूप में ऐसी feature बनाना चाहता था जो typing के दौरान comments को hyphenation समेत justify करे, और जरूरत पड़ने पर extra spaces भी allow करे
इससे जुड़े algorithms और libraries थोड़ा खोजने के अलावा शुरू नहीं कर पाया, क्योंकि यह काफी complex लगता था
fmtयाparजैसी चीजें इस्तेमाल करने की कोशिश की, लेकिन आखिर में मान लिया कि manually किए बिना सुंदर aligned comments छोड़ने होंगे, और एक छोटी change भी अक्सर कई lines फिर से करने पर मजबूर कर देती है, इसलिए बहुत समय लगता हैलंबे identifiers को अगर हो सके तो line के बीच में तोड़ना नहीं चाहता, और nested lists, tables, code blocks, comments के अंदर ASCII art, words के अंदर hyphen और hyphenation में आए hyphen के बीच फर्क, XML documentation comments या Javadoc tags जैसे structured comments भी handle करने होंगे
Tom7 का Badness 0 देखकर LLM आजमाने का भी सोचा, लेकिन अगर इसे realtime में काम करना हो और hallucinated comments नहीं चाहिए हों, तो मुझे यह अभी practical नहीं लगता
क्या ऐसी feature पहले से मौजूद है, या कोई ऐसा आधार है जिससे extension बनाना 1 साल का काम न बन जाए?
fixed-width अपने आप में परेशान नहीं करता
परेशान करने वाली चीज forced line breaks है
कुछ “retro” websites असल में
pretag इस्तेमाल करती हैंphone पर यह छोटे font वाली text wall बन जाती है, reading mode काम नहीं करता, और landscape करने पर scrollbar आ भी सकता है और नहीं भी
आजकल tech mailing lists से मेरी लगभग इकलौती शिकायत भी forced line breaks और rigid layout ही है
आज देखे एक video में इसे indie web कहा जा रहा था, और बताया गया कि यह algorithms के खिलाफ और पुराने web को शानदार बनाने वाली चीजों को अपनाने की philosophy है
RSS, personal blogs, forums, webrings जैसी चीजें
मैंने भी अपना एक शुरू किया है और काफी अच्छा महसूस होता है
दिखने में अच्छा, semantic और responsive होना ठीक है, लेकिन मूल रूप से monospace font body text के लिए बहुत अच्छा नहीं होता
मैंने कई साइटों पर monospace body वाले blog posts पढ़े हैं और वे ठीक-ठाक थे, लेकिन मेरे हिसाब से proportional width ही सही दिशा है
पुराने print magazine जैसा एहसास देने की कोशिश करने वाले “खूबसूरत” pages की तुलना में मुझे यह कहीं बेहतर लगता है
अपने blog में मैं monospace इस्तेमाल करता हूँ क्योंकि मेरी दृष्टि अच्छी नहीं है और मैं zoom settings इस्तेमाल करता हूँ, लेकिन accessibility को महत्वपूर्ण मानता हूँ, इसलिए हमेशा सोचता हूँ कि सभी के लिए ज़्यादा readable विकल्प क्या होगा
बाकी सब छोड़ें तो
tree ul-listCSS class इतनी अच्छी है कि HTML specification में tag के रूप में शामिल होने लायक है। यह बेहद useful component हैline spacing बहुत कम है, जिससे readability पर बुरा असर पड़ता है। ऐसे सघन body text के लंबे paragraphs पढ़ना मुश्किल है
लेकिन tables और character graphics को इसी तरह की कम line-height चाहिए होती है
समस्या यह है कि graphics और text दोनों के लिए वही character grid इस्तेमाल की जा रही है
शायद ऐसे font का इस्तेमाल करने से बात कुछ संभल सकती है जिसकी x-height खासकर कम हो और जो अक्षरों के ऊपर-नीचे ज़्यादा खाली जगह छोड़े
line height पर मैं सहमत हूँ। 16px font size पर 19.2px सिर्फ 1.2x है, इसलिए बहुत घुटा-घुटा लगता है। इसे 24px करने से काफी सुधार होता है
हालांकि मेरी नज़र में बड़ी line height tables या character graphics को प्रभावित नहीं करती। ऐसा adjustment डालने पर monospace style काफी अच्छी तरह बची रहती है
संपादन: लगता है बात समझ आ गई। यह author के fixed grid concept को तोड़ता है।
pelement मेंline-height: 24pxडालकर और author का “debug mode” ऑन करके grid देखने पर यह साफ हो जाता है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/
क्योंकि monospace words के “shapes” proportional words की तुलना में ज़्यादा मिलते-जुलते हो जाते हैं
OpenBSD ने कुछ साल पहले से console font को Spleen पर set करना शुरू किया है
अफसोस है कि इसका TrueType version नहीं है
https://github.com/fcambus/spleen
आज भी मशहूर C64 resource, तथाकथित VIC article, monospace में उपलब्ध है
https://www.cebix.net/VIC-Article.txt
मुख्य समस्या output है
यह लेख ऐसे diagrams इस्तेमाल करता है जिन्हें 2D space में fixed references की जरूरत होती है, इसलिए यहाँ monospace बहुत महत्वपूर्ण है
यह C64 के सबसे महत्वपूर्ण technical references में से एक है, और technical demo effects के 99% को यहाँ मौजूद basic tricks में तोड़ा जा सकता है
सोच रहा हूँ कि अपनी personal website का font monospace में बदल दूँ
क्या किसी को ऐसा monospace font पता है जिसकी लंबे लेखों की readability खास तौर पर अच्छी हो?
Google Fonts पर हो तो और अच्छा
Google Fonts पर नहीं है, लेकिन free है, या variable font version भी काफी सस्ता है