That makes sense, but the picture with 'unaligned seems strange (attached). It looks like each individual character is being pixel aligned, and also the vertical pixel drop doesn't happen until it's 0.7 pixels down. Does this make sense?

On 12/16/2013 08:15 AM, Matthew Flatt wrote:
Did you mean to pass 'unaligned instead of 'aligned as the last
argument to `find-or-create-font`? That should disable pixel alignment.

At Mon, 16 Dec 2013 01:28:23 -0500, David Vanderson wrote:

It seems that draw-text always pixel-aligns its text. In the example
below, I draw a black "hello" on top of a red one, with a pixel offset
of 0, 0.1, 0.2, . . . 0.9. At least for me, I see no change until 0.5,
where the black text jumps a whole pixel (see attached image).

Am I missing something? Do others see this behavior?  (I'm on Linux)


#lang racket/gui

(define (draw-text dc offset)
    (send dc set-text-foreground "red")
    (send dc draw-text "hello" 0 0 #t)
    (send dc set-text-foreground "black")
    (send dc draw-text "hello" offset offset #t))

(define (draw-screen canvas dc)
    (send dc set-smoothing 'smoothed)
    (send dc set-font
          (send the-font-list find-or-create-font
                12 'default 'normal 'normal #f 'smoothed #f 'aligned))
    (send dc set-initial-matrix (vector 1 0 0 1 0 0))
    (for ((i 10))
      (draw-text dc (/ i 10.0))
      (send dc translate 50 0)))

(define frame (new frame% (label "Test draw-text")))

(define canvas
    (new canvas%
         (parent frame)
         (min-width 500)
         (min-height 100)
         (paint-callback draw-screen)))

(send frame show #t)

<<attachment: draw-text2-unaligned.png>>

  Racket Developers list:

Reply via email to