Lay-outengine

Lay-outengine

De lay-outlaag zet een gestylede DOM om in geometrie: een boxboom, daarna fragmenten met afmetingen en posities. Het is de fase na berekende stijlen, en de uitvoer bestaat uit platte Python-objecten die je kunt inspecteren.


Van DOM naar Boxboom

build_box_tree() produceert een BoxRoot van BoxNode items uit een gestyled document, waarbij elk elementmodel wordt geclassificeerd via classify_display() tegen de Display-enumeratie. ComputedStyle en EdgeSizes dragen de per-box stijl- en boxmodelmetingen.

Bloklay-out

layout_block_tree() voert blokniveau lay-out uit over de boxboom, en produceert een FragmentRoot die BlockFragment items bevat met opgeloste geometrie.

Inline lay-out

Inline-inhoud wordt gevormd tot ShapedRun en InlineTextFragment stukken, samengevoegd tot LineFragment regels via layout_inline_fragments() en flush_inline_run().

Pagination

paginate_fragments() splitst fragmentoutput in PageFragment pagina’s, met inachtneming van BreakHints, waarbij PageMarginBoxes de paginamarge-gebieden modelleert en flush_page() elke pagina afrondt.


Tips en best practices

  • Los berekende stijlen op vóór layout — de boxboom wordt afgeleid van gestileerde elementen
  • Inspecteer EdgeSizes wanneer de afmetingen van de box er verkeerd uitzien; marges en opvulling worden daar opgelost
  • Houd de boxboom en fragmentboom gescheiden in je mentale model: boxen beschrijven structuur, fragmenten beschrijven geplaatste geometrie

Veelvoorkomende problemen

ProbleemOorzaakOplossing
Lege fragmentoutputLayout uitgevoerd op een niet-gestylede of lege boomStylesheets en inhoud eerst koppelen
Onverwachte weergaveclassificatieBerekende display van element verschilt van de aannameControleer classify_display() resultaat voor de box
Pagina-einden op vreemde plaatsenBreak hints niet ingesteldLever BreakHints aan paginate_fragments()

FAQ

Wat is het verschil tussen een box en een fragment?

Boxen (BoxNode) beschrijven de lay-outstructuur afgeleid van stijlen; fragmenten (BlockFragment, LineFragment) zijn de geplaatste resultaten met geometrie.

Ondersteunt de engine paginering?

Ja — paginate_fragments() produceert PageFragment pagina’s met margin boxes.

Waar komen text runs vandaan?

Inline-inhoud wordt gevormd tot ShapedRun-objecten en samengevoegd tot LineFragment-regels.


API Reference Samenvatting

Klasse/MethodeBeschrijving
build_box_treeLeid de boxboom af uit een gestylede DOM
layout_block_treeVoer bloklay-out uit over de boxboom
layout_inline_fragmentsStel inline-inhoud samen tot regels
paginate_fragmentsSplits fragmenten in pagina’s
BoxNodeÉén box in de lay-outstructuur
PageFragmentEén opgemaakte pagina

Zie ook

 Nederlands