diff --git a/quad/qtest/test-docs-tester.pdf b/quad/qtest/test-docs-tester.pdf index 9ae45d58..afa87047 100644 Binary files a/quad/qtest/test-docs-tester.pdf and b/quad/qtest/test-docs-tester.pdf differ diff --git a/quad/qtest/test-emoji-tester.pdf b/quad/qtest/test-emoji-tester.pdf index 91edeae3..caef089d 100644 Binary files a/quad/qtest/test-emoji-tester.pdf and b/quad/qtest/test-emoji-tester.pdf differ diff --git a/quad/qtest/test-fallback-mini-tester.pdf b/quad/qtest/test-fallback-mini-tester.pdf index 54dff29e..c110f1a5 100644 Binary files a/quad/qtest/test-fallback-mini-tester.pdf and b/quad/qtest/test-fallback-mini-tester.pdf differ diff --git a/quad/qtest/test-fallback-mini.pdf b/quad/qtest/test-fallback-mini.pdf new file mode 100644 index 00000000..4055cbaf Binary files /dev/null and b/quad/qtest/test-fallback-mini.pdf differ diff --git a/quad/qtest/test-fallback-super-tester.pdf b/quad/qtest/test-fallback-super-tester.pdf index ae81d1af..8e304d4c 100644 Binary files a/quad/qtest/test-fallback-super-tester.pdf and b/quad/qtest/test-fallback-super-tester.pdf differ diff --git a/quad/qtest/test-hello-tester.pdf b/quad/qtest/test-hello-tester.pdf index 874e36e3..3a101a7c 100644 Binary files a/quad/qtest/test-hello-tester.pdf and b/quad/qtest/test-hello-tester.pdf differ diff --git a/quad/qtest/test-kafka-tester.pdf b/quad/qtest/test-kafka-tester.pdf index 4dfdabed..3e2a8634 100644 Binary files a/quad/qtest/test-kafka-tester.pdf and b/quad/qtest/test-kafka-tester.pdf differ diff --git a/quad/qtest/test-symbol-tester.pdf b/quad/qtest/test-symbol-tester.pdf index 7e91d410..07141559 100644 Binary files a/quad/qtest/test-symbol-tester.pdf and b/quad/qtest/test-symbol-tester.pdf differ diff --git a/quad/quad/atomize.rkt b/quad/quad/atomize.rkt index 5f94df60..5dc47968 100644 --- a/quad/quad/atomize.rkt +++ b/quad/quad/atomize.rkt @@ -92,6 +92,7 @@ ['emoji emoji-font-family] ['math math-font-family] [_ fallback-font-family])) + (hash-set! new-attrs run-key (eq-hash-code new-attrs)) (font-path-resolver new-attrs) new-attrs])) (cons maybe-fallback-attrs str))])))) diff --git a/quad/quad/scribblings/quad.scrbl b/quad/quad/scribblings/quad.scrbl index 44a8963f..00cf9d59 100644 --- a/quad/quad/scribblings/quad.scrbl +++ b/quad/quad/scribblings/quad.scrbl @@ -572,6 +572,10 @@ Whether the quad has bold styling applied. Activated only when value is @racket[ Whether the quad has italic styling applied. Activated only when value is @racket["true"]. } +@defthing[#:kind "attribute" font-tracking symbol?]{ +Spacing between characters. Value is given as a @tech{dimension string}. +} + @defthing[#:kind "attribute" line-height symbol?]{ Distance between baselines. Value is a @tech{dimension string}. } diff --git a/quad/quadwriter/attrs.rkt b/quad/quadwriter/attrs.rkt index 04601b90..8dd6c862 100644 --- a/quad/quadwriter/attrs.rkt +++ b/quad/quadwriter/attrs.rkt @@ -69,7 +69,7 @@ Naming guidelines font-features font-italic font-bold - character-tracking + font-tracking bg link href diff --git a/quad/quadwriter/layout.rkt b/quad/quadwriter/layout.rkt index 4d740fae..aba61b81 100644 --- a/quad/quadwriter/layout.rkt +++ b/quad/quadwriter/layout.rkt @@ -25,7 +25,7 @@ (define str (unsafe-car (quad-elems q))) (match-define (list x y) (quad-origin q)) (text doc str x y - #:tracking (quad-ref q :character-tracking 0) + #:tracking (quad-ref q :font-tracking 0) #:bg (quad-ref q :bg) #:features (quad-ref q :font-features default-font-features) #:link (quad-ref q :link)))) @@ -64,9 +64,11 @@ [str (font-size pdf (quad-ref q :font-size default-font-size)) (font pdf (path->string (quad-ref q font-path-key default-font-face))) - (+ (string-width pdf str - #:tracking (quad-ref q :character-tracking 0) - #:features (quad-ref q :font-features default-font-features)))] + (if (equal? str "\u00AD") + (quad-ref q :font-tracking 0) + (+ (string-width pdf str + #:tracking (quad-ref q :font-tracking 0) + #:features (quad-ref q :font-features default-font-features))))] [else 0])) (list string-size (quad-ref q :line-height (current-line-height pdf))))) @@ -75,12 +77,12 @@ [(? line-break-quad?) q] [_ (struct-copy - quad q:string - [attrs (let ([attrs (quad-attrs q)]) + string-quad q:string + [attrs #:parent quad (let ([attrs (quad-attrs q)]) (hash-ref! attrs :font-size default-font-size) attrs)] - [elems (quad-elems q)] - [size (make-size-promise q)])])) + [elems #:parent quad (quad-elems q)] + [size #:parent quad (make-size-promise q)])])) (define (draw-debug q doc [fill-color "#f99"] [stroke-color "#fcc"] [stroke-width 0.5]) diff --git a/quad/quadwriter/tags.rkt b/quad/quadwriter/tags.rkt index 7f7e127f..18585ef6 100644 --- a/quad/quadwriter/tags.rkt +++ b/quad/quadwriter/tags.rkt @@ -21,7 +21,6 @@ :keep-first-lines "2" :keep-last-lines "3" :font-size-adjust "100%" - :character-tracking "0" :hyphenate "true" :display (symbol->string (gensym))) attrs) exprs))