adjust setting

This commit is contained in:
kekee000
2014-11-25 22:43:09 +08:00
parent 5d09211c5d
commit fd2e61bbdf
5 changed files with 57 additions and 31 deletions

View File

@@ -11,7 +11,6 @@
<section class="navbar navbar-inverse" role="navigation">
<button data-action="new" type="button" class="btn btn-primary btn-sm" title="新建ttf字体文件">新建</button>
<button data-action="open" type="button" class="btn btn-primary btn-sm" title="打开ttf,woff,eot格式字体文件">打开</button>
<button data-action="import" type="button" class="btn btn-primary btn-sm" title="导入ttf,woff,svg,eot格式字体文件">导入</button>
<div class="btn-group">
<button type="button" class="btn btn-primary btn-sm dropdown-toggle" data-toggle="dropdown">
@@ -21,19 +20,32 @@
<ul class="dropdown-menu" role="menu">
<li data-action="add-new"><a>新字形</a></li>
<li data-action="import" title="导入ttf,woff,svg,eot格式字体文件"><a>从文件中导入</a></li>
<li data-action="add-online"><a>在线字体</a></li>
<li data-action="add-url"><a>线上地址</a></li>
<li data-action="add-url"><a>字体URL</a></li>
</ul>
</div>
<a id="export-btn" href="#" data-action="export" data-type="ttf" class="btn btn-success btn-sm">导出ttf</a>
<a id="export-btn-woff" href="#" data-action="export" data-type="woff" class="btn btn-success btn-sm">导出woff</a>
<a id="export-btn-svg" href="#" data-action="export" data-type="svg" class="btn btn-success btn-sm">导出svg</a>
<a id="export-btn-eot" href="#" data-action="export" data-type="eot" class="btn btn-success btn-sm">导出eot</a>
<a id="export-btn-zip" href="#" data-action="export" data-type="zip" class="btn btn-success btn-sm">导出zip</a>
<a id="export-btn-zip" href="#" data-action="export" data-type="zip" class="btn btn-success btn-sm" title="包含ttf,woff,eot,svg等格式">导出zip</a>
<button data-action="save" type="button" class="btn btn-warning btn-sm">保存项目</button>
<div class="btn-group">
<button type="button" class="btn btn-info btn-sm dropdown-toggle" data-toggle="dropdown">
调整字形
<span class="caret"></span>
</button>
<ul class="dropdown-menu" role="menu">
<li><a data-action="setting-glyf">字形信息</a></li>
<li><a data-action="setting-adjust-pos">调整位置</a></li>
<li><a data-action="setting-adjust-glyf">缩放字形</a></li>
</ul>
</div>
<div class="btn-group">
<button type="button" class="btn btn-info btn-sm dropdown-toggle" data-toggle="dropdown">
@@ -44,10 +56,7 @@
<ul class="dropdown-menu" role="menu">
<li><a data-action="setting-unicode">代码点</a></li>
<li><a data-action="setting-name">字体信息</a></li>
<li><a data-action="setting-glyf">形信息</a></li>
<li><a data-action="setting-adjust-pos">调整位置</a></li>
<li><a data-action="setting-adjust-glyf">缩放字形</a></li>
<li><a data-action="setting-metrics">调整字体度量</a></li>
<li><a data-action="setting-metrics">体度量</a></li>
<li><a data-action="setting-editor">编辑器</a></li>
</ul>
</div>
@@ -62,8 +71,8 @@
<ul class="dropdown-menu" role="menu">
<li><a data-format="ttf" data-action="preview">ttf字体</a></li>
<li><a data-format="woff" data-action="preview">woff字体</a></li>
<li><a data-format="svg" data-action="preview">svg字体</a></li>
<li><a data-format="eot" data-action="preview">eot字体</a></li>
<li><a data-format="svg" data-action="preview" title="仅支持Safari">svg字体</a></li>
<li><a data-format="eot" data-action="preview" title="仅支持IE">eot字体</a></li>
</ul>
</div>
<a class="i-github forkme" href="https://github.com/kekee000/fonteditor" target="_blank">Fork me on Github</a>

View File

@@ -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 = ''
+ '<div class="form-inline">'
@@ -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 || {});

View File

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

View File

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

View File

@@ -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;
}
if (g.contours && g.contours.length) {
g.contours.forEach(function(contour) {
@@ -324,10 +317,17 @@ 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;
});
}