add compond glyf
This commit is contained in:
@@ -16,8 +16,9 @@ function(require) {
|
|||||||
"xMax": 521,
|
"xMax": 521,
|
||||||
"yMin": -27,
|
"yMin": -27,
|
||||||
"yMax": 475,
|
"yMax": 475,
|
||||||
"advanceWidth": 520,
|
"advanceWidth": 530,
|
||||||
|
"unicode": 57395,
|
||||||
|
"name": "uniE033",
|
||||||
"contours": [
|
"contours": [
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -45,7 +45,7 @@ define(
|
|||||||
// 重置形状
|
// 重置形状
|
||||||
this.render.reset();
|
this.render.reset();
|
||||||
|
|
||||||
var rightSideBearing = offsetX + font.advanceWidth + font.xMin;
|
var rightSideBearing = offsetX + font.advanceWidth;
|
||||||
initAxis.call(this, {
|
initAxis.call(this, {
|
||||||
x: offsetX,
|
x: offsetX,
|
||||||
y: offsetY,
|
y: offsetY,
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ define(
|
|||||||
function(require) {
|
function(require) {
|
||||||
var glyFlag = require('../enum/glyFlag');
|
var glyFlag = require('../enum/glyFlag');
|
||||||
var table = require('./table');
|
var table = require('./table');
|
||||||
|
var componentFlag = require('../enum/componentFlag');
|
||||||
|
|
||||||
function readSimpleGlyf(reader, ttf, offset, val) {
|
function readSimpleGlyf(reader, ttf, offset, val) {
|
||||||
|
|
||||||
@@ -179,11 +180,48 @@ define(
|
|||||||
delete val.endPtsOfContours;
|
delete val.endPtsOfContours;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
val.Compound = true;
|
val.compound = true;
|
||||||
|
val.glyf = [];
|
||||||
// 读取复杂字形
|
// 读取复杂字形
|
||||||
//throw 'not support Compound glyf';
|
do {
|
||||||
console.error('not support Compound glyf', val);
|
var glyf = {};
|
||||||
}
|
var flags = glyf.flags = reader.readUint16();
|
||||||
|
val.glyphIndex = reader.readUint16();
|
||||||
|
var arg1, arg2, scaleX = 1, scaleY = 1;
|
||||||
|
if (componentFlag.ARG_1_AND_2_ARE_WORDS & flags) {
|
||||||
|
if (componentFlag.ARGS_ARE_XY_VALUES & flags) {
|
||||||
|
arg1 = reader.readUint16();
|
||||||
|
arg2 = reader.readUint16();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
arg1 = reader.readInt16();
|
||||||
|
arg2 = reader.readInt16();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (componentFlag.ARGS_ARE_XY_VALUES & flags) {
|
||||||
|
arg1 = reader.readUint8();
|
||||||
|
arg2 = reader.readUint8();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
arg1 = reader.readInt8();
|
||||||
|
arg2 = reader.readInt8();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (componentFlag.ROUND_XY_TO_GRID & flags) {
|
||||||
|
arg1 = Math.round(arg1);
|
||||||
|
arg2 = Math.round(arg2);
|
||||||
|
}
|
||||||
|
glyf.x = arg1;
|
||||||
|
glyf.y = arg2;
|
||||||
|
|
||||||
|
val.glyf.push(glyf);
|
||||||
|
|
||||||
|
}
|
||||||
|
while(componentFlag.MORE_COMPONENTS & flags);
|
||||||
|
}
|
||||||
|
|
||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user