UNPKG

pdfjs-dist

Version:

Generic build of Mozilla's PDF.js library.

104 lines (100 loc) 4.9 kB
/** * @licstart The following is the entire license notice for the * Javascript code in this page * * Copyright 2018 Mozilla Foundation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * @licend The above is the entire license notice for the * Javascript code in this page */ "use strict"; var _fonts = require("../../core/fonts"); var _stream = require("../../core/stream"); var _type1_parser = require("../../core/type1_parser"); describe('Type1Parser', function () { it('splits tokens', function () { var stream = new _stream.StringStream('/BlueValues[-17 0]noaccess def'); var parser = new _type1_parser.Type1Parser(stream, false, _fonts.SEAC_ANALYSIS_ENABLED); expect(parser.getToken()).toEqual('/'); expect(parser.getToken()).toEqual('BlueValues'); expect(parser.getToken()).toEqual('['); expect(parser.getToken()).toEqual('-17'); expect(parser.getToken()).toEqual('0'); expect(parser.getToken()).toEqual(']'); expect(parser.getToken()).toEqual('noaccess'); expect(parser.getToken()).toEqual('def'); expect(parser.getToken()).toEqual(null); }); it('handles glued tokens', function () { var stream = new _stream.StringStream('dup/CharStrings'); var parser = new _type1_parser.Type1Parser(stream, false, _fonts.SEAC_ANALYSIS_ENABLED); expect(parser.getToken()).toEqual('dup'); expect(parser.getToken()).toEqual('/'); expect(parser.getToken()).toEqual('CharStrings'); }); it('ignores whitespace', function () { var stream = new _stream.StringStream('\nab c\t'); var parser = new _type1_parser.Type1Parser(stream, false, _fonts.SEAC_ANALYSIS_ENABLED); expect(parser.getToken()).toEqual('ab'); expect(parser.getToken()).toEqual('c'); }); it('parses numbers', function () { var stream = new _stream.StringStream('123'); var parser = new _type1_parser.Type1Parser(stream, false, _fonts.SEAC_ANALYSIS_ENABLED); expect(parser.readNumber()).toEqual(123); }); it('parses booleans', function () { var stream = new _stream.StringStream('true false'); var parser = new _type1_parser.Type1Parser(stream, false, _fonts.SEAC_ANALYSIS_ENABLED); expect(parser.readBoolean()).toEqual(1); expect(parser.readBoolean()).toEqual(0); }); it('parses number arrays', function () { var stream = new _stream.StringStream('[1 2]'); var parser = new _type1_parser.Type1Parser(stream, false, _fonts.SEAC_ANALYSIS_ENABLED); expect(parser.readNumberArray()).toEqual([1, 2]); stream = new _stream.StringStream('[ 1 2 ]'); parser = new _type1_parser.Type1Parser(stream, false, _fonts.SEAC_ANALYSIS_ENABLED); expect(parser.readNumberArray()).toEqual([1, 2]); }); it('skips comments', function () { var stream = new _stream.StringStream('%!PS-AdobeFont-1.0: CMSY10 003.002\n' + '%%Title: CMSY10\n' + '%Version: 003.002\n' + 'FontDirectory'); var parser = new _type1_parser.Type1Parser(stream, false, _fonts.SEAC_ANALYSIS_ENABLED); expect(parser.getToken()).toEqual('FontDirectory'); }); it('parses font program', function () { var stream = new _stream.StringStream('/ExpansionFactor 99\n' + '/Subrs 1 array\n' + 'dup 0 1 RD x noaccess put\n' + 'end\n' + '/CharStrings 46 dict dup begin\n' + '/.notdef 1 RD x ND\n' + 'end'); var parser = new _type1_parser.Type1Parser(stream, false, _fonts.SEAC_ANALYSIS_ENABLED); var program = parser.extractFontProgram(); expect(program.charstrings.length).toEqual(1); expect(program.properties.privateData.ExpansionFactor).toEqual(99); }); it('parses font header font matrix', function () { var stream = new _stream.StringStream('/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def\n'); var parser = new _type1_parser.Type1Parser(stream, false, _fonts.SEAC_ANALYSIS_ENABLED); var props = {}; parser.extractFontHeader(props); expect(props.fontMatrix).toEqual([0.001, 0, 0, 0.001, 0, 0]); }); it('parses font header encoding', function () { var stream = new _stream.StringStream('/Encoding 256 array\n' + '0 1 255 {1 index exch /.notdef put} for\n' + 'dup 33 /arrowright put\n' + 'readonly def\n'); var parser = new _type1_parser.Type1Parser(stream, false, _fonts.SEAC_ANALYSIS_ENABLED); var props = { overridableEncoding: true }; parser.extractFontHeader(props); expect(props.builtInEncoding[33]).toEqual('arrowright'); }); });