use font lib

This commit is contained in:
kekee000 2016-04-18 16:35:28 +08:00
parent ab38a198b9
commit 426c2b4bbc
5 changed files with 53 additions and 113 deletions

View File

@ -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');

View File

@ -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);

View File

@ -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)
);

View File

@ -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';

View File

@ -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主要调整 posthead 等信息
*
* @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;
}
);