Skip to content

Commit

Permalink
add ttf test case
Browse files Browse the repository at this point in the history
  • Loading branch information
kekee000 committed Apr 26, 2015
1 parent 7484e46 commit 1781567
Show file tree
Hide file tree
Showing 27 changed files with 758 additions and 72 deletions.
4 changes: 3 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,4 +39,6 @@ fonteditor 在线ttf字体编辑器

16. 2015-4-9 增加图像导入参数设置,优化导入图形.

16. 2015-4-12 增加同步字体功能.
17. 2015-4-12 增加同步字体功能.

18. 2015-4-12 增加otf字体读取和转换ttf功能.
8 changes: 6 additions & 2 deletions demo/js/ttfparse.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,9 @@ define(
var reader = new FileReader();
reader.onload = function(e) {

var ttfReader = new ttfreader();
var ttfReader = new ttfreader({
hinting: true
});
var ttfData = ttfReader.read(e.target.result);
console.log(ttfData);

Expand All @@ -44,7 +46,9 @@ define(
type: 'binary',
url: './test/baiduHealth.ttf',
onSuccess: function(binaryData) {
var ttfReader = new ttfreader();
var ttfReader = new ttfreader({
hinting: true
});
var ttfData = ttfReader.read(binaryData);

console.log(ttfData);
Expand Down
Binary file modified demo/test/baiduHealth.ttf
Binary file not shown.
24 changes: 12 additions & 12 deletions src/ttf/table/CFF.js
Original file line number Diff line number Diff line change
Expand Up @@ -42,15 +42,15 @@ define(
* @param {Object} reader 读取器
* @return {Object} 头部字段
*/
function parseCFFHeader(reader) {
var header = {};
header.startOffset = reader.offset;
header.endOffset = header.startOffset + 4;
header.formatMajor = reader.readUint8();
header.formatMinor = reader.readUint8();
header.size = reader.readUint8();
header.offsetSize = reader.readUint8();
return header;
function parseCFFHead(reader) {
var head = {};
head.startOffset = reader.offset;
head.endOffset = head.startOffset + 4;
head.formatMajor = reader.readUint8();
head.formatMinor = reader.readUint8();
head.size = reader.readUint8();
head.offsetSize = reader.readUint8();
return head;
}

/**
Expand Down Expand Up @@ -116,14 +116,14 @@ define(
var offset = this.offset;
reader.seek(offset);

var header = parseCFFHeader(reader);
var nameIndex = parseCFFIndex(reader, header.endOffset, string.getString);
var head = parseCFFHead(reader);
var nameIndex = parseCFFIndex(reader, head.endOffset, string.getString);
var topDictIndex = parseCFFIndex(reader, nameIndex.endOffset);
var stringIndex = parseCFFIndex(reader, topDictIndex.endOffset, string.getString);
var globalSubrIndex = parseCFFIndex(reader, stringIndex.endOffset);

var cff = {
header: header
head: head
};

// 全局子glyf数据
Expand Down
15 changes: 10 additions & 5 deletions src/ttf/ttfwriter.js
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,18 @@ define(
* @param {Object} ttf ttf对象
*/
function prepareDump(ttf) {

if (!ttf.glyf || ttf.glyf.length === 0) {
error.raise(10201);
}

if (!ttf['OS/2'] || !ttf.head || !ttf.name) {
error.raise(10204);
}


var tables = SUPPORT_TABLES.slice(0);
ttf.writeOptions = {};

// hinting tables direct copy
if (this.options.hinting) {
['cvt', 'fpgm', 'prep', 'gasp'].forEach(function (table) {
Expand Down Expand Up @@ -77,10 +86,6 @@ define(

ttf.head.modified = Date.now();

if (!ttf.glyf || ttf.glyf.length === 0) {
error.raise(10201);
}

var checkUnicodeRepeat = {}; // 检查是否有重复代码点

// 将glyf的代码点按小到大排序
Expand Down
26 changes: 26 additions & 0 deletions src/ttf/util/base642bytes.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
/**
* @file base64字符串转数组
* @author mengke01(kekee000@gmail.com)
*/


define(
function (require) {

/**
* base64字符串转数组
* @param {string} base64 base64字符串
* @return {Array} 数组
*/
function base642bytes(base64) {
var str = atob(base64);
var result = [];
for (var i = 0, l = str.length; i < l; i++) {
result.push(str[i].charCodeAt(0));
}
return result;
}

return base642bytes;
}
);
8 changes: 2 additions & 6 deletions src/ttf/util/bytes2base64.js
Original file line number Diff line number Diff line change
@@ -1,12 +1,8 @@
/**
* @file bytes2base64.js
* @author mengke01
* @date
* @description
* 二进制byte流转base64编码
* @file 二进制byte流转base64编码
* @author mengke01(kekee000@gmail.com)
*/


define(
function (require) {

Expand Down
4 changes: 2 additions & 2 deletions src/ttf/util/optimizettf.js
Original file line number Diff line number Diff line change
Expand Up @@ -57,8 +57,8 @@ define(
});

// 过滤无轮廓字体
ttf.glyf = ttf.glyf.filter(function (glyf) {
return glyf.contours && glyf.contours.length;
ttf.glyf = ttf.glyf.filter(function (glyf, index) {
return index === 0 || glyf.contours && glyf.contours.length;
});

if (!repeatList.length) {
Expand Down
3 changes: 2 additions & 1 deletion test/SpecRunner.html
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,8 @@
baseUrl: '../src',
paths: {
demo: '../demo/js',
test: '../unittest/spec'
test: '../test/spec',
data: '../test/data'
}
});
define('jquery', window.jQuery);
Expand Down
7 changes: 7 additions & 0 deletions test/data/BalladeContour.otf.js

Large diffs are not rendered by default.

Loading

0 comments on commit 1781567

Please sign in to comment.