Skip to content

Commit 16eb31d

Browse files
author
substack
committed
qbzf support for --meta
1 parent 8a609cd commit 16eb31d

File tree

1 file changed

+28
-16
lines changed

1 file changed

+28
-16
lines changed

cmd.js

+28-16
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ if (argv.meta) {
3131
var compare = require('./lib/compare.js')
3232
var infiles = [].concat(argv.infile || []).concat(argv._)
3333
var index = 0
34+
var QBZF = null
3435
return pump(from(function (size, next) {
3536
if (index >= infiles.length) return next(null, null)
3637
var infile = infiles[index++]
@@ -42,26 +43,37 @@ if (argv.meta) {
4243
var keys = Object.keys(font.glyphs.glyphs)
4344
var unicodes = keys.map(k => font.glyphs.glyphs[k].unicodes)
4445
.filter(u => u.length > 0).sort(cmpu)
45-
var ranges = [], range = [null,null]
46-
var prev = []
47-
for (var i = 0; i < unicodes.length; i++) {
48-
var u = unicodes[i]
49-
if (range[0] === null) {
50-
range[0] = u.length === 1 ? u[0] : u
51-
} else if (diffu(prev,u) > 1) {
52-
range[1] = prev.length === 1 ? prev[0]+1 : [prev[0],prev[1]+1]
53-
ranges.push(range[1]-range[0] === 1 ? range[0] : range)
54-
range = [ u.length === 1 ? u[0] : u, null ]
55-
}
56-
prev = u
46+
} else {
47+
if (!QBZF) QBZF = require('./')
48+
var qbzf = QBZF(buf)
49+
var unicodes = []
50+
for (var k of qbzf._glyphs.keys()) {
51+
var u = k.split(',').map(Number)
52+
unicodes.push(u)
5753
}
58-
if (range[0] !== null) {
59-
range[1] = prev.length === 1 ? prev[0] : prev
54+
}
55+
var ranges = [], range = [null,null]
56+
var prev = []
57+
for (var i = 0; i < unicodes.length; i++) {
58+
var u = unicodes[i]
59+
if (range[0] === null) {
60+
range[0] = u.length === 1 ? u[0] : u
61+
} else if (diffu(prev,u) > 1) {
62+
range[1] = prev.length === 1 ? prev[0]+1 : [prev[0],prev[1]+1]
6063
ranges.push(range[1]-range[0] === 1 ? range[0] : range)
64+
range = [ u.length === 1 ? u[0] : u, null ]
6165
}
62-
next(null, JSON.stringify({ file: infile, unicodes: ranges })+'\n')
63-
} else {
66+
prev = u
67+
}
68+
if (range[0] !== null) {
69+
range[1] = prev.length === 1 ? prev[0] : prev
70+
ranges.push(range[1]-range[0] === 1 ? range[0] : range)
6471
}
72+
next(null, JSON.stringify({
73+
file: infile,
74+
type: fileType,
75+
unicodes: ranges,
76+
})+'\n')
6577
})
6678
}), outstream, onerror)
6779
return

0 commit comments

Comments
 (0)