fonteditor/src/ttf/ttfreader.js
2014-08-29 08:41:23 +08:00

75 lines
1.7 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* @file ttfreader.js
* @author mengke01
* @date
* @description
* ttf定义
*
* thanks to
* ynakajima/ttf.js
* https://github.com/ynakajima/ttf.js
*/
define(
function(require) {
var directory = require('./table/directory');
var supportTables = require('./table/support');
var reader = require('./reader');
/**
* 初始化
*/
function init() {
var reader = this.reader;
var ttf = this.ttf;
// version
ttf.version = reader.readFixed(0);
// num tables
ttf.numTables = reader.readUint16();
// searchRenge
ttf.searchRenge = reader.readUint16();
// entrySelector
ttf.entrySelector = reader.readUint16();
// rengeShift
ttf.rengeShift = reader.readUint16();
ttf.tables = new directory(reader.offset).read(reader, ttf);
// 读取支持的表数据
Object.keys(supportTables).forEach(function(tableName) {
// console.log(tableName);
var offset = ttf.tables[tableName].offset;
ttf[tableName] = new supportTables[tableName](offset).read(reader, ttf);
});
}
/**
* TTF的构造函数
*
* @constructor
*/
function TTFReader() {
}
/**
* 获取解析后的ttf文档
*
* @return {Object} ttf文档
*/
TTFReader.prototype.read = function(buffer) {
this.reader = new reader(buffer, 0, buffer.byteLength, false);
this.ttf = {};
init.call(this);
return this.ttf;
};
return TTFReader;
}
);