Fix OS/2 table to match font yMax and yMin from head table

This commit is contained in:
Adil Allawi 2011-09-15 23:23:22 +01:00
parent 418c1d5454
commit cac74d7cb3

View File

@ -833,9 +833,11 @@ var Font = (function Font() {
var data = file.getBytes(length); var data = file.getBytes(length);
file.pos = previousPosition; file.pos = previousPosition;
if (tag == 'head') if (tag == 'head') {
// clearing checksum adjustment // clearing checksum adjustment
data[8] = data[9] = data[10] = data[11] = 0; data[8] = data[9] = data[10] = data[11] = 0;
data[17] |= 0x20; //Set font optimized for cleartype flag
}
return { return {
tag: tag, tag: tag,
@ -1008,7 +1010,7 @@ var Font = (function Font() {
var header = readOpenTypeHeader(font); var header = readOpenTypeHeader(font);
var numTables = header.numTables; var numTables = header.numTables;
var cmap, maxp, hhea, hmtx, vhea, vmtx; var cmap, maxp, hhea, hmtx, vhea, vmtx, head;
var tables = []; var tables = [];
for (var i = 0; i < numTables; i++) { for (var i = 0; i < numTables; i++) {
var table = readTableEntry(font); var table = readTableEntry(font);
@ -1022,6 +1024,8 @@ var Font = (function Font() {
hhea = table; hhea = table;
else if (table.tag == 'hmtx') else if (table.tag == 'hmtx')
hmtx = table; hmtx = table;
else if (table.tag == 'head')
head = table;
requiredTables.splice(index, 1); requiredTables.splice(index, 1);
} else { } else {
@ -1048,6 +1052,13 @@ var Font = (function Font() {
createOpenTypeHeader(header.version, ttf, numTables); createOpenTypeHeader(header.version, ttf, numTables);
if (requiredTables.indexOf('OS/2') != -1) { if (requiredTables.indexOf('OS/2') != -1) {
if (typeof(head) != 'undefined') {
var ymax = int16([head.data[42],head.data[43]]);
var ymin = int16([head.data[38],head.data[39]]) - 0x10000; //always negative
properties.ascent = ymax;
properties.descent = ymin;
}
tables.push({ tables.push({
tag: 'OS/2', tag: 'OS/2',
data: stringToArray(createOS2Table(properties)) data: stringToArray(createOS2Table(properties))