From 8bb056c88c510933972c5e3ef0405c12d73f44ea Mon Sep 17 00:00:00 2001 From: kekee000 Date: Wed, 8 Oct 2014 20:22:04 +0800 Subject: [PATCH] add adjust --- src/fonteditor/dialog/setting-adjust.js | 64 +++++++++++++++++++++++++ src/fonteditor/dialog/setting-name.js | 2 +- src/fonteditor/ttf/main.js | 31 ++++++++++-- src/fonteditor/widget/ttfmanager.js | 4 +- ttf.html | 2 +- 5 files changed, 95 insertions(+), 8 deletions(-) create mode 100644 src/fonteditor/dialog/setting-adjust.js diff --git a/src/fonteditor/dialog/setting-adjust.js b/src/fonteditor/dialog/setting-adjust.js new file mode 100644 index 0000000..7b081b8 --- /dev/null +++ b/src/fonteditor/dialog/setting-adjust.js @@ -0,0 +1,64 @@ +/** + * @file setting-adjust.js + * @author mengke01 + * @date + * @description + * 设置自动调整字形 + */ + +define( + function(require) { + + var tpl = '' + + '
' + + '左边轴' + + '' + + '
' + + '
' + + '右边轴' + + '' + + '
' + + + + '
' + + '缩放字形到em框' + + '' + + '' + + '' + + '
' + + '
' + + '缩放留白' + + '' + + '
'; + + + return require('./setting').derive({ + + title: '调整字形', + + getTpl: function() { + return tpl; + }, + + set: function(setting) { + setting = setting || {}; + this.getDialog().find('[data-field]').each(function(i, item) { + item = $(item); + item.val(setting[item.attr('data-field')] || ''); + }); + }, + + validate: function() { + var name = {}; + this.getDialog().find('[data-field]').each(function(i, item) { + item = $(item); + var val = item.val().trim(); + if (val) { + name[item.attr('data-field')] = val; + } + }); + return name; + } + + }); + } +); diff --git a/src/fonteditor/dialog/setting-name.js b/src/fonteditor/dialog/setting-name.js index f78177c..79ce2d0 100644 --- a/src/fonteditor/dialog/setting-name.js +++ b/src/fonteditor/dialog/setting-name.js @@ -1,5 +1,5 @@ /** - * @file setting-unicode.js + * @file setting-name.js * @author mengke01 * @date * @description diff --git a/src/fonteditor/ttf/main.js b/src/fonteditor/ttf/main.js index 2cebb2b..bbddaa0 100644 --- a/src/fonteditor/ttf/main.js +++ b/src/fonteditor/ttf/main.js @@ -25,6 +25,7 @@ define( var setting = { 'unicode': require('../dialog/setting-unicode'), 'name': require('../dialog/setting-name'), + 'adjust': require('../dialog/setting-adjust'), 'online': require('../dialog/font-online') } @@ -93,6 +94,28 @@ define( }); dlg.show(ttf.name); } + }, + 'setting-adjust': function() { + var ttf = program.ttfmanager.get(); + if (ttf) { + var dlg = new setting.adjust({ + onChange: function(setting) { + program.ttfmanager.adjustGlyf(setting); + } + }); + // 如果仅选择一个字形,则填充现有值 + var selected = program.viewer.getSelected(); + if (selected.length === 1) { + var glyf = program.ttfmanager.getGlyf(selected)[0]; + dlg.show({ + leftSideBearing: glyf.leftSideBearing || '', + rightSideBearing: glyf.advanceWidth - glyf.xMax || '' + }); + } + else { + dlg.show(); + } + } } }; @@ -158,18 +181,18 @@ define( function onUpFile(e) { var file = e.target.files[0]; - if (program.action == 'open' && file.name.match(/(\.ttf|\.woff)$/)) { + if (program.action == 'open' && file.name.match(/(\.ttf|\.woff)$/i)) { loader.load(file, { - type: file.name.slice(file.name.lastIndexOf('.') + 1), + type: file.name.slice(file.name.lastIndexOf('.') + 1).toLowerCase(), success: function(imported) { program.ttfmanager.set(imported); } }); } - else if (program.action == 'import' && file.name.match(/(\.ttf|\.woff|\.svg)$/)) { + else if (program.action == 'import' && file.name.match(/(\.ttf|\.woff|\.svg)$/i)) { if (program.ttfmanager.get()) { loader.load(file, { - type: file.name.slice(file.name.lastIndexOf('.') + 1), + type: file.name.slice(file.name.lastIndexOf('.') + 1).toLowerCase(), success: function(imported) { if (imported.glyf.length) { program.ttfmanager.merge(imported, {scale: true}); diff --git a/src/fonteditor/widget/ttfmanager.js b/src/fonteditor/widget/ttfmanager.js index b7cd103..d66aa90 100644 --- a/src/fonteditor/widget/ttfmanager.js +++ b/src/fonteditor/widget/ttfmanager.js @@ -163,8 +163,8 @@ define( */ Manager.prototype.removeGlyf = function(indexList) { var glyf = this.ttf.glyf, count = 0; - for(var i = glyf.length - 1; i >= 0; i--) { - if (indexList.indexOf(i) >= 0 && glyf[i].name != '.notdef') { + for(var i = glyf.length - 1; i > 0; i--) { + if (indexList.indexOf(i) >= 0) { glyf.splice(i, 1); count++; } diff --git a/ttf.html b/ttf.html index 9fe10b9..b155df9 100644 --- a/ttf.html +++ b/ttf.html @@ -41,7 +41,7 @@