Repository files navigation

Persian-Lettering.js, a jQuery plugin for radical Persian and Arabic Web Typography

Persian-Lettering is a Javascript span injector for radical Web Typography for Persian and Arabic languages. It can be used for kerning, or other creative affects, when working whti Persian and Aranic typography. It is a fork from the original Lettering.js.

The original Lettering.js does well with English typography, but Persian and Arabic typography needs to be treated a little bit differently, because some letters are connected to each other, forming letter groups that we can call them 'ligatures'.

Individual Letter Control

We'll start with some really basic markup:

<h1class="fancy_title">عنوان</h1>

After including jQuery 1.6.2+, download and include the jquery.persian-lettering.js or it's minified minified version in your project. Then a script block with the magical .lettering() method:

<script>$(document).ready(function(){$(".fancy_title").lettering();});</script>

The resulting code will churn your .fancy_title and output the following:

<h1class="fancy_title"><spanclass="char1">ع</span><spanclass="char2">ن</span><spanclass="char3">و</span><spanclass="char4">ا</span><spanclass="char5">ن</span></h1>

Control Connected Persian and Arabic Letters

In Persian and Arabic Languages, we don't want our letters to be seperated. Some letters have to be connected to next letters and some shouldn't. So here is where the magic happens:

<script>$(document).ready(function(){$(".fancy_title").lettering('pligatures');});</script>

By adding the pligatures method, the resulting html is:

<h1class="fancy_title"><spanclass="plig1">عنو</span><spanclass="plig2">ا</span><spanclass="plig3">ن</span></h1>

Interesting huh? Now the text is easy to manipulate in your CSS using an ordinal .plig# pattern.

Letters, ligatuers, words, lines, and more!

There you have it, but Persian-Lettering.js does even more! The same as It's origin, Persian-Lettering.js has the ability to split words and lines as well. If you want more information, read the Lettering.js Wiki:

https://github.com/davatron5000/Lettering.js/wiki

Best Practices

We've found this to be a pretty quick and elegant solution to create typographical CSS3 posters. It's also a great solution for really custom type headings, while keeping the text selectable. Be smart and use sparingly. You'll probably break your browser if you try to wrap every letter on your page in a span tag, so don't do that. Look to use this in your Headings, Blockquotes, Asides, etc.

Kern Well

If you're going through the trouble to load a fancy font and that word or phrase is the largest on the site, then it's important for it to be kerned well. With Lettering.js, kerning is a breeze. You can simply use $("#id-of-what-i-want-to-kern").lettering(); and then on each .char#, you can set relative position or left/right margin. Works like a charm.

Accessibility

Persian-Lettering.js is accessible by default. It uses an aria-label on the parent element and aria-hidden on each of the children to prevent screen readers from pausing while reading each individual characters or words.

Download, Fork, Commit, Please.

We really want Persian-Lettering.js to be a quality helper for Persian and Arabic web typography. If you have any feedback or suggestions, please leave those over on the Github.

About

A lightweight, easy to use Javascript <span> injector for radical Web Typography, for Persian and Arabic Languages

Resources

Stars

3 stars

Watchers

1 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

Persian-Lettering.js, a jQuery plugin for radical Persian and Arabic Web Typography

Persian-Lettering is a Javascript span injector for radical Web Typography for Persian and Arabic languages. It can be used for kerning, or other creative affects, when working whti Persian and Aranic typography. It is a fork from the original Lettering.js.

The original Lettering.js does well with English typography, but Persian and Arabic typography needs to be treated a little bit differently, because some letters are connected to each other, forming letter groups that we can call them 'ligatures'.

Individual Letter Control

We'll start with some really basic markup:

<h1class="fancy_title">عنوان</h1>

After including jQuery 1.6.2+, download and include the jquery.persian-lettering.js or it's minified minified version in your project. Then a script block with the magical .lettering() method:

<script>$(document).ready(function(){$(".fancy_title").lettering();});</script>

The resulting code will churn your .fancy_title and output the following:

<h1class="fancy_title"><spanclass="char1">ع</span><spanclass="char2">ن</span><spanclass="char3">و</span><spanclass="char4">ا</span><spanclass="char5">ن</span></h1>

Control Connected Persian and Arabic Letters

In Persian and Arabic Languages, we don't want our letters to be seperated. Some letters have to be connected to next letters and some shouldn't. So here is where the magic happens:

<script>$(document).ready(function(){$(".fancy_title").lettering('pligatures');});</script>

By adding the pligatures method, the resulting html is:

<h1class="fancy_title"><spanclass="plig1">عنو</span><spanclass="plig2">ا</span><spanclass="plig3">ن</span></h1>

Interesting huh? Now the text is easy to manipulate in your CSS using an ordinal .plig# pattern.

Letters, ligatuers, words, lines, and more!

There you have it, but Persian-Lettering.js does even more! The same as It's origin, Persian-Lettering.js has the ability to split words and lines as well. If you want more information, read the Lettering.js Wiki:

https://github.com/davatron5000/Lettering.js/wiki

Best Practices

We've found this to be a pretty quick and elegant solution to create typographical CSS3 posters. It's also a great solution for really custom type headings, while keeping the text selectable. Be smart and use sparingly. You'll probably break your browser if you try to wrap every letter on your page in a span tag, so don't do that. Look to use this in your Headings, Blockquotes, Asides, etc.

Kern Well

If you're going through the trouble to load a fancy font and that word or phrase is the largest on the site, then it's important for it to be kerned well. With Lettering.js, kerning is a breeze. You can simply use $("#id-of-what-i-want-to-kern").lettering(); and then on each .char#, you can set relative position or left/right margin. Works like a charm.

Accessibility

Persian-Lettering.js is accessible by default. It uses an aria-label on the parent element and aria-hidden on each of the children to prevent screen readers from pausing while reading each individual characters or words.

Download, Fork, Commit, Please.

We really want Persian-Lettering.js to be a quality helper for Persian and Arabic web typography. If you have any feedback or suggestions, please leave those over on the Github.

About

A lightweight, easy to use Javascript <span> injector for radical Web Typography, for Persian and Arabic Languages

Resources

Stars

3 stars

Watchers

1 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

Persian-Lettering.js, a jQuery plugin for radical Persian and Arabic Web Typography

Persian-Lettering is a Javascript span injector for radical Web Typography for Persian and Arabic languages. It can be used for kerning, or other creative affects, when working whti Persian and Aranic typography. It is a fork from the original Lettering.js.

The original Lettering.js does well with English typography, but Persian and Arabic typography needs to be treated a little bit differently, because some letters are connected to each other, forming letter groups that we can call them 'ligatures'.

Individual Letter Control

We'll start with some really basic markup:

<h1class="fancy_title">عنوان</h1>

After including jQuery 1.6.2+, download and include the jquery.persian-lettering.js or it's minified minified version in your project. Then a script block with the magical .lettering() method:

<script>$(document).ready(function(){$(".fancy_title").lettering();});</script>

The resulting code will churn your .fancy_title and output the following:

<h1class="fancy_title"><spanclass="char1">ع</span><spanclass="char2">ن</span><spanclass="char3">و</span><spanclass="char4">ا</span><spanclass="char5">ن</span></h1>

Control Connected Persian and Arabic Letters

In Persian and Arabic Languages, we don't want our letters to be seperated. Some letters have to be connected to next letters and some shouldn't. So here is where the magic happens:

<script>$(document).ready(function(){$(".fancy_title").lettering('pligatures');});</script>

By adding the pligatures method, the resulting html is:

<h1class="fancy_title"><spanclass="plig1">عنو</span><spanclass="plig2">ا</span><spanclass="plig3">ن</span></h1>

Interesting huh? Now the text is easy to manipulate in your CSS using an ordinal .plig# pattern.

Letters, ligatuers, words, lines, and more!

There you have it, but Persian-Lettering.js does even more! The same as It's origin, Persian-Lettering.js has the ability to split words and lines as well. If you want more information, read the Lettering.js Wiki:

https://github.com/davatron5000/Lettering.js/wiki

Best Practices

We've found this to be a pretty quick and elegant solution to create typographical CSS3 posters. It's also a great solution for really custom type headings, while keeping the text selectable. Be smart and use sparingly. You'll probably break your browser if you try to wrap every letter on your page in a span tag, so don't do that. Look to use this in your Headings, Blockquotes, Asides, etc.

Kern Well

If you're going through the trouble to load a fancy font and that word or phrase is the largest on the site, then it's important for it to be kerned well. With Lettering.js, kerning is a breeze. You can simply use $("#id-of-what-i-want-to-kern").lettering(); and then on each .char#, you can set relative position or left/right margin. Works like a charm.

Accessibility

Persian-Lettering.js is accessible by default. It uses an aria-label on the parent element and aria-hidden on each of the children to prevent screen readers from pausing while reading each individual characters or words.

Download, Fork, Commit, Please.

We really want Persian-Lettering.js to be a quality helper for Persian and Arabic web typography. If you have any feedback or suggestions, please leave those over on the Github.

About

A lightweight, easy to use Javascript <span> injector for radical Web Typography, for Persian and Arabic Languages

Resources

Stars

3 stars

Watchers

1 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

Persian-Lettering.js, a jQuery plugin for radical Persian and Arabic Web Typography

Persian-Lettering is a Javascript span injector for radical Web Typography for Persian and Arabic languages. It can be used for kerning, or other creative affects, when working whti Persian and Aranic typography. It is a fork from the original Lettering.js.

The original Lettering.js does well with English typography, but Persian and Arabic typography needs to be treated a little bit differently, because some letters are connected to each other, forming letter groups that we can call them 'ligatures'.

Individual Letter Control

We'll start with some really basic markup:

<h1class="fancy_title">عنوان</h1>

After including jQuery 1.6.2+, download and include the jquery.persian-lettering.js or it's minified minified version in your project. Then a script block with the magical .lettering() method:

<script>$(document).ready(function(){$(".fancy_title").lettering();});</script>

The resulting code will churn your .fancy_title and output the following:

<h1class="fancy_title"><spanclass="char1">ع</span><spanclass="char2">ن</span><spanclass="char3">و</span><spanclass="char4">ا</span><spanclass="char5">ن</span></h1>

Control Connected Persian and Arabic Letters

In Persian and Arabic Languages, we don't want our letters to be seperated. Some letters have to be connected to next letters and some shouldn't. So here is where the magic happens:

<script>$(document).ready(function(){$(".fancy_title").lettering('pligatures');});</script>

By adding the pligatures method, the resulting html is:

<h1class="fancy_title"><spanclass="plig1">عنو</span><spanclass="plig2">ا</span><spanclass="plig3">ن</span></h1>

Interesting huh? Now the text is easy to manipulate in your CSS using an ordinal .plig# pattern.

Letters, ligatuers, words, lines, and more!

There you have it, but Persian-Lettering.js does even more! The same as It's origin, Persian-Lettering.js has the ability to split words and lines as well. If you want more information, read the Lettering.js Wiki:

https://github.com/davatron5000/Lettering.js/wiki

Best Practices

We've found this to be a pretty quick and elegant solution to create typographical CSS3 posters. It's also a great solution for really custom type headings, while keeping the text selectable. Be smart and use sparingly. You'll probably break your browser if you try to wrap every letter on your page in a span tag, so don't do that. Look to use this in your Headings, Blockquotes, Asides, etc.

Kern Well

If you're going through the trouble to load a fancy font and that word or phrase is the largest on the site, then it's important for it to be kerned well. With Lettering.js, kerning is a breeze. You can simply use $("#id-of-what-i-want-to-kern").lettering(); and then on each .char#, you can set relative position or left/right margin. Works like a charm.

Accessibility

Persian-Lettering.js is accessible by default. It uses an aria-label on the parent element and aria-hidden on each of the children to prevent screen readers from pausing while reading each individual characters or words.

Download, Fork, Commit, Please.

We really want Persian-Lettering.js to be a quality helper for Persian and Arabic web typography. If you have any feedback or suggestions, please leave those over on the Github.

About

A lightweight, easy to use Javascript <span> injector for radical Web Typography, for Persian and Arabic Languages

Resources

Stars

3 stars

Watchers

1 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

Persian-Lettering.js, a jQuery plugin for radical Persian and Arabic Web Typography

Persian-Lettering is a Javascript span injector for radical Web Typography for Persian and Arabic languages. It can be used for kerning, or other creative affects, when working whti Persian and Aranic typography. It is a fork from the original Lettering.js.

The original Lettering.js does well with English typography, but Persian and Arabic typography needs to be treated a little bit differently, because some letters are connected to each other, forming letter groups that we can call them 'ligatures'.

Individual Letter Control

We'll start with some really basic markup:

<h1class="fancy_title">عنوان</h1>

After including jQuery 1.6.2+, download and include the jquery.persian-lettering.js or it's minified minified version in your project. Then a script block with the magical .lettering() method:

<script>$(document).ready(function(){$(".fancy_title").lettering();});</script>

The resulting code will churn your .fancy_title and output the following:

<h1class="fancy_title"><spanclass="char1">ع</span><spanclass="char2">ن</span><spanclass="char3">و</span><spanclass="char4">ا</span><spanclass="char5">ن</span></h1>

Control Connected Persian and Arabic Letters

In Persian and Arabic Languages, we don't want our letters to be seperated. Some letters have to be connected to next letters and some shouldn't. So here is where the magic happens:

<script>$(document).ready(function(){$(".fancy_title").lettering('pligatures');});</script>

By adding the pligatures method, the resulting html is:

<h1class="fancy_title"><spanclass="plig1">عنو</span><spanclass="plig2">ا</span><spanclass="plig3">ن</span></h1>

Interesting huh? Now the text is easy to manipulate in your CSS using an ordinal .plig# pattern.

Letters, ligatuers, words, lines, and more!

There you have it, but Persian-Lettering.js does even more! The same as It's origin, Persian-Lettering.js has the ability to split words and lines as well. If you want more information, read the Lettering.js Wiki:

https://github.com/davatron5000/Lettering.js/wiki

Best Practices

We've found this to be a pretty quick and elegant solution to create typographical CSS3 posters. It's also a great solution for really custom type headings, while keeping the text selectable. Be smart and use sparingly. You'll probably break your browser if you try to wrap every letter on your page in a span tag, so don't do that. Look to use this in your Headings, Blockquotes, Asides, etc.

Kern Well

If you're going through the trouble to load a fancy font and that word or phrase is the largest on the site, then it's important for it to be kerned well. With Lettering.js, kerning is a breeze. You can simply use $("#id-of-what-i-want-to-kern").lettering(); and then on each .char#, you can set relative position or left/right margin. Works like a charm.

Accessibility

Persian-Lettering.js is accessible by default. It uses an aria-label on the parent element and aria-hidden on each of the children to prevent screen readers from pausing while reading each individual characters or words.

Download, Fork, Commit, Please.

We really want Persian-Lettering.js to be a quality helper for Persian and Arabic web typography. If you have any feedback or suggestions, please leave those over on the Github.

About

A lightweight, easy to use Javascript <span> injector for radical Web Typography, for Persian and Arabic Languages

Resources

Stars

3 stars

Watchers

1 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

Persian-Lettering.js, a jQuery plugin for radical Persian and Arabic Web Typography

Persian-Lettering is a Javascript span injector for radical Web Typography for Persian and Arabic languages. It can be used for kerning, or other creative affects, when working whti Persian and Aranic typography. It is a fork from the original Lettering.js.

The original Lettering.js does well with English typography, but Persian and Arabic typography needs to be treated a little bit differently, because some letters are connected to each other, forming letter groups that we can call them 'ligatures'.

Individual Letter Control

We'll start with some really basic markup:

<h1class="fancy_title">عنوان</h1>

After including jQuery 1.6.2+, download and include the jquery.persian-lettering.js or it's minified minified version in your project. Then a script block with the magical .lettering() method:

<script>$(document).ready(function(){$(".fancy_title").lettering();});</script>

The resulting code will churn your .fancy_title and output the following:

<h1class="fancy_title"><spanclass="char1">ع</span><spanclass="char2">ن</span><spanclass="char3">و</span><spanclass="char4">ا</span><spanclass="char5">ن</span></h1>

Control Connected Persian and Arabic Letters

In Persian and Arabic Languages, we don't want our letters to be seperated. Some letters have to be connected to next letters and some shouldn't. So here is where the magic happens:

<script>$(document).ready(function(){$(".fancy_title").lettering('pligatures');});</script>

By adding the pligatures method, the resulting html is:

<h1class="fancy_title"><spanclass="plig1">عنو</span><spanclass="plig2">ا</span><spanclass="plig3">ن</span></h1>

Interesting huh? Now the text is easy to manipulate in your CSS using an ordinal .plig# pattern.

Letters, ligatuers, words, lines, and more!

There you have it, but Persian-Lettering.js does even more! The same as It's origin, Persian-Lettering.js has the ability to split words and lines as well. If you want more information, read the Lettering.js Wiki:

https://github.com/davatron5000/Lettering.js/wiki

Best Practices

We've found this to be a pretty quick and elegant solution to create typographical CSS3 posters. It's also a great solution for really custom type headings, while keeping the text selectable. Be smart and use sparingly. You'll probably break your browser if you try to wrap every letter on your page in a span tag, so don't do that. Look to use this in your Headings, Blockquotes, Asides, etc.

Kern Well

If you're going through the trouble to load a fancy font and that word or phrase is the largest on the site, then it's important for it to be kerned well. With Lettering.js, kerning is a breeze. You can simply use $("#id-of-what-i-want-to-kern").lettering(); and then on each .char#, you can set relative position or left/right margin. Works like a charm.

Accessibility

Persian-Lettering.js is accessible by default. It uses an aria-label on the parent element and aria-hidden on each of the children to prevent screen readers from pausing while reading each individual characters or words.

Download, Fork, Commit, Please.

We really want Persian-Lettering.js to be a quality helper for Persian and Arabic web typography. If you have any feedback or suggestions, please leave those over on the Github.

About

A lightweight, easy to use Javascript <span> injector for radical Web Typography, for Persian and Arabic Languages

Resources

Stars

3 stars

Watchers

1 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

Persian-Lettering.js, a jQuery plugin for radical Persian and Arabic Web Typography

Persian-Lettering is a Javascript span injector for radical Web Typography for Persian and Arabic languages. It can be used for kerning, or other creative affects, when working whti Persian and Aranic typography. It is a fork from the original Lettering.js.

The original Lettering.js does well with English typography, but Persian and Arabic typography needs to be treated a little bit differently, because some letters are connected to each other, forming letter groups that we can call them 'ligatures'.

Individual Letter Control

We'll start with some really basic markup:

<h1class="fancy_title">عنوان</h1>

After including jQuery 1.6.2+, download and include the jquery.persian-lettering.js or it's minified minified version in your project. Then a script block with the magical .lettering() method:

<script>$(document).ready(function(){$(".fancy_title").lettering();});</script>

The resulting code will churn your .fancy_title and output the following:

<h1class="fancy_title"><spanclass="char1">ع</span><spanclass="char2">ن</span><spanclass="char3">و</span><spanclass="char4">ا</span><spanclass="char5">ن</span></h1>

Control Connected Persian and Arabic Letters

In Persian and Arabic Languages, we don't want our letters to be seperated. Some letters have to be connected to next letters and some shouldn't. So here is where the magic happens:

<script>$(document).ready(function(){$(".fancy_title").lettering('pligatures');});</script>

By adding the pligatures method, the resulting html is:

<h1class="fancy_title"><spanclass="plig1">عنو</span><spanclass="plig2">ا</span><spanclass="plig3">ن</span></h1>

Interesting huh? Now the text is easy to manipulate in your CSS using an ordinal .plig# pattern.

Letters, ligatuers, words, lines, and more!

There you have it, but Persian-Lettering.js does even more! The same as It's origin, Persian-Lettering.js has the ability to split words and lines as well. If you want more information, read the Lettering.js Wiki:

https://github.com/davatron5000/Lettering.js/wiki

Best Practices

We've found this to be a pretty quick and elegant solution to create typographical CSS3 posters. It's also a great solution for really custom type headings, while keeping the text selectable. Be smart and use sparingly. You'll probably break your browser if you try to wrap every letter on your page in a span tag, so don't do that. Look to use this in your Headings, Blockquotes, Asides, etc.

Kern Well

If you're going through the trouble to load a fancy font and that word or phrase is the largest on the site, then it's important for it to be kerned well. With Lettering.js, kerning is a breeze. You can simply use $("#id-of-what-i-want-to-kern").lettering(); and then on each .char#, you can set relative position or left/right margin. Works like a charm.

Accessibility

Persian-Lettering.js is accessible by default. It uses an aria-label on the parent element and aria-hidden on each of the children to prevent screen readers from pausing while reading each individual characters or words.

Download, Fork, Commit, Please.

We really want Persian-Lettering.js to be a quality helper for Persian and Arabic web typography. If you have any feedback or suggestions, please leave those over on the Github.

About

A lightweight, easy to use Javascript <span> injector for radical Web Typography, for Persian and Arabic Languages

Resources

Stars

3 stars

Watchers

1 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

Persian-Lettering.js, a jQuery plugin for radical Persian and Arabic Web Typography

Persian-Lettering is a Javascript span injector for radical Web Typography for Persian and Arabic languages. It can be used for kerning, or other creative affects, when working whti Persian and Aranic typography. It is a fork from the original Lettering.js.

The original Lettering.js does well with English typography, but Persian and Arabic typography needs to be treated a little bit differently, because some letters are connected to each other, forming letter groups that we can call them 'ligatures'.

Individual Letter Control

We'll start with some really basic markup:

<h1class="fancy_title">عنوان</h1>

After including jQuery 1.6.2+, download and include the jquery.persian-lettering.js or it's minified minified version in your project. Then a script block with the magical .lettering() method:

<script>$(document).ready(function(){$(".fancy_title").lettering();});</script>

The resulting code will churn your .fancy_title and output the following:

<h1class="fancy_title"><spanclass="char1">ع</span><spanclass="char2">ن</span><spanclass="char3">و</span><spanclass="char4">ا</span><spanclass="char5">ن</span></h1>

Control Connected Persian and Arabic Letters

In Persian and Arabic Languages, we don't want our letters to be seperated. Some letters have to be connected to next letters and some shouldn't. So here is where the magic happens:

<script>$(document).ready(function(){$(".fancy_title").lettering('pligatures');});</script>

By adding the pligatures method, the resulting html is:

<h1class="fancy_title"><spanclass="plig1">عنو</span><spanclass="plig2">ا</span><spanclass="plig3">ن</span></h1>

Interesting huh? Now the text is easy to manipulate in your CSS using an ordinal .plig# pattern.

Letters, ligatuers, words, lines, and more!

There you have it, but Persian-Lettering.js does even more! The same as It's origin, Persian-Lettering.js has the ability to split words and lines as well. If you want more information, read the Lettering.js Wiki:

https://github.com/davatron5000/Lettering.js/wiki

Best Practices

We've found this to be a pretty quick and elegant solution to create typographical CSS3 posters. It's also a great solution for really custom type headings, while keeping the text selectable. Be smart and use sparingly. You'll probably break your browser if you try to wrap every letter on your page in a span tag, so don't do that. Look to use this in your Headings, Blockquotes, Asides, etc.

Kern Well

If you're going through the trouble to load a fancy font and that word or phrase is the largest on the site, then it's important for it to be kerned well. With Lettering.js, kerning is a breeze. You can simply use $("#id-of-what-i-want-to-kern").lettering(); and then on each .char#, you can set relative position or left/right margin. Works like a charm.

Accessibility

Persian-Lettering.js is accessible by default. It uses an aria-label on the parent element and aria-hidden on each of the children to prevent screen readers from pausing while reading each individual characters or words.

Download, Fork, Commit, Please.

We really want Persian-Lettering.js to be a quality helper for Persian and Arabic web typography. If you have any feedback or suggestions, please leave those over on the Github.

About

A lightweight, easy to use Javascript <span> injector for radical Web Typography, for Persian and Arabic Languages

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages