Web browser engine
||This article has multiple issues. Please help improve it or discuss these issues on the talk page.
A web browser engine, (sometimes called layout engine or rendering engine), is a software component that takes marked up content (such as HTML, XML, image files, etc.) and formatting information (such as CSS, XSL, etc.) and displays the formatted content on the screen. It draws on the content area of a window, which is displayed on a monitor or a printer. A layout engine is typically embedded in web browsers, e-mail clients, e-book readers, on-line help systems or other applications that require the displaying (and editing) of web content. Engines may wait for all data to be received before rendering a page, or may begin rendering before all data is received. This can result in pages changing as more data is received, such as images being filled in or a flash of unstyled content if rendering begins before formatting information is received.
KDE's open-source KHTML engine is used in KDE's Konqueror web browser and was the basis for WebKit, the rendering engine in Apple's Safari and Google's Chrome web browsers, which is now the most widely used browser engine according to StatCounter. Future versions of Chromium/Chrome and Opera will be based on Blink, a fork of Webkit.
Gecko, the Mozilla project's open-source web browser engine, is used by a variety of products derived from the Mozilla code base, including the Firefox web browser, the Thunderbird e-mail client, and SeaMonkey internet suite.
Trident, the web browser engine from Internet Explorer, is used by many applications on the Microsoft Windows platform, such as netSmart, Outlook Express, some versions of Microsoft Outlook, and the mini-browsers in Winamp and RealPlayer.
Opera Software's proprietary Presto engine is licensed to a number of other software vendors, and is used in Opera's own web browser. As of February 2013 Opera has announced they will be using the same engine as Chromium, which at the time of the announcement was WebKit.
The first web browsers were monolithic. They used various techniques inherited from text processing, such as regular expressions to parse HTML into a visual representation. Later they adopted a more modular approach and were split into a host application and an engine.
The engine does most of the work. It essentially takes a URL and a set of window content area rectangle coordinates as arguments. It then retrieves the document corresponding to the URL and paints a graphical representation of it in the given rectangle. It also handles links, forms, cookies, client-side scripting, plug-in loading and other matters.
The host application provides the menu bar, address bar, status bar, bookmark manager, history and preferences functionality among other things. It embeds the engine and serves as an interface between the user, the engine, and the underlying operating system. Since it provides the graphical elements surrounding the area in which the engine paints documents, the term chrome is sometimes used to refer to its user interface (like the chrome surrounding a car).
The advantage of this modular approach is that it then becomes easy to embed web browser engines in a variety of applications. For example, the same engine used by a web browser can be used by an email client to display HTML email. On-line help systems integrated in applications have largely moved from using custom formats to using standard HTML displayed with a web browser engine. The EPUB 3 e-book standard is also based on using a layout engine to render XHTML and CSS.
See also 
- Comparison of web browser engines
- List of layout engines
- Layout (computing)
- Code refactoring
- Page description language
- User agent