Repository files navigation

What is litehtml?

litehtml is the lightweight HTML rendering engine with CSS2/CSS3 support. Note that litehtml itself does not draw any text, pictures or other graphics and that litehtml does not depend on any image/draw/font library. You are free to use any library to draw images, fonts and any other graphics. litehtml just parses HTML/CSS and places the HTML elements into the correct positions (renders HTML). To draw the HTML elements you have to implement the simple callback interface document_container. This interface is really simple, check it out! The document_container implementation is required to render HTML correctly.

Where litehtml can be used

litehtml can be used when you need to show HTML formatted text or even to create a mini-browser, but using it as a full-featured HTML engine is not recommended. Usually you don't need something like WebKit to show simple HTML tooltips or HTML-formatted text, litehtml is much better for these as it's more lightweight and easier to integrate into your application.

HTML Parser

litehtml uses the gumbo-parser to parse HTML. Gumbo is an implementation of the HTML5 parsing algorithm implemented as a pure C99 library with no outside dependencies. It's designed to serve as a building block for other tools and libraries such as linters, validators, templating languages, and refactoring and analysis tools.

Compatibility

litehtml is compatible with any platform supported by C++ and STL. For Windows MS Visual Studio 2013 is recommended. litehtml supports only UTF-8 strings.

Support for HTML and CSS standards

Unfortunately litehtml is not fully compatible with HTML/CSS standards. There is lots of work to do to make litehtml work as well as modern browsers. But litehtml supports most HTML tags and CSS properties. You can find the list of supported CSS properties in this table. For most simple usecases the HTML/CSS features supported by litehtml are enough. Right now litehtml supports even some pages with very complex HTML/CSS designs. As an example the pages created with bootstrap framework are usually well formatted by litehtml.

Testing litehtml

You can download the simple browser (litebrowser) to test the litehtml rendering engine.

The litebrowser source codes are available on GitHub:

License

litehtml is distributed under New BSD License. The gumbo-parser is disributed under Apache License, Version 2.0

Links

About

Fast and lightweight HTML/CSS rendering engine

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

What is litehtml?

litehtml is the lightweight HTML rendering engine with CSS2/CSS3 support. Note that litehtml itself does not draw any text, pictures or other graphics and that litehtml does not depend on any image/draw/font library. You are free to use any library to draw images, fonts and any other graphics. litehtml just parses HTML/CSS and places the HTML elements into the correct positions (renders HTML). To draw the HTML elements you have to implement the simple callback interface document_container. This interface is really simple, check it out! The document_container implementation is required to render HTML correctly.

Where litehtml can be used

litehtml can be used when you need to show HTML formatted text or even to create a mini-browser, but using it as a full-featured HTML engine is not recommended. Usually you don't need something like WebKit to show simple HTML tooltips or HTML-formatted text, litehtml is much better for these as it's more lightweight and easier to integrate into your application.

HTML Parser

litehtml uses the gumbo-parser to parse HTML. Gumbo is an implementation of the HTML5 parsing algorithm implemented as a pure C99 library with no outside dependencies. It's designed to serve as a building block for other tools and libraries such as linters, validators, templating languages, and refactoring and analysis tools.

Compatibility

litehtml is compatible with any platform supported by C++ and STL. For Windows MS Visual Studio 2013 is recommended. litehtml supports only UTF-8 strings.

Support for HTML and CSS standards

Unfortunately litehtml is not fully compatible with HTML/CSS standards. There is lots of work to do to make litehtml work as well as modern browsers. But litehtml supports most HTML tags and CSS properties. You can find the list of supported CSS properties in this table. For most simple usecases the HTML/CSS features supported by litehtml are enough. Right now litehtml supports even some pages with very complex HTML/CSS designs. As an example the pages created with bootstrap framework are usually well formatted by litehtml.

Testing litehtml

You can download the simple browser (litebrowser) to test the litehtml rendering engine.

The litebrowser source codes are available on GitHub:

License

litehtml is distributed under New BSD License. The gumbo-parser is disributed under Apache License, Version 2.0

Links

About

Fast and lightweight HTML/CSS rendering engine

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

What is litehtml?

litehtml is the lightweight HTML rendering engine with CSS2/CSS3 support. Note that litehtml itself does not draw any text, pictures or other graphics and that litehtml does not depend on any image/draw/font library. You are free to use any library to draw images, fonts and any other graphics. litehtml just parses HTML/CSS and places the HTML elements into the correct positions (renders HTML). To draw the HTML elements you have to implement the simple callback interface document_container. This interface is really simple, check it out! The document_container implementation is required to render HTML correctly.

Where litehtml can be used

litehtml can be used when you need to show HTML formatted text or even to create a mini-browser, but using it as a full-featured HTML engine is not recommended. Usually you don't need something like WebKit to show simple HTML tooltips or HTML-formatted text, litehtml is much better for these as it's more lightweight and easier to integrate into your application.

HTML Parser

litehtml uses the gumbo-parser to parse HTML. Gumbo is an implementation of the HTML5 parsing algorithm implemented as a pure C99 library with no outside dependencies. It's designed to serve as a building block for other tools and libraries such as linters, validators, templating languages, and refactoring and analysis tools.

Compatibility

litehtml is compatible with any platform supported by C++ and STL. For Windows MS Visual Studio 2013 is recommended. litehtml supports only UTF-8 strings.

Support for HTML and CSS standards

Unfortunately litehtml is not fully compatible with HTML/CSS standards. There is lots of work to do to make litehtml work as well as modern browsers. But litehtml supports most HTML tags and CSS properties. You can find the list of supported CSS properties in this table. For most simple usecases the HTML/CSS features supported by litehtml are enough. Right now litehtml supports even some pages with very complex HTML/CSS designs. As an example the pages created with bootstrap framework are usually well formatted by litehtml.

Testing litehtml

You can download the simple browser (litebrowser) to test the litehtml rendering engine.

The litebrowser source codes are available on GitHub:

License

litehtml is distributed under New BSD License. The gumbo-parser is disributed under Apache License, Version 2.0

Links

About

Fast and lightweight HTML/CSS rendering engine

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

What is litehtml?

litehtml is the lightweight HTML rendering engine with CSS2/CSS3 support. Note that litehtml itself does not draw any text, pictures or other graphics and that litehtml does not depend on any image/draw/font library. You are free to use any library to draw images, fonts and any other graphics. litehtml just parses HTML/CSS and places the HTML elements into the correct positions (renders HTML). To draw the HTML elements you have to implement the simple callback interface document_container. This interface is really simple, check it out! The document_container implementation is required to render HTML correctly.

Where litehtml can be used

litehtml can be used when you need to show HTML formatted text or even to create a mini-browser, but using it as a full-featured HTML engine is not recommended. Usually you don't need something like WebKit to show simple HTML tooltips or HTML-formatted text, litehtml is much better for these as it's more lightweight and easier to integrate into your application.

HTML Parser

litehtml uses the gumbo-parser to parse HTML. Gumbo is an implementation of the HTML5 parsing algorithm implemented as a pure C99 library with no outside dependencies. It's designed to serve as a building block for other tools and libraries such as linters, validators, templating languages, and refactoring and analysis tools.

Compatibility

litehtml is compatible with any platform supported by C++ and STL. For Windows MS Visual Studio 2013 is recommended. litehtml supports only UTF-8 strings.

Support for HTML and CSS standards

Unfortunately litehtml is not fully compatible with HTML/CSS standards. There is lots of work to do to make litehtml work as well as modern browsers. But litehtml supports most HTML tags and CSS properties. You can find the list of supported CSS properties in this table. For most simple usecases the HTML/CSS features supported by litehtml are enough. Right now litehtml supports even some pages with very complex HTML/CSS designs. As an example the pages created with bootstrap framework are usually well formatted by litehtml.

Testing litehtml

You can download the simple browser (litebrowser) to test the litehtml rendering engine.

The litebrowser source codes are available on GitHub:

License

litehtml is distributed under New BSD License. The gumbo-parser is disributed under Apache License, Version 2.0

Links

About

Fast and lightweight HTML/CSS rendering engine

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

What is litehtml?

litehtml is the lightweight HTML rendering engine with CSS2/CSS3 support. Note that litehtml itself does not draw any text, pictures or other graphics and that litehtml does not depend on any image/draw/font library. You are free to use any library to draw images, fonts and any other graphics. litehtml just parses HTML/CSS and places the HTML elements into the correct positions (renders HTML). To draw the HTML elements you have to implement the simple callback interface document_container. This interface is really simple, check it out! The document_container implementation is required to render HTML correctly.

Where litehtml can be used

litehtml can be used when you need to show HTML formatted text or even to create a mini-browser, but using it as a full-featured HTML engine is not recommended. Usually you don't need something like WebKit to show simple HTML tooltips or HTML-formatted text, litehtml is much better for these as it's more lightweight and easier to integrate into your application.

HTML Parser

litehtml uses the gumbo-parser to parse HTML. Gumbo is an implementation of the HTML5 parsing algorithm implemented as a pure C99 library with no outside dependencies. It's designed to serve as a building block for other tools and libraries such as linters, validators, templating languages, and refactoring and analysis tools.

Compatibility

litehtml is compatible with any platform supported by C++ and STL. For Windows MS Visual Studio 2013 is recommended. litehtml supports only UTF-8 strings.

Support for HTML and CSS standards

Unfortunately litehtml is not fully compatible with HTML/CSS standards. There is lots of work to do to make litehtml work as well as modern browsers. But litehtml supports most HTML tags and CSS properties. You can find the list of supported CSS properties in this table. For most simple usecases the HTML/CSS features supported by litehtml are enough. Right now litehtml supports even some pages with very complex HTML/CSS designs. As an example the pages created with bootstrap framework are usually well formatted by litehtml.

Testing litehtml

You can download the simple browser (litebrowser) to test the litehtml rendering engine.

The litebrowser source codes are available on GitHub:

License

litehtml is distributed under New BSD License. The gumbo-parser is disributed under Apache License, Version 2.0

Links

About

Fast and lightweight HTML/CSS rendering engine

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

What is litehtml?

litehtml is the lightweight HTML rendering engine with CSS2/CSS3 support. Note that litehtml itself does not draw any text, pictures or other graphics and that litehtml does not depend on any image/draw/font library. You are free to use any library to draw images, fonts and any other graphics. litehtml just parses HTML/CSS and places the HTML elements into the correct positions (renders HTML). To draw the HTML elements you have to implement the simple callback interface document_container. This interface is really simple, check it out! The document_container implementation is required to render HTML correctly.

Where litehtml can be used

litehtml can be used when you need to show HTML formatted text or even to create a mini-browser, but using it as a full-featured HTML engine is not recommended. Usually you don't need something like WebKit to show simple HTML tooltips or HTML-formatted text, litehtml is much better for these as it's more lightweight and easier to integrate into your application.

HTML Parser

litehtml uses the gumbo-parser to parse HTML. Gumbo is an implementation of the HTML5 parsing algorithm implemented as a pure C99 library with no outside dependencies. It's designed to serve as a building block for other tools and libraries such as linters, validators, templating languages, and refactoring and analysis tools.

Compatibility

litehtml is compatible with any platform supported by C++ and STL. For Windows MS Visual Studio 2013 is recommended. litehtml supports only UTF-8 strings.

Support for HTML and CSS standards

Unfortunately litehtml is not fully compatible with HTML/CSS standards. There is lots of work to do to make litehtml work as well as modern browsers. But litehtml supports most HTML tags and CSS properties. You can find the list of supported CSS properties in this table. For most simple usecases the HTML/CSS features supported by litehtml are enough. Right now litehtml supports even some pages with very complex HTML/CSS designs. As an example the pages created with bootstrap framework are usually well formatted by litehtml.

Testing litehtml

You can download the simple browser (litebrowser) to test the litehtml rendering engine.

The litebrowser source codes are available on GitHub:

License

litehtml is distributed under New BSD License. The gumbo-parser is disributed under Apache License, Version 2.0

Links

About

Fast and lightweight HTML/CSS rendering engine

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

What is litehtml?

litehtml is the lightweight HTML rendering engine with CSS2/CSS3 support. Note that litehtml itself does not draw any text, pictures or other graphics and that litehtml does not depend on any image/draw/font library. You are free to use any library to draw images, fonts and any other graphics. litehtml just parses HTML/CSS and places the HTML elements into the correct positions (renders HTML). To draw the HTML elements you have to implement the simple callback interface document_container. This interface is really simple, check it out! The document_container implementation is required to render HTML correctly.

Where litehtml can be used

litehtml can be used when you need to show HTML formatted text or even to create a mini-browser, but using it as a full-featured HTML engine is not recommended. Usually you don't need something like WebKit to show simple HTML tooltips or HTML-formatted text, litehtml is much better for these as it's more lightweight and easier to integrate into your application.

HTML Parser

litehtml uses the gumbo-parser to parse HTML. Gumbo is an implementation of the HTML5 parsing algorithm implemented as a pure C99 library with no outside dependencies. It's designed to serve as a building block for other tools and libraries such as linters, validators, templating languages, and refactoring and analysis tools.

Compatibility

litehtml is compatible with any platform supported by C++ and STL. For Windows MS Visual Studio 2013 is recommended. litehtml supports only UTF-8 strings.

Support for HTML and CSS standards

Unfortunately litehtml is not fully compatible with HTML/CSS standards. There is lots of work to do to make litehtml work as well as modern browsers. But litehtml supports most HTML tags and CSS properties. You can find the list of supported CSS properties in this table. For most simple usecases the HTML/CSS features supported by litehtml are enough. Right now litehtml supports even some pages with very complex HTML/CSS designs. As an example the pages created with bootstrap framework are usually well formatted by litehtml.

Testing litehtml

You can download the simple browser (litebrowser) to test the litehtml rendering engine.

The litebrowser source codes are available on GitHub:

License

litehtml is distributed under New BSD License. The gumbo-parser is disributed under Apache License, Version 2.0

Links

About

Fast and lightweight HTML/CSS rendering engine

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

What is litehtml?

litehtml is the lightweight HTML rendering engine with CSS2/CSS3 support. Note that litehtml itself does not draw any text, pictures or other graphics and that litehtml does not depend on any image/draw/font library. You are free to use any library to draw images, fonts and any other graphics. litehtml just parses HTML/CSS and places the HTML elements into the correct positions (renders HTML). To draw the HTML elements you have to implement the simple callback interface document_container. This interface is really simple, check it out! The document_container implementation is required to render HTML correctly.

Where litehtml can be used

litehtml can be used when you need to show HTML formatted text or even to create a mini-browser, but using it as a full-featured HTML engine is not recommended. Usually you don't need something like WebKit to show simple HTML tooltips or HTML-formatted text, litehtml is much better for these as it's more lightweight and easier to integrate into your application.

HTML Parser

litehtml uses the gumbo-parser to parse HTML. Gumbo is an implementation of the HTML5 parsing algorithm implemented as a pure C99 library with no outside dependencies. It's designed to serve as a building block for other tools and libraries such as linters, validators, templating languages, and refactoring and analysis tools.

Compatibility

litehtml is compatible with any platform supported by C++ and STL. For Windows MS Visual Studio 2013 is recommended. litehtml supports only UTF-8 strings.

Support for HTML and CSS standards

Unfortunately litehtml is not fully compatible with HTML/CSS standards. There is lots of work to do to make litehtml work as well as modern browsers. But litehtml supports most HTML tags and CSS properties. You can find the list of supported CSS properties in this table. For most simple usecases the HTML/CSS features supported by litehtml are enough. Right now litehtml supports even some pages with very complex HTML/CSS designs. As an example the pages created with bootstrap framework are usually well formatted by litehtml.

Testing litehtml

You can download the simple browser (litebrowser) to test the litehtml rendering engine.

The litebrowser source codes are available on GitHub:

License

litehtml is distributed under New BSD License. The gumbo-parser is disributed under Apache License, Version 2.0

Links

About

Fast and lightweight HTML/CSS rendering engine

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages