लेआउट इंजन

लेआउट इंजन

लेआउट लेयर एक स्टाइल्ड DOM को ज्योमेट्री में बदलती है: एक बॉक्स ट्री, फिर आकार और स्थितियों के साथ फ्रैगमेंट। यह गणना किए गए स्टाइल्स के बाद का चरण है, और इसके आउटपुट साधारण Python ऑब्जेक्ट्स होते हैं जिन्हें आप निरीक्षण कर सकते हैं।


DOM से बॉक्स ट्री तक

build_box_tree() एक BoxRoot BoxNode प्रविष्टियों का उत्पन्न करता है, प्रत्येक तत्व के डिस्प्ले मॉडल को classify_display() के माध्यम से Display एन्‍युमरेशन के विरुद्ध वर्गीकृत करता है। ComputedStyle और EdgeSizes प्रति-बॉक्स स्टाइल और बॉक्स-मॉडल माप को धारण करते हैं।

ब्लॉक लेआउट

layout_block_tree() बॉक्स ट्री पर ब्लॉक-लेवल लेआउट करता है, एक FragmentRoot उत्पन्न करता है जिसमें BlockFragment प्रविष्टियाँ समाधानित ज्योमेट्री के साथ होती हैं।

इनलाइन लेआउट

इनलाइन सामग्री को ShapedRun और InlineTextFragment टुकड़ों में ढाला जाता है, जिसे layout_inline_fragments() और flush_inline_run() के माध्यम से LineFragment पंक्तियों में संयोजित किया जाता है।

Pagination

paginate_fragments() फ्रैगमेंट आउटपुट को PageFragment पृष्ठों में विभाजित करता है, BreakHints का सम्मान करते हुए, PageMarginBoxes पृष्ठ-मार्जिन क्षेत्रों को मॉडल करता है और flush_page() प्रत्येक पृष्ठ को अंतिम रूप देता है।


टिप्स और सर्वोत्तम प्रथाएँ

  • लेआउट से पहले संगणित शैलियों को हल करें — बॉक्स ट्री स्टाइल किए गए तत्वों से प्राप्त होता है।
  • जब बॉक्स के आयाम गलत दिखें तो EdgeSizes की जाँच करें; मार्जिन और पैडिंग वहीं हल होते हैं।
  • अपने मानसिक मॉडल में बॉक्स ट्री और फ्रैगमेंट ट्री को अलग रखें: बॉक्स संरचना का वर्णन करते हैं, फ्रैगमेंट रखी गई ज्यामिति का वर्णन करते हैं।

सामान्य समस्याएँ

समस्याकारणसमाधान
खाली फ्रैगमेंट आउटपुटलेआउट अनस्टाइल्ड या खाली ट्री पर चलाया गयापहले स्टाइलशीट्स और कंटेंट संलग्न करें
अनपेक्षित डिस्प्ले वर्गीकरणएलिमेंट का गणना किया गया display अनुमान से अलग हैबॉक्स के लिए classify_display() परिणाम जाँचें
पृष्ठ विभाजन असामान्य स्थानों परब्रेक संकेत सेट नहीं हैंBreakHints को paginate_fragments() तक प्रदान करें

FAQ

बॉक्स और फ्रैगमेंट में क्या अंतर है?

बॉक्स (BoxNode) शैली से प्राप्त लेआउट संरचना का वर्णन करते हैं; फ्रैगमेंट (BlockFragment, LineFragment) ज्यामिति के साथ रखे गए परिणाम होते हैं।

क्या इंजन पेजिनेशन संभालता है?

हाँ — paginate_fragments() PageFragment पृष्ठों को मार्जिन बॉक्स के साथ बनाता है।

टेक्स्ट रन कहाँ से आते हैं?

इनलाइन कंटेंट को ShapedRun वस्तुओं में आकार दिया जाता है और उन्हें LineFragment लाइनों में संकलित किया जाता है।


API Reference सारांश

क्लास/मेथडविवरण
build_box_treeस्टाइल्ड DOM से बॉक्स ट्री प्राप्त करें
layout_block_treeबॉक्स ट्री पर ब्लॉक लेआउट चलाएँ
layout_inline_fragmentsइनलाइन कंटेंट को पंक्तियों में संयोजित करें
paginate_fragmentsफ़्रैगमेंट्स को पृष्ठों में विभाजित करें
BoxNodeलेआउट संरचना में एक बॉक्स
PageFragmentएक व्यवस्थित पृष्ठ

यह भी देखें

 हिन्दी