Skip to content

Instantly share code, notes, and snippets.

@reatlat
Created November 29, 2015 10:37
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save reatlat/9e466646199ecf85778c to your computer and use it in GitHub Desktop.
Save reatlat/9e466646199ecf85778c to your computer and use it in GitHub Desktop.
Loading webfonts with high performance on responsive websites
(function(){
function addFont() {
var style = document.createElement('style');
style.rel = 'stylesheet';
document.head.appendChild(style);
style.textContent = localStorage.sourceSansPro;
}
try {
if (localStorage.sourceSansPro) {
// The font is in localStorage, we can load it directly
addFont();
} else {
// We have to first load the font file asynchronously
var request = new XMLHttpRequest();
request.open('GET', '/path/to/source-sans-pro.woff.css', true);
request.onload = function() {
if (request.status >= 200 && request.status < 400) {
// We save the file in localStorage
localStorage.sourceSansPro = request.responseText;
// ... and load the font
addFont();
}
}
request.send();
}
} catch(ex) {
// maybe load the font synchronously for woff-capable browsers
// to avoid blinking on every request when localStorage is not available
}
}());
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment