mały|Zrzut ekranu strony Wikipedii wyświetlonej za pomocą przeglądarki Konqueror opartej na KHTML. KHTML – zarchiwizowany w 2023 roku silnik wyświetlania (renderowania) stron internetowych rozwijany przez społeczność programistów KDE. Udostępniony na licencji wolnego i otwartego oprogramowania.
Wykorzystanie Silnik KHTML stworzony został dla przeglądarki Konqueror, ale był wykorzystywany także w przeglądarkach systemów takich jak AtheOS/Syllable (ABrowse), MorphOS (Sputnik) czy Symbian (MiniMap).
WebKit, silnik używany między innymi przez Apple w przeglądarce Safari, jest bezpośrednim forkiem KHTML, podobnie jak Blink. Powszechną opinią jest jakoby KHTML był podwaliną powszechnie używanych przeglądarek, takich jak Google Chrome czy Microsoft Edge.
Architektura Silnik KHTML został napisany w języku C++ i był rozpowszechniany na warunkach licencji GNU LGPL. Obsługiwał HTML 4, HTML 5, XHTML, CSS 1, 2 i 3, DOM i JavaScript, oraz wtyczki Netscape/Mozilli (Flash, Java itp.). Do silnika KHTML wprowadzono także kilka niestandardowych elementów zwiększających zgodność z Internet Explorerem.
Zgodnie z zapisem dokumentacji technicznej, KHTML był zbudowany jako biblioteka, której podstawowym obiektem był KHTMLPart, odpowiedzialny za przetwarzanie dokumentu i współpracujący z widokiem KHTMLView. Dokumenty HTML były przetwarzane przez tokenizer i parser, które tworzyły drzewo zgodne z modelem DOM, natomiast dokumenty XML wykorzystywały mechanizmy parsowania XML biblioteki Qt. Na podstawie drzewa DOM oraz arkuszy stylów CSS, KHTML tworzył odrębne drzewo renderowania, zawierające obiekty odpowiedzialne za rozmieszczenie i wyświetlanie poszczególnych elementów. Drzewo renderowania mogło różnić się od DOM, m.in. ze względu na tworzenie anonimowych elementów wynikających z zasad formatowania CSS. Za dobór reguł CSS odpowiadał CSSStyleSelector, natomiast mechanizm layoutu obliczał rozmieszczenie elementów w dostępnej przestrzeni, po czym KHTMLView rysował wynik na ekranie. KHTML obsługiwał również ładowanie zewnętrznych zasobów, takich jak obrazy i arkusze stylów, za pomocą mechanizmu Loader pełniącego także funkcję pamięci podręcznej. Proces przetwarzania mógł odbywać się przyrostowo, dzięki czemu tokenizer, budowanie DOM i tworzenie drzewa renderowania częściowo zachodziły równolegle, umożliwiając rozpoczęcie wyświetlania dokumentu przed zakończeniem przetwarzania.
Istnieją głosy w społeczności programistów, jakoby powodem zawieszenia rozwijania KHTML była zbyt duża złożoność projektu.
Zobacz też KDE WebKit Gecko Presto Trident
Linki zewnętrzne Projekt KHTML-Win32
Przypisy
Kategoria:Silniki przeglądarek internetowych Kategoria:KDE