diff --git a/quad/quadwriter/layout.rkt b/quad/quadwriter/layout.rkt index 7524364a..cc11c94d 100644 --- a/quad/quadwriter/layout.rkt +++ b/quad/quadwriter/layout.rkt @@ -149,17 +149,19 @@ (define (do-string-quad q) ;; need to handle casing here so that it's reflected in subsequent sizing ops - (define cased-str ((match (quad-ref q :font-case) - [(or "upper" "uppercase") string-upcase] - [(or "lower" "lowercase" "down" "downcase") string-downcase] - [(or "capitalize" "capitalized") string-titlecase] - [_ values]) (unsafe-car (quad-elems q)))) + (define cased-str (and + (pair? (quad-elems q)) + ((match (quad-ref q :font-case) + [(or "upper" "uppercase") string-upcase] + [(or "lower" "lowercase" "down" "downcase") string-downcase] + [(or "title" "titlecase") string-titlecase] + [_ values]) (unsafe-car (quad-elems q))))) (struct-copy string-quad q:string [attrs #:parent quad (let ([attrs (quad-attrs q)]) (hash-ref! attrs :font-size default-font-size) attrs)] - [elems #:parent quad (list cased-str)] + [elems #:parent quad (if cased-str (list cased-str) null)] [size #:parent quad (make-size-promise q cased-str)])) (define (generic->typed-quad q)