[racket-dev] draw-text always pixel aligned?
Thank you - I'll look into it.
On 12/16/2013 02:14 PM, Matthew Flatt wrote:
> Yes, it's the same on Mac and Windows.
>
> At Mon, 16 Dec 2013 14:12:18 -0500, David Vanderson wrote:
>> Thanks for looking into it. Can you confirm if you see similar output on
>> a different platform (Mac or Win)?
>>
>> On 12/16/2013 12:26 PM, Matthew Flatt wrote:
>>> I'm not sure about that part. I've confirmed that the cairo_move_to()
>>> call just before pango_cairo_show_layout_line() varies the "y" argument
>>> by 0.1, and I don't see any options that would affect vertical
>>> alignment.
>>>
>>> At Mon, 16 Dec 2013 10:37:39 -0500, David Vanderson wrote:
>>>> 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:
>>>>>> Hello,
>>>>>>
>>>>>> 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)
>>>>>>
>>>>>> Thanks,
>>>>>> Dave
>>>>>>
>>>>>>
>>>>>> #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)
>>>>
>> ------------------------------------------------------------------------------
>>>> [image/png "draw-text2-unaligned.png"] [~/Desktop & open] [~/Temp & open]
>>>> .