add ttf writer

This commit is contained in:
mkwiser
2014-09-21 22:50:59 +08:00
parent b4a155a6bc
commit 9ad5f70a9d
5 changed files with 249 additions and 18 deletions

28
demo/filesystem.html Normal file
View File

@@ -0,0 +1,28 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>文件系统</title>
<script src="./lib/esl.js"></script>
<script src="./lib/jquery.min.js"></script>
</head>
<body>
<input id="upload-file" type="file">
<script>
require.config({
baseUrl: '../src',
paths: {
demo: '../demo/js',
}
});
define('jquery', $);
</script>
<script>
require(['demo/filesystem']);
</script>
</body>
</html>

88
demo/js/filesystem.js Normal file
View File

@@ -0,0 +1,88 @@
/**
* @file filesystem.js
* @author mengke01
* @date
* @description
* 文件系统入口
*/
define(
function(require) {
function errorHandler(e) {
var msg = '';
switch (e.code) {
case FileError.QUOTA_EXCEEDED_ERR:
msg = 'QUOTA_EXCEEDED_ERR';
break;
case FileError.NOT_FOUND_ERR:
msg = 'NOT_FOUND_ERR';
break;
case FileError.SECURITY_ERR:
msg = 'SECURITY_ERR';
break;
case FileError.INVALID_MODIFICATION_ERR:
msg = 'INVALID_MODIFICATION_ERR';
break;
case FileError.INVALID_STATE_ERR:
msg = 'INVALID_STATE_ERR';
break;
default:
msg = 'Unknown Error';
break;
};
console.log('Error: ' + msg);
}
function onInitFs(fs) {
fs.root.getFile('log.txt', {create: true}, function(fileEntry) {
// Create a FileWriter object for our FileEntry (log.txt).
fileEntry.createWriter(function(fileWriter) {
fileWriter.onwriteend = function(e) {
console.log('Write completed.');
console.log(fileEntry.name);
console.log(fileEntry.fullPath);
};
fileWriter.onerror = function(e) {
console.log('Write failed: ' + e.toString());
};
// Create a new Blob and write it to log.txt.
var bb = new Blob(['Lorem Ipsum'], {
type: 'text/plain'
}); // Note: window.WebKitBlobBuilder in Chrome 12.
fileWriter.write(bb);
}, errorHandler);
}, errorHandler);
}
var entry = {
/**
* 初始化
*/
init: function () {
window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem;
window.requestFileSystem(window.TEMPORARY, 1024*1024, onInitFs, errorHandler);
}
};
entry.init();
return entry;
}
);

77
demo/js/ttfwriter.js Normal file
View File

@@ -0,0 +1,77 @@
/**
* @file ttfwriter.js
* @author mengke01
* @date
* @description
* ttfwriter 入口
*/
define(
function(require) {
var Writer = require('ttf/writer');
var Reader = require('ttf/reader');
var ttf2base64 = require('ttf/ttf2base64');
var entry = {
/**
* 初始化
*/
init: function () {
var buffer = new ArrayBuffer(100);
var writer = new Writer(buffer, 0, 100);
// 基本类型
writer.writeInt8(10);
writer.writeInt16(10);
writer.writeInt32(10);
writer.writeUint8(10);
writer.writeUint16(10);
writer.writeUint32(10);
// 扩展类型
writer.writeString('baidu');
writer.writeFixed(12.36);
writer.writeLongDateTime(new Date());
// 测试seek
writer.seek(50);
writer.writeFixed(12.36);
writer.head();
writer.writeFixed(12.36);
writer.writeBytes([3, 4, 5]);
var reader = new Reader(buffer, 0, 100);
console.log(reader.readInt8());
console.log(reader.readInt16());
console.log(reader.readInt32());
console.log(reader.readUint8());
console.log(reader.readUint16());
console.log(reader.readUint32());
console.log(reader.readString(reader.offset, 5));
console.log(reader.readFixed());
console.log(reader.readLongDateTime());
console.log(reader.readFixed());
console.log(reader.readBytes(3));
console.log(reader.readFixed(50));
var base64str = 'data:font/ttf;charset=utf-8;base64,' + ttf2base64(buffer.slice(0, 54));
var saveBtn = $('.saveas');
saveBtn.attr('href', base64str);
saveBtn.attr('download', 'save.ttf');
}
};
entry.init();
return entry;
}
);

28
demo/ttfwriter.html Normal file
View File

@@ -0,0 +1,28 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>font编辑器</title>
<script src="./lib/esl.js"></script>
<script src="./lib/jquery.min.js"></script>
</head>
<body>
<a class="saveas" href="" download="">保存</a>
<script>
require.config({
baseUrl: '../src',
paths: {
demo: '../demo/js',
}
});
define('jquery', $);
</script>
<script>
require(['demo/ttfwriter']);
</script>
</body>
</html>