Denis Oliver Kropp wrote:
> Phil Endecott wrote:
>> http://chezphil.org/tmp/dfb_rotation_1.patch
>
> Many thanks. I applied it to 1.1.x (only few conflicts).

Excellent.  I have found one further thing that needed changing:

--- DirectFB-1.0.0.orig/src/core/gfxcard.c      2007-03-03 
20:23:01.000000000 +0000
+++ DirectFB-1.0.0/src/core/gfxcard.c   2007-10-13 19:49:21.000000000 +0100
@@ -1582,9 +1582,12 @@
       D_ASSERT( bytes > 0 );
       D_ASSERT( font != NULL );

-     /* simple prechecks */
-     if (x > state->clip.x2 || y > state->clip.y2 ||
-         y + font->ascender - font->descender <= state->clip.y1) {
+     /* Simple prechecks to eliminate entirely-invisible text.
+        (This is only simple for non-rotated text.)
+        FIXME this is probably broken for non left-to-right fonts. */
+     if (font->up_unit_x==0.0 && font->up_unit_y==-1.0 &&
+         (x > state->clip.x2 || y > state->clip.y2 ||
+          y + font->ascender - font->descender <= state->clip.y1)) {
            return;
       }



>> My test program seems to show some off-by-one errors in the bounding 
>> box calculations, and perhaps some kerning problems.  I plan to fix 
>> this.  Let me know if you spot any other problems.
>
> Only problem I saw was DSTF_BOTTOMRIGHT with 270 degree rotation.

In the single glyph example (the first one) I had quite a few text 
pixels outside the bounding box.  Did you use a different font?

I was unsure whether it was OK for the text pixels to be _on_ the 
bounding box, as drawn; i.e. does DrawRect include the boundary or 
not?  Maybe it includes some edges but not others?


>> I am coming to the opinion that DirectFB would benefit from the use of 
>> fractional pixel positions.  This was somewhat crystalised when I read 
>> this article, which was linked to from LWN:
>> 
>> http://antigrain.com/research/font_rasterization/index.html
>
> Indeed, sub pixel positioning and text rendering would be nice. I
> started looking at blitting support for sub pixel rendered fonts,
> but thought with the current flags it's not fully possible.

OK.  I was wondering also about the advance and kerning values that 
FreeType returns, which are fractional and which we convert to integer 
pixels by truncation.  We could easily change this to 
round-to-nearest.  i.e:

FT value  |   Current pixel value  |  Better(?) pixel value
-64               -2                          -1
-63               -1                          -1
-32               -1                          -1
-31               -1                           0
-1                -1                           0
0                  0                           0
1                  0                           0
31                 0                           0
32                 0                           1
63                 0                           1
64                 1                           1


Any thoughts?


Phil.





_______________________________________________
directfb-dev mailing list
[email protected]
http://mail.directfb.org/cgi-bin/mailman/listinfo/directfb-dev

Reply via email to