@@ -5379,29 +5379,29 @@ var CFFFont = (function CFFFontClosure() {
5379
5379
var CFFParser = (function CFFParserClosure () {
5380
5380
var CharstringValidationData = [
5381
5381
null ,
5382
- { id : 'hstem' , min : 2 , resetStack : true },
5382
+ { id : 'hstem' , min : 2 , resetStack : true , stem : true },
5383
5383
null ,
5384
- { id : 'vstem' , min : 2 , resetStack : true },
5384
+ { id : 'vstem' , min : 2 , resetStack : true , stem : true },
5385
5385
{ id : 'vmoveto' , min : 1 , resetStack : true },
5386
5386
{ id : 'rlineto' , min : 2 , resetStack : true },
5387
5387
{ id : 'hlineto' , min : 1 , resetStack : true },
5388
5388
{ id : 'vlineto' , min : 1 , resetStack : true },
5389
5389
{ id : 'rrcurveto' , min : 6 , resetStack : true },
5390
5390
null ,
5391
5391
{ id : 'callsubr' , min : 1 , undefStack : true },
5392
- { id : 'return' , min : 0 , resetStack : true },
5392
+ { id : 'return' , min : 0 , undefStack : true },
5393
5393
null , // 12
5394
5394
null ,
5395
5395
null , // endchar
5396
5396
null ,
5397
5397
null ,
5398
5398
null ,
5399
- { id : 'hstemhm' , min : 2 , resetStack : true },
5399
+ { id : 'hstemhm' , min : 2 , resetStack : true , stem : true },
5400
5400
null , // hintmask
5401
5401
null , // cntrmask
5402
5402
{ id : 'rmoveto' , min : 2 , resetStack : true },
5403
5403
{ id : 'hmoveto' , min : 1 , resetStack : true },
5404
- { id : 'vstemhm' , min : 2 , resetStack : true },
5404
+ { id : 'vstemhm' , min : 2 , resetStack : true , stem : true },
5405
5405
{ id : 'rcurveline' , min : 8 , resetStack : true },
5406
5406
{ id : 'rlinecurve' , min : 8 , resetStack : true },
5407
5407
{ id : 'vvcurveto' , min : 4 , resetStack : true },
@@ -5417,7 +5417,7 @@ var CFFParser = (function CFFParserClosure() {
5417
5417
null ,
5418
5418
{ id : 'and' , min : 2 , stackDelta : -1 },
5419
5419
{ id : 'or' , min : 2 , stackDelta : -1 },
5420
- { id : 'not' , min : 2 , stackDelta : - 1 },
5420
+ { id : 'not' , min : 1 , stackDelta : 0 },
5421
5421
null ,
5422
5422
null ,
5423
5423
null ,
@@ -5737,9 +5737,6 @@ var CFFParser = (function CFFParserClosure() {
5737
5737
} else if (value == 255 ) { // number (32 bit)
5738
5738
j += 4 ;
5739
5739
stackSize ++;
5740
- } else if (value == 18 || value == 23 ) {
5741
- hints += stackSize >> 1 ;
5742
- validationCommand = CharstringValidationData [value ];
5743
5740
} else if (value == 19 || value == 20 ) {
5744
5741
hints += stackSize >> 1 ;
5745
5742
j += (hints + 7 ) >> 3 ; // skipping right amount of hints flag data
@@ -5748,6 +5745,9 @@ var CFFParser = (function CFFParserClosure() {
5748
5745
validationCommand = CharstringValidationData [value ];
5749
5746
}
5750
5747
if (validationCommand ) {
5748
+ if (validationCommand .stem ) {
5749
+ hints += stackSize >> 1 ;
5750
+ }
5751
5751
if ('min' in validationCommand ) {
5752
5752
if (!undefStack && stackSize < validationCommand .min ) {
5753
5753
warn ('Not enough parameters for ' + validationCommand .id +
0 commit comments