use font lib
This commit is contained in:
parent
ab38a198b9
commit
426c2b4bbc
@ -6,13 +6,9 @@
|
||||
|
||||
define(
|
||||
function (require) {
|
||||
|
||||
var writettf = require('./util/writettf');
|
||||
var ttf2woff = require('fonteditor-core/ttf/ttf2woff');
|
||||
var ttf2eot = require('fonteditor-core/ttf/ttf2eot');
|
||||
var ttf2svg = require('fonteditor-core/ttf/ttf2svg');
|
||||
var font = require('fonteditor-core/ttf/font');
|
||||
var resolvettf = require('./util/resolvettf');
|
||||
var ttf2icon = require('fonteditor-core/ttf/ttf2icon');
|
||||
var bytes2base64 = require('fonteditor-core/ttf/util/bytes2base64');
|
||||
var config = require('fonteditor-core/ttf/data/default');
|
||||
var exportRender = require('../template/export-render');
|
||||
var JSZip = require('JSZip');
|
||||
@ -28,26 +24,10 @@ define(
|
||||
*
|
||||
* @return {Binary} base64 font file
|
||||
*/
|
||||
function font2buffer(ttf, options) {
|
||||
var buffer = null;
|
||||
if (options.type === 'woff') {
|
||||
|
||||
// 这里没有用deflate压缩函数,是因为在一些安卓手机上, MI 4.4
|
||||
// 不能识别压缩字体
|
||||
buffer = ttf2woff(writettf(ttf));
|
||||
}
|
||||
else if (options.type === 'eot') {
|
||||
buffer = ttf2eot(writettf(ttf));
|
||||
}
|
||||
else if (options.type === 'svg') {
|
||||
buffer = ttf2svg(ttf);
|
||||
}
|
||||
else {
|
||||
buffer = writettf(ttf);
|
||||
options.type = 'ttf';
|
||||
}
|
||||
|
||||
return buffer;
|
||||
function writefont(ttf, options) {
|
||||
options.type = options.type || 'ttf';
|
||||
ttf = resolvettf(ttf, options);
|
||||
return font.create(ttf).write(options);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -82,7 +62,7 @@ define(
|
||||
|
||||
fontzip.file(
|
||||
fileName + '.' + fileType,
|
||||
font2buffer(ttf, {
|
||||
writefont(ttf, {
|
||||
type: fileType
|
||||
})
|
||||
);
|
||||
@ -117,13 +97,8 @@ define(
|
||||
|
||||
}
|
||||
else {
|
||||
var buffer = font2buffer(ttf, options);
|
||||
if (options.type === 'svg') {
|
||||
base64Str = btoa(buffer);
|
||||
}
|
||||
else {
|
||||
base64Str = bytes2base64(buffer);
|
||||
}
|
||||
var buffer = writefont(ttf, options);
|
||||
base64Str = font.toBase64(buffer);
|
||||
|
||||
base64Str = 'data:font/'
|
||||
+ options.type
|
||||
@ -138,7 +113,6 @@ define(
|
||||
if (options.success) {
|
||||
options.success(base64Str);
|
||||
}
|
||||
|
||||
}
|
||||
catch (e) {
|
||||
$(options.target).removeAttr('download');
|
||||
|
@ -7,43 +7,24 @@
|
||||
define(
|
||||
function (require) {
|
||||
var i18n = require('../i18n/i18n');
|
||||
var TTFReader = require('fonteditor-core/ttf/ttfreader');
|
||||
var woff2ttf = require('fonteditor-core/ttf/woff2ttf');
|
||||
var eot2ttf = require('fonteditor-core/ttf/eot2ttf');
|
||||
var svg2ttfobject = require('fonteditor-core/ttf/svg2ttfobject');
|
||||
var otf2ttfobject = require('fonteditor-core/ttf/otf2ttfobject');
|
||||
var font = require('fonteditor-core/ttf/font');
|
||||
var inflate = require('inflate');
|
||||
var loading = require('./loading');
|
||||
var program = require('./program');
|
||||
|
||||
var woffOptions = {
|
||||
inflate: inflate.inflate
|
||||
};
|
||||
|
||||
function svg2ttf(buffer) {
|
||||
var ieOpt = program.setting.get('ie');
|
||||
return svg2ttfobject(buffer, ieOpt.import);
|
||||
var options = program.setting.get('ie').import;
|
||||
options.type = 'svg';
|
||||
return font.create(buffer, options).data;
|
||||
}
|
||||
|
||||
function getttf(buffer, options) {
|
||||
var ttf;
|
||||
function readttf(buffer, options) {
|
||||
// 暂不支持otf直接编辑,这里需要将otf转换成ttf
|
||||
if (options.type === 'otf') {
|
||||
ttf = otf2ttfobject(buffer);
|
||||
}
|
||||
else {
|
||||
|
||||
if (options.type === 'woff') {
|
||||
buffer = woff2ttf(buffer, woffOptions);
|
||||
}
|
||||
else if (options.type === 'eot') {
|
||||
buffer = eot2ttf(buffer);
|
||||
}
|
||||
|
||||
var ttfReader = new TTFReader();
|
||||
ttf = ttfReader.read(buffer);
|
||||
ttfReader.dispose();
|
||||
if (options.type === 'woff') {
|
||||
options.inflate = inflate.inflate;
|
||||
}
|
||||
var ttf = font.create(buffer, options).data;
|
||||
delete options.inflate;
|
||||
|
||||
return ttf;
|
||||
}
|
||||
@ -63,7 +44,7 @@ define(
|
||||
|
||||
fileReader.onload = function (e) {
|
||||
try {
|
||||
options.success && options.success(getttf(e.target.result, options));
|
||||
options.success && options.success(readttf(e.target.result, options));
|
||||
}
|
||||
catch (exp) {
|
||||
alert(exp.message);
|
||||
@ -96,7 +77,7 @@ define(
|
||||
loading.show();
|
||||
|
||||
try {
|
||||
options.success && options.success(getttf(buffer, options));
|
||||
options.success && options.success(readttf(buffer, options));
|
||||
}
|
||||
catch (exp) {
|
||||
alert(exp.message);
|
||||
|
@ -7,19 +7,12 @@
|
||||
define(
|
||||
function (require) {
|
||||
|
||||
var writettf = require('./util/writettf');
|
||||
var ttf2woff = require('fonteditor-core/ttf/ttf2woff');
|
||||
var ttf2eot = require('fonteditor-core/ttf/ttf2eot');
|
||||
var ttf2svg = require('fonteditor-core/ttf/ttf2svg');
|
||||
var ttf2base64 = require('fonteditor-core/ttf/ttf2base64');
|
||||
var woff2base64 = require('fonteditor-core/ttf/woff2base64');
|
||||
var eot2base64 = require('fonteditor-core/ttf/eot2base64');
|
||||
var svg2base64 = require('fonteditor-core/ttf/svg2base64');
|
||||
var extend = require('common/lang').extend;
|
||||
var resolvettf = require('./util/resolvettf');
|
||||
var ttf2icon = require('fonteditor-core/ttf/ttf2icon');
|
||||
var font = require('fonteditor-core/ttf/font');
|
||||
|
||||
var previewRender = require('../template/preview-render'); // 模板渲染函数
|
||||
|
||||
var extend = require('common/lang').extend;
|
||||
var isIE = !!window.ActiveXObject || 'ActiveXObject' in window;
|
||||
|
||||
/**
|
||||
@ -30,31 +23,16 @@ define(
|
||||
* @return {string} html字符串
|
||||
*/
|
||||
function generatePreviewHTML(ttf, fontFormat) {
|
||||
fontFormat = fontFormat || ttf;
|
||||
|
||||
var fontData = '';
|
||||
var buffer;
|
||||
|
||||
if (fontFormat === 'woff') {
|
||||
buffer = writettf(ttf);
|
||||
fontData = woff2base64(ttf2woff(buffer));
|
||||
}
|
||||
else if (fontFormat === 'eot') {
|
||||
buffer = writettf(ttf);
|
||||
fontData = eot2base64(ttf2eot(buffer));
|
||||
}
|
||||
else if (fontFormat === 'svg') {
|
||||
fontData = svg2base64(ttf2svg(ttf));
|
||||
}
|
||||
else {
|
||||
buffer = writettf(ttf);
|
||||
fontData = ttf2base64(buffer);
|
||||
}
|
||||
var options = {
|
||||
type: fontFormat || 'ttf'
|
||||
};
|
||||
|
||||
ttf = resolvettf(ttf);
|
||||
var fontData = font.create(ttf).toBase64(options);
|
||||
var data = extend(
|
||||
{
|
||||
fontData: fontData,
|
||||
fontFormat: fontFormat
|
||||
fontFormat: options.type
|
||||
},
|
||||
ttf2icon(ttf)
|
||||
);
|
||||
|
@ -10,13 +10,13 @@ define(
|
||||
var Resolver = require('common/promise');
|
||||
var string = require('common/string');
|
||||
var project = require('./project');
|
||||
var writettf = require('./util/writettf');
|
||||
|
||||
var resolvettf = require('./util/resolvettf');
|
||||
var font = require('fonteditor-core/ttf/font');
|
||||
var ttf2woff = require('fonteditor-core/ttf/ttf2woff');
|
||||
var ttf2eot = require('fonteditor-core/ttf/ttf2eot');
|
||||
var ttf2svg = require('fonteditor-core/ttf/ttf2svg');
|
||||
var loader = require('./loader');
|
||||
var bytes2base64 = require('fonteditor-core/ttf/util/bytes2base64');
|
||||
var base642bytes = require('fonteditor-core/ttf/util/base642bytes');
|
||||
var loader = require('./loader');
|
||||
var SyncForm = require('./SyncForm');
|
||||
var syncStatus = require('./sync-status');
|
||||
var curSyncStatus = {};
|
||||
@ -147,26 +147,30 @@ define(
|
||||
var syncData = {};
|
||||
|
||||
if (syncConfig.woff || syncConfig.ttf || syncConfig.eot) {
|
||||
ttf = resolvettf(ttf);
|
||||
try {
|
||||
var buffer = writettf(ttf);
|
||||
var buffer = font.create(ttf).write({
|
||||
type: 'ttf'
|
||||
});
|
||||
}
|
||||
catch (e) {
|
||||
alert(e.message);
|
||||
throw e;
|
||||
}
|
||||
|
||||
if (syncConfig.ttf) {
|
||||
fontType.push('ttf');
|
||||
syncData.ttf = bytes2base64(buffer);
|
||||
syncData.ttf = font.toBase64(buffer);
|
||||
}
|
||||
|
||||
if (syncConfig.woff) {
|
||||
fontType.push('woff');
|
||||
syncData.woff = bytes2base64(ttf2woff(buffer));
|
||||
syncData.woff = font.toBase64(ttf2woff(buffer));
|
||||
}
|
||||
|
||||
if (syncConfig.eot) {
|
||||
fontType.push('eot');
|
||||
syncData.eot = bytes2base64(ttf2eot(buffer));
|
||||
syncData.eot = font.toBase64(ttf2eot(buffer));
|
||||
}
|
||||
|
||||
buffer = null;
|
||||
@ -174,7 +178,10 @@ define(
|
||||
|
||||
if (syncConfig.svg) {
|
||||
fontType.push('svg');
|
||||
syncData.svg = btoa(ttf2svg(ttf));
|
||||
var svg = font.create(ttf).write({
|
||||
type: 'svg'
|
||||
});
|
||||
syncData.svg = font.toBase64(svg);
|
||||
}
|
||||
|
||||
syncData.encode = 'base64';
|
||||
|
@ -1,23 +1,23 @@
|
||||
/**
|
||||
* @file 根据选项生成ttf
|
||||
* @file 根据选项调整 ttfObject
|
||||
* @author mengke01(kekee000@gmail.com)
|
||||
*/
|
||||
|
||||
|
||||
define(
|
||||
function (require) {
|
||||
var TTFWriter = require('fonteditor-core/ttf/ttfwriter');
|
||||
var font = require('fonteditor-core/ttf/font');
|
||||
var program = require('../program');
|
||||
|
||||
/**
|
||||
* 写ttf buffer
|
||||
* 根据选项调整 ttfObject,主要调整 post,head 等信息
|
||||
*
|
||||
* @param {Object} ttfObject ttf对象
|
||||
* @param {Object} options 参数选项
|
||||
* @return {ArrayBuffer} 数据缓冲
|
||||
* @return {Object} ttf对象
|
||||
*/
|
||||
function writeTTF(ttfObject, options) {
|
||||
function resolvettf(ttfObject, options) {
|
||||
options = options || {};
|
||||
|
||||
var exportSetting = program.setting.get('ie');
|
||||
// 强制设置post表信息
|
||||
ttfObject.post = ttfObject.post || {};
|
||||
@ -28,9 +28,9 @@ define(
|
||||
ttfObject.post.format = 3;
|
||||
}
|
||||
|
||||
return new TTFWriter().write(ttfObject);
|
||||
return ttfObject;
|
||||
}
|
||||
|
||||
return writeTTF;
|
||||
return resolvettf;
|
||||
}
|
||||
);
|
Loading…
x
Reference in New Issue
Block a user