UNPKG

css-font-parser

Version:
3 lines (2 loc) 2.17 kB
function e(e){return!/^(-?\d|--)/.test(e)}function t(t){for(var l,n=[],f="",i="",r=7,s=0;l=t.charAt(s);s++)if(/[a-zA-Z\d\xa0-\uffff_-]/.test(l)&&7===r)f+=l;else if("\\"===l&&7===r)r=6;else if(" "===l&&7===r){if(""!==f){if(!e(f))return null;n.push(f),f=""}}else if(6===r)/[0-9a-f]/i.test(l)?(i+=l,r=8):(f+=l,r=7);else{if(8!==r)return null;/[0-9a-f]/i.test(l)&&i.length<6?i+=l:(f+=String.fromCodePoint(parseInt(i,16)),f+=l,i="",r=7)}if(""!==f){if(!e(f))return null;n.push(f)}return n.join(" ")}function l(e,l){for(var n,f=l,i="",r={"font-family":[]},s=0;n=e.charAt(s);s+=1)if(4!==f||'"'!==n&&"'"!==n)if(3===f&&","===n)f=4,i="";else if(4===f&&","===n){var a=t(i);a&&r["font-family"].push(a),i=""}else if(5===f&&" "===n)/^(?:\+|-)?(?:[0-9]*\.)?[0-9]+(?:deg|grad|rad|turn)$/.test(i)?(r["font-style"]+=" "+i,i=""):s-=1,f=1;else if(1!==f||" "!==n&&"/"!==n)2===f&&" "===n?(/^(?:\+|-)?([0-9]*\.)?[0-9]+(?:em|ex|ch|rem|vh|vw|vmin|vmax|px|mm|cm|in|pt|pc|%)?$/.test(i)&&(r["line-height"]=i),f=4,i=""):i+=n;else{if(/^(?:(?:xx|x)-large|(?:xx|s)-small|small|large|medium)$/.test(i)||/^(?:larg|small)er$/.test(i)||/^(?:\+|-)?(?:[0-9]*\.)?[0-9]+(?:em|ex|ch|rem|vh|vw|vmin|vmax|px|mm|cm|in|pt|pc|%)$/.test(i))f="/"===n?2:4,r["font-size"]=i;else if(/^italic$/.test(i))r["font-style"]=i;else if(/^oblique$/.test(i))r["font-style"]=i,f=5;else if(/^small-caps$/.test(i))r["font-variant"]=i;else if(/^(?:bold(?:er)?|lighter|normal)$/.test(i))r["font-weight"]=i;else if(/^[+-]?(?:[0-9]*\.)?[0-9]+(?:e[+-]?(?:0|[1-9][0-9]*))?$/.test(i)){var u=parseFloat(i);u>=1&&u<=1e3&&(r["font-weight"]=i)}else/^(?:(?:ultra|extra|semi)-)?(?:condensed|expanded)$/.test(i)&&(r["font-stretch"]=i);i=""}else{var o=s+1;do{if(!(o=e.indexOf(n,o)+1))return null}while("\\"===e.charAt(o-2));r["font-family"].push(e.slice(s+1,o-1).replace(/\\('|")/g,"$1")),s=o-1,f=3,i=""}if(3===f&&!/^\s*$/.test(i))return null;if(4===f){var m=t(i);m&&r["font-family"].push(m)}return r}function n(e){var t=l(e,4);return null!==t?t["font-family"]:null}function f(e){var t=l(e,1);return null!==t&&t["font-size"]&&t["font-family"].length?t:null}export{f as parseFont,n as parseFontFamily}; //# sourceMappingURL=css-font-parser.module.js.map