Motor de renderizado
# Motor de renderizado

Un motor de renderizado (también conocido como motor de diseño, motor de representación, motor de browser o motor de navegación) es un componente de software básico de los principales navegadores web. La función principal de un motor de navegación es transformar los documentos HTML y otros recursos de una página web en una representación visual interactiva en el dispositivo del usuario (esta función se denomina renderización).

El motor de renderizado es software que toma contenido marcado (como HTML, XML, archivos de imágenes, etc.) e información de formateo (como CSS, XSL, etc.) y luego muestra el contenido ya formateado en la pantalla de aplicaciones. El motor "pinta" en el área de contenido de una ventana, la cual es mostrada en un monitor o una impresora. Los motores de renderizado se usan típicamente en navegadores web, clientes de correo electrónico, u otras aplicaciones que deban mostrar y editar contenidos web.

Todos los navegadores web incluyen necesariamente algún tipo de motor de renderizado. Sin embargo, el término "motor de renderizado" solo alcanzó un uso popular cuando el proyecto Mozilla diseñó el motor de su navegador (Gecko) como un componente aparte del propio navegador. En otras palabras, el motor de Mozilla era reutilizable por otros navegadores diferentes, y mucha gente se empezó a referir a Gecko como un "motor de renderizado" en sí, en lugar de como una parte del navegador.

El término motor de renderizado también puede referirse a motores de renderizado de texto como Pango o Uniscribe los cuales hacen presentables los textos plurilingües, teniendo en cuenta los textos bidireccionales, combinaciones de "caracteres básicos" con tildes, y otras complicaciones del texto plurilingüe.

## Nombre y alcance

Un motor de navegador no es un programa de computadora independiente sino una pieza crítica de un programa más grande, como un navegador web, del cual se deriva el término (la palabra "motor" es una analogía con el motor de un automóvil).

Además de "motor de navegador", otros dos términos son de uso común con respecto a conceptos relacionados: "motor de diseño" y "motor de renderizado". En teoría, la presentación (también denominado diseño) y la representación (o "pintura") podrían ser manejados por motores separados. En la práctica, sin embargo, están estrechamente acoplados y rara vez se consideran por separado.

Además del diseño y la representación, un motor de navegador aplica la política de seguridad entre documentos, maneja la navegación a través de hipervínculos y datos enviados a través de formularios, e implementa la estructura de datos del Modelo de Objetos del Documento (DOM) expuesta a los scripts de página.

Sin embargo, la ejecución del código JavaScript (JS) es un asunto separado, ya que cada navegador web principal utiliza un motor dedicado para esto. El lenguaje JS se creó originalmente para su uso en navegadores, pero ahora también se usa en otros lugares, por lo que la implementación de motores JS se desacopla de los motores de navegador. En un navegador web, los dos motores funcionan en conjunto a través de la estructura de datos DOM compartida.

Los motores de navegador se utilizan en otros tipos de programas además de los navegadores web. Los clientes de correo electrónico los necesitan para mostrar el correo electrónico HTML. El marco Electron, que funciona con los dos motores del navegador Google Chrome, se ha utilizado para crear muchas aplicaciones.

## Presentación y representación

La presentación (también denominado diseño) de una página web generalmente se especifica mediante hojas de estilo en cascada (CSS). Cada hoja de estilo es una serie de reglas que interpreta el motor del navegador. Por ejemplo, algunas reglas especifican detalles de tipografía, como fuente, color y tamaño de texto. El motor combina todas las reglas CSS relevantes para calcular coordenadas gráficas precisas para la representación visual que pintará en la pantalla.

Algunos motores pueden comenzar a renderizar antes de descargar todos los recursos de una página. Esto puede provocar cambios visuales a medida que se reciben más datos, como imágenes que se completan gradualmente o un destello de contenido sin estilo .

## Motores prominentes

Algunos de los motores de renderizado más notables son:

* Gecko, utilizado en Mozilla Suite, y otros navegadores como Galeon.
* Trident, el motor de Internet Explorer para Windows.
* KHTML/WebCore, el motor de Konqueror. Antecesor del WebKit.
* Presto, el antiguo motor de Opera.
* Tasman, el motor de Internet Explorer para Mac.
* gzilla, el motor de Dillo.
* GtkHTML, el motor de Links.
* WebKit, el motor de Epiphany, Safari y Microsoft Edge (para Mac).
* EdgeHTML, el motor de Microsoft Edge (hasta 2020)
* Blink, el nuevo motor de Google Chrome, Microsoft Edge (desde 2020), Opera, Brave y Maxthon (se trata de una bifurcación de WebKit).
* Servo, nuevo motor en desarrollo por parte de Mozilla (con el apoyo de Samsung), está siendo optimizado para la arquitectura ARM y la plataforma Android. En desarrollo.
