|
|
|
@ -32,6 +32,11 @@ https://github.com/mbutterick/pdfkit/blob/master/lib/font/embedded.coffee
|
|
|
|
|
|
|
|
|
|
(struct efont pdf-font (font subset unicode widths scale encoding-cache) #:mutable)
|
|
|
|
|
|
|
|
|
|
(define (exactify x)
|
|
|
|
|
(if (and (integer? x) (inexact? x))
|
|
|
|
|
(inexact->exact x)
|
|
|
|
|
x))
|
|
|
|
|
|
|
|
|
|
(define (make-embedded-font name-arg [id #f])
|
|
|
|
|
(define font (cond
|
|
|
|
|
[(string? name-arg) (open-font name-arg)]
|
|
|
|
@ -43,10 +48,10 @@ https://github.com/mbutterick/pdfkit/blob/master/lib/font/embedded.coffee
|
|
|
|
|
(define widths (mhasheq 0 (glyph-advance-width (get-glyph font 0))))
|
|
|
|
|
(define name (font-postscript-name font))
|
|
|
|
|
(define scale (/ 1000.0 (font-units-per-em font)))
|
|
|
|
|
(define ascender (* (font-ascent font) scale))
|
|
|
|
|
(define descender (* (font-descent font) scale))
|
|
|
|
|
(define ascender (exactify (* (font-ascent font) scale)))
|
|
|
|
|
(define descender (exactify (* (font-descent font) scale)))
|
|
|
|
|
(define bbox (font-bbox font))
|
|
|
|
|
(define line-gap (* (font-linegap font) scale))
|
|
|
|
|
(define line-gap (exactify (* (font-linegap font) scale)))
|
|
|
|
|
(define encoding-cache (make-hash)) ; needs to be per font, not in top level of module
|
|
|
|
|
(efont
|
|
|
|
|
name id ascender descender line-gap bbox #f #f efont-embedded efont-encode efont-measure-string
|
|
|
|
|