private void readDict (Range r) {
        this.pos = r.getStart ();
        while (this.pos < r.getEnd ()) {
            int cmd = readCommand (false);
            if (cmd == 1006) { // charstringtype, default=2
                this.charstringtype = (int) this.stack[0];
            } else if (cmd == 1007) { // fontmatrix
                if (this.stackptr == 4) {
                    this.at = new AffineTransform (this.stack[0], this.stack[1],
                            this.stack[2], this.stack[3],
                            0, 0);
                } else {
                    this.at = new AffineTransform (this.stack[0], this.stack[1],
                            this.stack[2], this.stack[3],
                            this.stack[4], this.stack[5]);
                }
            } else if (cmd == 15) { // charset
                this.charsetbase = (int) this.stack[0];
            } else if (cmd == 16) { // encoding
                this.encodingbase = (int) this.stack[0];
            } else if (cmd == 17) { // charstrings
                this.charstringbase = (int) this.stack[0];
            } else if (cmd == 18) { // private
                this.privatesize = (int) this.stack[0];
                this.privatebase = (int) this.stack[1];
            } else if (cmd == 19) { // subrs (in Private dict)
                this.lsubrbase = this.privatebase + (int) this.stack[0];
                this.lsubrsoffset = calcoffset (this.lsubrbase);
            }
            this.stackptr = 0;
        }
    }