UNPKG

css-font-parser

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