设置名字和头部信息
This commit is contained in:
parent
069e408f50
commit
8aa5c9772c
@ -41,7 +41,7 @@ define(
|
||||
upFile.addEventListener('change', onUpFileChange);
|
||||
|
||||
ajaxBinaryFile({
|
||||
url: '../font/baiduHealth.ttf',
|
||||
url: '../test/baiduHealth.ttf',
|
||||
onSuccess: function(binaryData) {
|
||||
var ttfReader = new ttfreader();
|
||||
var ttfData = ttfReader.read(binaryData);
|
||||
|
@ -102,6 +102,7 @@ define(
|
||||
* @return {string} 字符串
|
||||
*/
|
||||
pad: function(str, size, ch) {
|
||||
str = String(str);
|
||||
if(str.length > size) {
|
||||
return str.slice(str.length - size);
|
||||
}
|
||||
|
@ -15,7 +15,7 @@ define(
|
||||
+ '<input data-field="fontFamily" type="text" class="form-control">'
|
||||
+ '</div>'
|
||||
+ '<div class="input-group input-group-sm">'
|
||||
+ '<span class="input-group-addon">字体子家族</span>'
|
||||
+ '<span class="input-group-addon">子字体家族</span>'
|
||||
+ '<input data-field="fontSubFamily" type="text" class="form-control">'
|
||||
+ '</div>'
|
||||
+ '<div class="input-group input-group-sm">'
|
||||
@ -29,34 +29,36 @@ define(
|
||||
+ '<div class="input-group input-group-sm">'
|
||||
+ '<span class="input-group-addon">PostScript名称</span>'
|
||||
+ '<input data-field="postScriptName" type="text" class="form-control">'
|
||||
+ '</div>'
|
||||
+ '<div class="input-group input-group-sm">'
|
||||
+ '<span class="input-group-addon">em框大小</span>'
|
||||
+ '<input data-field="unitsPerEm" type="number" min="64" max="16384" class="form-control" placeholder="1024~16384">'
|
||||
+ '</div>'
|
||||
+ '<div class="input-group input-group-sm">'
|
||||
+ '<span class="input-group-addon">最小可读尺寸</span>'
|
||||
+ '<input data-field="lowestRecPPEM" type="number" min="8" max="16384" class="form-control" placeholder="8~16384">'
|
||||
+ '</div>'
|
||||
+ '<div class="input-group input-group-sm">'
|
||||
+ '<span class="input-group-addon">创建日期</span>'
|
||||
+ '<input data-field="created" type="datetime-local" class="form-control">'
|
||||
+ '</div>';
|
||||
|
||||
|
||||
return require('./setting').derive({
|
||||
|
||||
title: '命名信息',
|
||||
title: '字体信息',
|
||||
|
||||
getTpl: function() {
|
||||
return tpl;
|
||||
},
|
||||
|
||||
set: function(setting) {
|
||||
this.getDialog().find('[data-field]').each(function(i, item) {
|
||||
item = $(item);
|
||||
item.val(setting[item.attr('data-field')] || '');
|
||||
});
|
||||
this.setFields(setting);
|
||||
},
|
||||
|
||||
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;
|
||||
var setting = this.getFields();
|
||||
return setting;
|
||||
}
|
||||
|
||||
});
|
||||
|
@ -11,6 +11,7 @@ define(
|
||||
function(require) {
|
||||
var lang = require('common/lang');
|
||||
var observable = require('common/observable');
|
||||
var pad = require('common/string').pad;
|
||||
|
||||
/**
|
||||
* 设置框函数
|
||||
@ -91,6 +92,21 @@ define(
|
||||
if (item.type == 'checkbox') {
|
||||
item.checked = setting[item.getAttribute('data-field')] ? 'checked' : '';
|
||||
}
|
||||
else if (item.type == 'datetime-local') {
|
||||
var val = setting[item.getAttribute('data-field')];
|
||||
var date;
|
||||
if (typeof(val) === 'string') {
|
||||
date = new Date(Date.parse(val));
|
||||
}
|
||||
else if(/^\d+$/.test(val)) {
|
||||
date = new Date(+val);
|
||||
}
|
||||
else {
|
||||
date = val;
|
||||
}
|
||||
item.value = date.getFullYear() + '-' + pad(date.getMonth() + 1, 2) + '-' + pad(date.getDate(), 2)
|
||||
+ 'T' + pad(date.getHours(), 2) + ':' + pad(date.getMinutes(), 2);
|
||||
}
|
||||
else {
|
||||
item = $(item);
|
||||
item.val(setting[item.attr('data-field')]);
|
||||
@ -113,11 +129,26 @@ define(
|
||||
setting[item.getAttribute('data-field')] = true;
|
||||
}
|
||||
}
|
||||
else if (item.type == 'datetime-local') {
|
||||
if (item.value) {
|
||||
setting[item.getAttribute('data-field')] = Date.parse(item.value.replace('T', ' '));
|
||||
}
|
||||
}
|
||||
else if (item.type == 'number') {
|
||||
if (item.value) {
|
||||
var val = +item.value;
|
||||
if (item.getAttribute('data-ceil')) {
|
||||
val = Math.floor(val);
|
||||
}
|
||||
setting[item.getAttribute('data-field')] = val;
|
||||
}
|
||||
}
|
||||
|
||||
else {
|
||||
item = $(item);
|
||||
var val = item.val().trim();
|
||||
if (val) {
|
||||
setting[item.attr('data-field')] = item.attr('data-ceil') ? Math.floor(val) : +val ;
|
||||
setting[item.attr('data-field')] = val;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
@ -25,8 +25,8 @@ define(
|
||||
var setting = {
|
||||
'unicode': require('../dialog/setting-unicode'),
|
||||
'name': require('../dialog/setting-name'),
|
||||
'adjust-pos': require('../dialog/setting-adjust-pos'),
|
||||
'adjust-glyf': require('../dialog/setting-adjust-glyf'),
|
||||
//'adjust-pos': require('../dialog/setting-adjust-pos'),
|
||||
//'adjust-glyf': require('../dialog/setting-adjust-glyf'),
|
||||
'online': require('../dialog/font-online')
|
||||
}
|
||||
|
||||
@ -152,10 +152,10 @@ define(
|
||||
if (ttf) {
|
||||
var dlg = new setting.name({
|
||||
onChange: function(setting) {
|
||||
program.ttfmanager.setName(setting);
|
||||
program.ttfmanager.setInfo(setting);
|
||||
}
|
||||
});
|
||||
dlg.show(ttf.name);
|
||||
dlg.show($.extend({}, ttf.head, ttf.name));
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -234,12 +234,22 @@ define(
|
||||
};
|
||||
|
||||
/**
|
||||
* 撤销
|
||||
* 设置名字和头部信息
|
||||
* @return {this}
|
||||
*/
|
||||
Manager.prototype.setName = function(name) {
|
||||
this.ttf.setName(name);
|
||||
return this;
|
||||
Manager.prototype.setInfo = function(info) {
|
||||
var changed = false;
|
||||
if (this.ttf.get().head.unitsPerEm != info.unitsPerEm) {
|
||||
changed = true;
|
||||
}
|
||||
this.ttf.setName(info);
|
||||
this.ttf.setHead(info);
|
||||
|
||||
if (changed) {
|
||||
this.fireChange(false);
|
||||
}
|
||||
|
||||
return this;
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -430,6 +430,26 @@ define(
|
||||
return this.ttf.name;
|
||||
};
|
||||
|
||||
/**
|
||||
* 设置head信息
|
||||
*
|
||||
* @return {Object} 头对象
|
||||
*/
|
||||
TTF.prototype.setHead = function(head) {
|
||||
if (head) {
|
||||
|
||||
// unitsperem
|
||||
if (head.unitsPerEm && head.unitsPerEm >= 64 && head.unitsPerEm <= 16384) {
|
||||
this.ttf.head.unitsPerEm = head.unitsPerEm;
|
||||
}
|
||||
|
||||
// lowestrecppem
|
||||
if (head.lowestRecPPEM && head.lowestRecPPEM >= 8 && head.lowestRecPPEM <= 16384) {
|
||||
this.ttf.head.lowestRecPPEM = head.lowestRecPPEM;
|
||||
} }
|
||||
return this.ttf.head;
|
||||
};
|
||||
|
||||
return TTF;
|
||||
}
|
||||
);
|
||||
|
@ -47,6 +47,11 @@ define(
|
||||
// 重置校验码
|
||||
ttf.head.checkSumAdjustment = 0;
|
||||
ttf.head.magickNumber = 0x5F0F3CF5;
|
||||
if (typeof(ttf.head.created) == 'string') {
|
||||
ttf.head.created = /^\d+$/.test(ttf.head.created) ? +ttf.head.created : Date.parse(ttf.head.created);
|
||||
}
|
||||
ttf.head.created = Date.now();
|
||||
ttf.head.modified = Date.now();
|
||||
|
||||
// 将glyf的代码点按小到大排序
|
||||
ttf.glyf.forEach(function(glyf) {
|
||||
|
@ -260,12 +260,15 @@ define(
|
||||
|
||||
var delta = -2077545600000; // new Date(1970, 1, 1).getTime() - new Date(1904, 1, 1).getTime();
|
||||
|
||||
if (typeof value === 'undefined') {
|
||||
if (typeof(value) === 'undefined') {
|
||||
value = delta;
|
||||
}
|
||||
else if (typeof value.getTime === 'function') {
|
||||
else if (typeof(value.getTime) === 'function') {
|
||||
value = value.getTime();
|
||||
}
|
||||
else if (/^\d+$/.test(value)){
|
||||
value = +value;
|
||||
}
|
||||
else {
|
||||
value = Date.parse(value);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user