svg2ttf
Version:
Converts SVG font to TTF font
51 lines (44 loc) • 1.23 kB
JavaScript
var _ = require('lodash')
// Taken from the punycode library
function ucs2encode (array) {
return _.map(array, function (value) {
var output = ''
if (value > 0xFFFF) {
value -= 0x10000
output += String.fromCharCode(value >>> 10 & 0x3FF | 0xD800)
value = 0xDC00 | value & 0x3FF
}
output += String.fromCharCode(value)
return output
}).join('')
}
function ucs2decode (string) {
var output = []
var counter = 0
var length = string.length
var value
var extra
while (counter < length) {
value = string.charCodeAt(counter++)
if (value >= 0xD800 && value <= 0xDBFF && counter < length) {
// high surrogate, and there is a next character
extra = string.charCodeAt(counter++)
if ((extra & 0xFC00) === 0xDC00) { // low surrogate
output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000)
} else {
// unmatched surrogate; only append this code unit, in case the next
// code unit is the high surrogate of a surrogate pair
output.push(value)
counter--
}
} else {
output.push(value)
}
}
return output
}
module.exports = {
encode: ucs2encode,
decode: ucs2decode
}