@@ -5453,29 +5453,29 @@ var CFFFont = (function CFFFontClosure() {
5453
5453
var CFFParser = (function CFFParserClosure () {
5454
5454
var CharstringValidationData = [
5455
5455
null ,
5456
- { id : 'hstem' , min : 2 , resetStack : true },
5456
+ { id : 'hstem' , min : 2 , resetStack : true , stem : true },
5457
5457
null ,
5458
- { id : 'vstem' , min : 2 , resetStack : true },
5458
+ { id : 'vstem' , min : 2 , resetStack : true , stem : true },
5459
5459
{ id : 'vmoveto' , min : 1 , resetStack : true },
5460
5460
{ id : 'rlineto' , min : 2 , resetStack : true },
5461
5461
{ id : 'hlineto' , min : 1 , resetStack : true },
5462
5462
{ id : 'vlineto' , min : 1 , resetStack : true },
5463
5463
{ id : 'rrcurveto' , min : 6 , resetStack : true },
5464
5464
null ,
5465
5465
{ id : 'callsubr' , min : 1 , undefStack : true },
5466
- { id : 'return' , min : 0 , resetStack : true },
5466
+ { id : 'return' , min : 0 , undefStack : true },
5467
5467
null , // 12
5468
5468
null ,
5469
5469
null , // endchar
5470
5470
null ,
5471
5471
null ,
5472
5472
null ,
5473
- { id : 'hstemhm' , min : 2 , resetStack : true },
5473
+ { id : 'hstemhm' , min : 2 , resetStack : true , stem : true },
5474
5474
null , // hintmask
5475
5475
null , // cntrmask
5476
5476
{ id : 'rmoveto' , min : 2 , resetStack : true },
5477
5477
{ id : 'hmoveto' , min : 1 , resetStack : true },
5478
- { id : 'vstemhm' , min : 2 , resetStack : true },
5478
+ { id : 'vstemhm' , min : 2 , resetStack : true , stem : true },
5479
5479
{ id : 'rcurveline' , min : 8 , resetStack : true },
5480
5480
{ id : 'rlinecurve' , min : 8 , resetStack : true },
5481
5481
{ id : 'vvcurveto' , min : 4 , resetStack : true },
@@ -5491,7 +5491,7 @@ var CFFParser = (function CFFParserClosure() {
5491
5491
null ,
5492
5492
{ id : 'and' , min : 2 , stackDelta : -1 },
5493
5493
{ id : 'or' , min : 2 , stackDelta : -1 },
5494
- { id : 'not' , min : 2 , stackDelta : - 1 },
5494
+ { id : 'not' , min : 1 , stackDelta : 0 },
5495
5495
null ,
5496
5496
null ,
5497
5497
null ,
@@ -5811,9 +5811,6 @@ var CFFParser = (function CFFParserClosure() {
5811
5811
} else if (value == 255 ) { // number (32 bit)
5812
5812
j += 4 ;
5813
5813
stackSize ++;
5814
- } else if (value == 18 || value == 23 ) {
5815
- hints += stackSize >> 1 ;
5816
- validationCommand = CharstringValidationData [value ];
5817
5814
} else if (value == 19 || value == 20 ) {
5818
5815
hints += stackSize >> 1 ;
5819
5816
j += (hints + 7 ) >> 3 ; // skipping right amount of hints flag data
@@ -5822,6 +5819,9 @@ var CFFParser = (function CFFParserClosure() {
5822
5819
validationCommand = CharstringValidationData [value ];
5823
5820
}
5824
5821
if (validationCommand ) {
5822
+ if (validationCommand .stem ) {
5823
+ hints += stackSize >> 1 ;
5824
+ }
5825
5825
if ('min' in validationCommand ) {
5826
5826
if (!undefStack && stackSize < validationCommand .min ) {
5827
5827
warn ('Not enough parameters for ' + validationCommand .id +
0 commit comments