You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
36 lines
843 B
Racket
36 lines
843 B
Racket
#lang racket/base
|
|
(require racket/class)
|
|
(provide PDFFont)
|
|
|
|
(define PDFFont
|
|
(class object%
|
|
(super-new)
|
|
(init-field [(@document document) #f]
|
|
[(@ascender ascender) #f]
|
|
[(@descender descender) #f]
|
|
[(@line-gap line-gap) #f]
|
|
[(@bbox bbox) #f])
|
|
(field [(@dictionary dictionary) #f]
|
|
[@embedded #f])
|
|
|
|
(abstract embed encode string-width)
|
|
|
|
(define/public (ref)
|
|
(unless @dictionary
|
|
(set! @dictionary (send @document ref)))
|
|
@dictionary)
|
|
|
|
(define/public (finalize)
|
|
(unless (or @embedded (not @dictionary))
|
|
(embed)
|
|
(set! @embedded #t)))
|
|
|
|
(define/public (line-height size [include-gap #f])
|
|
(define gap (if include-gap @line-gap 0))
|
|
(* (/ (+ @ascender gap (- @descender)) 1000.0) size))))
|
|
|
|
|
|
|
|
|
|
|