2010-12-10 6 views
2

Ich habe ein Problem mit Pango-Rendering unter einer gedrehten Matrix. Ich versuche, eine Beschriftung (siehe Code unten) zu zeichnen, die innerhalb einer animierenden Cairo-Matrixrotation passiert.Warum ändern Schriftarten in Pango das Gewicht, wenn Text in Kairo gedreht wird?

Während das Etikett rotiert, zittert der Text, scheint zuzunehmen und zu schrumpfen, wird bei diagonalen Winkeln am dicksten und bei orthogonalen Winkeln am dünnsten. Sehen Sie diesen Vergleich:

http://www5.picturepush.com/photo/a/4666818/640/Anonymous/pango-rotation.jpg

ich die gedrehten Text möchten zu erzeugen, als ob es nur Form Wege zu drehen, und nicht versuchen, das Aussehen des Textes auf dem Winkel basiert zu ändern. Irgendwelche Ideen wie ich das machen könnte?

Danke, Sean


     //Draw text with Pango 
     PangoLayout *layout; 
     PangoFontDescription *desc; 

     // pCr is the cairomm context ptr. 
     // pCr->cobj() is the underlying C Cairo context ptr. 
     pCr->set_source_rgb(0.0, 0.0, 1.0); 

     layout = pango_cairo_create_layout(pCr->cobj()); 
     // text is the label string 
     pango_layout_set_text(layout, text.c_str(), -1); 

     desc = pango_font_description_from_string("Sans Bold 12"); 
     pango_layout_set_font_description(layout, desc); 

     pango_cairo_layout_path(pCr->cobj(), layout); 
     pCr->fill(); 

     pango_font_description_free(desc); 
     g_object_unref(layout); 

Antwort

0

ich nur Kairo und Pango mit Python verwenden, nicht C, aber meine erste Vermutung mit ANTIALIAS herumzubasteln wäre:

pCr.set_antialias(cairo.ANTIALIAS_DEFAULT)

(diese ist die Syntax für Python, nicht C)

Sie könnten versuchen, cairo.ANTIALIAS_SUBPIXEL oder cairo.ANTIALIAS_NONE zu sehen, ob ther e ist ein Unterschied.

Auch konnte ich keine Drehung in Ihrem Code finden, aber vielleicht drehen Sie den Text, nachdem es gerendert wurde, wenn Sie zuerst die Drehung durchführen und dann den Text (Vektorpfade) rendern (pixelisieren).

Ich hoffe, es hilft.

Verwandte Themen