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

SorunNedenDü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 yerlerdeKesme 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öntemAçıklama
build_box_treeStil verilen bir DOM’dan kutu ağacını türet
layout_block_treeKutu ağacı üzerinde blok yerleşimini çalıştır
layout_inline_fragmentsSatır içi içeriği satırlara birleştir
paginate_fragmentsParçaları sayfalara böl
BoxNodeYerleşim yapısında bir kutu
PageFragmentBir düzenlenmiş sayfa

Ayrıca Bakınız

 Türkçe