Dropflow का परिचय
- Dropflow एक CSS layout engine है, जिसे बुनियादी CSS standards (inline, block, float, positioning, table आदि) के दायरे को समझने और परखने के लिए बनाया गया है।
- यह उच्च-गुणवत्ता वाले text layout implementation को सपोर्ट करता है और दुनिया की कई भाषाओं को प्रदर्शित कर सकता है।
- इसका उपयोग backend में Node और node-canvas के साथ PDF या image बनाने के लिए, या browser में canvas पर rich और wrapped text render करने के लिए किया जा सकता है।
मुख्य विशेषताएँ
float जैसी जटिल 30 से अधिक properties का समर्थन
- bidirectional और RTL text का समर्थन
- HTML और CSS स्वीकार करने के अलावा, object के रूप में style देने वाली Hyperscript(
h()) API का समर्थन
- सभी OpenType/TrueType buffers को register करना आवश्यक है
- grapheme स्तर पर font fallback
- रंगीन pronunciation marks का समर्थन
- बेहतर line breaking (जैसे: अगली पंक्ति की शुरुआत में padding को स्थानांतरित करना)
- optimized shaping
- inherited और cascaded styles की गणना दो बार नहीं की जाती
- CSS layout के जितने संभव edge cases हैं, उनका हैंडलिंग
- पूर्ण typing
- बहुत सारे tests
- तेज़
समर्थित CSS नियम
- inline formatting:
color, direction, font-family, font-size, font-stretch, font-style, font-weight, line-height, text-align, vertical-align, white-space आदि properties काम करती हैं।
- block formatting:
clear, float properties काम करती हैं।
- box और positioning:
background-clip, background-color, border-color, border-style, border-width, top, right, bottom, left, box-sizing, display, height, margin, padding, position, width, z-index आदि properties काम करती हैं।
उपयोग का तरीका
- Dropflow inherited और computed styles वाले DOM पर काम करता है।
h() function का उपयोग करके DOM बनाया जाता है, और style को सामान्य object के रूप में दिया जाता है।
- layout से पहले fonts को register करना एक अनिवार्य चरण है।
- canvas के पूरे आकार पर layout करके drawing की जा सकती है।
प्रदर्शन विशेषताएँ
- performance, correctness के बाद सबसे महत्वपूर्ण लक्ष्य है।
- कई उदाहरणों के ज़रिए performance की पुष्टि की जा सकती है।
- 2019 MacBook Pro पर HTML को image में बदलने में 9ms, और 2012 MacBook Pro पर 13ms लगते हैं।
- 'The Little Prince' को HTML से image में बदलने में 2019 MacBook Pro पर 160ms से कम, और 2012 MacBook Pro पर 250ms से कम समय लगता है।
- 10-अक्षरों वाले शब्द को generate और layout करने में (drawing छोड़कर) 2019 MacBook Pro पर 25µs से कम, और 2012 MacBook Pro पर 50µs से कम समय लगता है।
- Hyperscript API का उपयोग करने पर HTML और CSS parsing चरण को छोड़कर सीधे DOM बनाया जा सकता है, जिससे सबसे तेज़ performance मिलती है।
API
- font registration और DOM creation पहले दो चरण हैं।
- DOM को canvas पर render किया जा सकता है, या यदि layout बनाए रखना हो तो lower-level functions का उपयोग किया जा सकता है।
HarfBuzz
- glyph layout, WebAssembly में compile किए गए HarfBuzz द्वारा किया जाता है।
- इससे
measureText API का उपयोग करते समय संभव न होने वाली सटीकता हासिल की जा सकती है।
आभार
- dropflow की
package.json dependencies नहीं हैं, लेकिन यह कई अन्य projects की बदौलत संभव हुआ है।
- Javascript dependencies को project के अनुरूप संशोधित करके check in किया गया है।
GN⁺ की राय
- Dropflow वेब developers के लिए CSS layout की जटिलता को संभालने और browser तथा backend दोनों में एकसमान text layout देने वाला एक नया tool है।
- इस तरह के tools खासकर उन internationalized web applications के विकास में उपयोगी हो सकते हैं, जिन्हें कई भाषाओं और fonts का समर्थन करना होता है।
- HarfBuzz का उपयोग text rendering की सटीकता को काफ़ी बेहतर बना सकता है, लेकिन WebAssembly तकनीक से परिचित न होने वाले developers के लिए यह प्रवेश बाधा बन सकता है।
- समान कार्यक्षमता देने वाले अन्य projects में CSS Grid और Flexbox का उपयोग करने वाली layout libraries शामिल हैं, लेकिन Dropflow अधिक पारंपरिक CSS layout पद्धति पर केंद्रित है।
- Dropflow अपनाने से पहले performance और compatibility को ध्यान में रखते हुए यह आकलन करना चाहिए कि यह project की आवश्यकताओं के साथ कितना मेल खाता है।
3 टिप्पणियां
मूल शीर्षक शायद यह था: "Show HN: Dropflow, a CSS layout engine for node or <canvas>". अभी यह "GN⁺: HN परिचय: node या <canvas> के लिए CSS लेआउट इंजन, Dropflow</canvas>" के रूप में दिख रहा है।
शीर्षक में टैग हैं, इसलिए डिटेल पेज का
titleवाला हिस्सा टूट रहा है.. haha, escape करना चाहिए..Hacker News टिप्पणी