Düzen Motoru
Düzen Motoru
Düzen katmanı, stillendirilmiş bir DOM’u geometriye dönüştürür: bir kutu ağacı, ardından boyut ve konumlara sahip parçacıklar. Bu, hesaplanmış stillerden sonraki aşamadır ve çıktıları, inceleyebileceğiniz basit Python nesneleridir.
DOM’dan Kutu Ağacına
build_box_tree(), stillendirilmiş bir belgeden BoxNode girdi içeren bir BoxRoot üretir, her öğenin görüntüleme modelini classify_display() aracılığıyla Display sayımıyla karşılaştırarak sınıflandırır. ComputedStyle ve EdgeSizes, kutu başına stil ve kutu-model ölçümlerini taşır.
Blok Düzeni
layout_block_tree(), kutu ağacı üzerinde blok düzeyinde yerleşim gerçekleştirir, çözümlenmiş geometriye sahip BlockFragment girdi içeren bir FragmentRoot üretir.
Satır içi Düzeni
Satır içi içerik ShapedRun ve InlineTextFragment parçalarına şekillendirilir, layout_inline_fragments() ve flush_inline_run() aracılığıyla LineFragment satırlarına birleştirilir.
Pagination
paginate_fragments(), PageFragment sayfaya bölerek BreakHints‘ye saygı gösterir, PageMarginBoxes sayfa kenar boşluğu alanlarını modeller ve flush_page() her sayfayı tamamlar.
İpuçları ve En İyi Uygulamalar
- Hesaplanan stilleri yerleşimden önce çözümleyin — kutu ağacı biçimlendirilmiş öğelerden türetilir.
- Kutu boyutları yanlış göründüğünde
EdgeSizes‘ı inceleyin; kenar boşlukları ve doldurma burada çözülür. - Zihinsel modelinizde kutu ağacını ve parça ağacını ayrı tutun: kutular yapıyı tanımlar, parçalar yerleştirilmiş geometrileri tanımlar.
Yaygın Sorunlar
| Sorun | Neden | Düzeltme |
|---|---|---|
| Boş parça çıktısı | Stilsiz veya boş bir ağaç üzerinde düzen çalıştırma | Önce stil sayfalarını ve içeriği ekleyin |
| Beklenmeyen görüntü sınıflandırması | Öğenin hesaplanan display varsayımdan farklı | Kutunun classify_display() sonucunu kontrol edin |
| Sayfa sonları garip yerlerde | Kesme ipuçları ayarlanmamış | BreakHints’ı paginate_fragments()’e sağlayın |
FAQ
Bir box ile bir fragment arasındaki fark nedir?
Box’lar (BoxNode) stilleri temel alan yerleşim yapısını tanımlar; fragment’ler (BlockFragment, LineFragment) geometrik yerleşim sonuçlarıdır.
Motor sayfalama işlemini yönetiyor mu?
Evet — paginate_fragments(), kenar kutularıyla PageFragment sayfa üretir.
Metin akışları nereden gelir?
Satır içi içerik ShapedRun nesnelerine şekillendirilir ve LineFragment satırlara birleştirilir.
API Reference Özeti
| Sınıf/Yöntem | Açıklama |
|---|---|
build_box_tree | Stil verilen bir DOM’dan kutu ağacını türet |
layout_block_tree | Kutu ağacı üzerinde blok yerleşimini çalıştır |
layout_inline_fragments | Satır içi içeriği satırlara birleştir |
paginate_fragments | Parçaları sayfalara böl |
BoxNode | Yerleşim yapısında bir kutu |
PageFragment | Bir düzenlenmiş sayfa |