समस्या
- जब HTML और CSS के साथ हाथ से कोड करके वेबसाइट बनाई जाती है, तब syntax highlighting करना कठिन होता है
- कोड snippets को आसानी से पढ़ने और समझने के लिए उन्हें रंगों से highlight करना चाहते हैं
- आम तौर पर Prism या highlight.js जैसी जटिल syntax highlighting लाइब्रेरी इस्तेमाल करनी पड़ती है
- बाहरी scripts का उपयोग किए बिना हाथ से कोड करना चाहते हैं
OpenType फीचर्स का उपयोग करके फ़ॉन्ट के भीतर ही syntax highlighting जोड़ना
- Monaspace Krypton नाम के open source फ़ॉन्ट को संशोधित करके हर character के color versions शामिल किए गए
- OpenType की COLR table और contextual substitution फीचर का उपयोग करके खास strings को खोजकर बदला गया
- नतीजतन, फ़ॉन्ट के भीतर ही बिल्ट-इन एक सरल syntax highlighter तैयार हुआ
फायदे और नुकसान
फायदे
- इंस्टॉल करना आसान: फ़ॉन्ट import करें और OpenType COLR (color) तथा CALT (contextual substitution) फीचर्स को सक्रिय कर दें
- JavaScript की ज़रूरत नहीं
- CSS theme की ज़रूरत नहीं
- plain text जितना तेज़
<pre> और <code> tags में code snippets जोड़े जा सकते हैं
- साफ़-सुथरा HTML source code
- InDesign जैसे OpenType फीचर्स सपोर्ट करने वाले हर स्थान पर काम करता है
- maintenance या updates की ज़रूरत नहीं
<textarea> और <input> में भी काम करता है
नुकसान
- color palette बदलने या language support जोड़ने जैसे बदलावों के लिए फ़ॉन्ट फ़ाइल को ही संशोधित करना पड़ता है
- केवल वहीं काम करता है जहाँ OpenType सपोर्ट हो
- OpenType contextual substitution से pattern matching बुनियादी स्तर की है, और regex इस्तेमाल करने वाली scripts से इसकी तुलना नहीं की जा सकती
यह वास्तव में कैसे काम करता है
- OpenType COLR table और contextual substitution फीचर का उपयोग किया जाता है
- COLR table बहुरंगी फ़ॉन्ट को संभव बनाती है
- contextual substitution पास-पड़ोस के characters को पहचानकर उन्हें बदलती है
- उदाहरण: JavaScript keyword
if को खोजकर उसके color variant से बदल देना
GN⁺ का सार
- यह लेख हाथ से वेबसाइट कोड करते समय syntax highlighting लागू करने का एक नया तरीका प्रस्तुत करता है
- OpenType फीचर्स का उपयोग करके फ़ॉन्ट में ही syntax highlighting एम्बेड की जाती है, जिससे JavaScript या CSS theme के बिना भी syntax highlighting संभव होती है
- यह तरीका सरल syntax highlighting के लिए उपयुक्त है, लेकिन जटिल syntax highlighting लाइब्रेरी की तुलना में इसकी सीमाएँ हैं
- समान सुविधा देने वाले प्रोजेक्ट्स में Prism, highlight.js आदि शामिल हैं
1 टिप्पणियां
Hacker News राय
दिलचस्प हैक है
font-feature-settings: "colr", "calt";सेटिंग का कोई मतलब नहीं बनताcolrफीचर टैग OpenType layout table में मौजूद नहीं हैcaltफीचर डिफ़ॉल्ट रूप से सक्षम रहता हैमूल टेक्स्ट जस का तस बना रहता है
मैं OpenType विशेषज्ञ नहीं हूँ, इसलिए fallback logic को बेहतर किया जा सकता है
यह हैक भयानक है, लेकिन चौंकाने वाला भी
शानदार हैक है
पेज के नीचे अच्छा संदेश है
लगता है इसे code से automate किया जा सकता है
Chromium-आधारित browsers में bug है
color: blueटाइप करने पर सिर्फrhighlight होता हैयह सचमुच शानदार फीचर है
लगता है parser generator जैसी किसी चीज़ की ज़रूरत होगी
सचमुच हैरान कर देने वाला फीचर है