-
导出ttf
导出woff
- 导出svg
- 导出eot
- 导出zip
+ 导出zip
+
+
+
+
+
+
+
@@ -62,8 +71,8 @@
Fork me on Github
diff --git a/src/fonteditor/dialog/setting-glyf.js b/src/fonteditor/dialog/setting-glyf.js
index 087b01e..770a5c1 100644
--- a/src/fonteditor/dialog/setting-glyf.js
+++ b/src/fonteditor/dialog/setting-glyf.js
@@ -10,7 +10,7 @@ define(
function(require) {
var string = require('ttf/util/string');
- var unicodeREG = /^(?:\$[A-F0-9]+)(?:\,\$[A-F0-9]+)*$/i;
+ var unicodeREG = /^(?:\$[A-F0-9]+)(?:\,\$[A-F0-9]+)*$/gi;
var tpl = ''
+ ''
@@ -51,11 +51,12 @@ define(
},
set: function(setting) {
- $('#setting-glyf-name').on('focus', function(e) {
- var val = $('#setting-glyf-unicode').val();
- if (val.match(unicodeREG)) {
+ $('#setting-glyf-unicode').on('blur', function(e) {
+ var val = $(this).val();
+ var ctlGlyfName = $('#setting-glyf-name');
+ if (!ctlGlyfName.val() && val.match(unicodeREG)) {
val = Number('0x' + val.split(',')[0].slice(1));
- this.value = string.getUnicodeName(val);
+ ctlGlyfName.val(string.getUnicodeName(val));
}
});
this.setFields(setting || {});
diff --git a/src/fonteditor/widget/loader.js b/src/fonteditor/widget/loader.js
index 10f1206..da3888f 100644
--- a/src/fonteditor/widget/loader.js
+++ b/src/fonteditor/widget/loader.js
@@ -180,7 +180,7 @@ define(
loadSVGFile(file, options);
}
}
- else if (options.type == 'ttf' || options.type == 'woff' || options.type == 'eot'){
+ else if (options.type == 'ttf' || options.type == 'woff' || options.type == 'eot') {
if (file instanceof ArrayBuffer) {
loadSFNTBinary(file, options);
}
diff --git a/src/fonteditor/widget/ttfmanager.js b/src/fonteditor/widget/ttfmanager.js
index 5b9153a..041abf9 100644
--- a/src/fonteditor/widget/ttfmanager.js
+++ b/src/fonteditor/widget/ttfmanager.js
@@ -12,6 +12,7 @@ define(
var lang = require('common/lang');
var History = require('editor/widget/History');
var TTF = require('ttf/ttf');
+ var string = require('ttf/util/string');
/**
* 清除glyf编辑状态
@@ -94,8 +95,23 @@ define(
* @return {this}
*/
Manager.prototype.insertGlyf = function(glyf, beforeIndex) {
+ var glyfList = this.ttf.getGlyf();
+ var unicode = 0x20;
+ // 找到unicode的最大值
+ for (var i = glyfList.length - 1; i > 0 ; i--) {
+ var g = glyfList[i];
+ if (g.unicode && g.unicode.length) {
+ var u = Math.max.apply(null, g.unicode);
+ unicode = Math.max(u, unicode);
+ }
+ }
+
+ unicode++;
+ glyf.unicode = [unicode];
+ glyf.name = string.getUnicodeName(unicode);
glyf.modify = 'new';
+
this.ttf.insertGlyf(glyf, beforeIndex);
this.fireChange(true);
diff --git a/src/ttf/ttf.js b/src/ttf/ttf.js
index bf1f503..f6c2bd4 100644
--- a/src/ttf/ttf.js
+++ b/src/ttf/ttf.js
@@ -297,26 +297,19 @@ define(
var glyfList = this.getGlyf(indexList);
var changed = false;
- // 左右边轴
- if (undefined !== setting.leftSideBearing || undefined !== setting.rightSideBearing) {
+ // 左边轴
+ if (undefined !== setting.leftSideBearing) {
changed = true;
glyfList.forEach(function(g) {
- // 设置左边轴
- if (undefined !== setting.leftSideBearing && g.leftSideBearing != setting.leftSideBearing) {
+ if (g.leftSideBearing != setting.leftSideBearing) {
var offset = setting.leftSideBearing - g.leftSideBearing;
g.leftSideBearing = g.xMin = setting.leftSideBearing;
g.xMax += offset;
-
- if (undefined !== setting.rightSideBearing) {
- g.advanceWidth = g.xMax + offset;
- }
- else {
- g.advanceWidth += offset;
- }
+ g.advanceWidth += offset;
if (g.contours && g.contours.length) {
g.contours.forEach(function(contour) {
@@ -324,13 +317,20 @@ define(
});
}
}
- else if (undefined !== setting.rightSideBearing) {
- g.advanceWidth = g.xMax + setting.rightSideBearing;
- }
});
}
+ // 右边轴
+ if (undefined !== setting.rightSideBearing) {
+
+ changed = true;
+
+ glyfList.forEach(function(g) {
+ g.advanceWidth = g.xMax + setting.rightSideBearing;
+ });
+ }
+
// 基线高度
if (undefined !== setting.verticalAlign) {