layeshifter-fela
Version:
State-Driven Styling in JavaScript
81 lines (65 loc) • 1.89 kB
JavaScript
;
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 '';
}