UNPKG

layeshifter-fela

Version:

State-Driven Styling in JavaScript

81 lines (65 loc) 1.89 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = getFontFormat; var _isBase = require('./isBase64'); var _isBase2 = _interopRequireDefault(_isBase); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var formats = { '.woff': 'woff', '.woff2': 'woff2', '.eot': 'embedded-opentype', '.ttf': 'truetype', '.otf': 'opentype', '.svg': 'svg', '.svgz': 'svg' }; var base64Formats = { 'image/svg+xml': 'svg', 'application/x-font-woff': 'woff', 'application/font-woff': 'woff', 'application/x-font-woff2': 'woff2', 'application/font-woff2': 'woff2', 'font/woff2': 'woff2', 'application/octet-stream': 'truetype', 'application/x-font-ttf': 'truetype', 'application/x-font-truetype': 'truetype', 'application/x-font-opentype': 'opentype', 'application/vnd.ms-fontobject': 'embedded-opentype', 'application/font-sfnt': 'sfnt' }; function getFontFormat(src) { if ((0, _isBase2.default)(src)) { var mime = ''; for (var i = 5;; i++) { // 'data:'.length === 5 var c = src.charAt(i); if (c === ';' || c === ',') { break; } mime += c; } var fmt = base64Formats[mime]; if (fmt) { return fmt; } console.warn('A invalid base64 font was used. Please use one of the following mime type: ' + Object.keys(base64Formats).join(', ') + '.'); } else { var extension = ''; for (var _i = src.length - 1;; _i--) { var _c = src.charAt(_i); if (_c === '.') { extension = _c + extension; break; } extension = _c + extension; } var _fmt = formats[extension]; if (_fmt) { return _fmt; } console.warn('A invalid font-format was used in "' + src + '". Use one of these: ' + Object.keys(formats).join(', ') + '.'); } return ''; }