@@ -3852,6 +3852,45 @@ def testDrawTextOnCurvedLine(self):
3852
3852
painter .end ()
3853
3853
self .assertTrue (self .imageCheck ('text_on_curved_line' , 'text_on_curved_line' , image ))
3854
3854
3855
+ def testDrawTextOnCurvedLineUpsideDown (self ):
3856
+ format = QgsTextFormat ()
3857
+ format .setFont (getTestFont ('bold' ))
3858
+ format .setSize (16 )
3859
+ format .setSizeUnit (QgsUnitTypes .RenderPoints )
3860
+ format .buffer ().setEnabled (True )
3861
+ format .buffer ().setSize (2 )
3862
+ format .buffer ().setSizeUnit (QgsUnitTypes .RenderMillimeters )
3863
+
3864
+ image = QImage (400 , 400 , QImage .Format_RGB32 )
3865
+
3866
+ painter = QPainter ()
3867
+ ms = QgsMapSettings ()
3868
+ ms .setExtent (QgsRectangle (0 , 0 , 50 , 50 ))
3869
+ ms .setOutputSize (image .size ())
3870
+ context = QgsRenderContext .fromMapSettings (ms )
3871
+ context .setPainter (painter )
3872
+ context .setScaleFactor (96 / 25.4 ) # 96 DPI
3873
+ context .setFlag (QgsRenderContext .ApplyScalingWorkaroundForTextRendering , True )
3874
+
3875
+ painter .begin (image )
3876
+ painter .setRenderHint (QPainter .Antialiasing )
3877
+ image .fill (QColor (152 , 219 , 249 ))
3878
+
3879
+ painter .setBrush (Qt .NoBrush )
3880
+ painter .setPen (QPen (QColor (0 , 0 , 0 )))
3881
+
3882
+ line = QPolygonF (reversed ([QPointF (50 , 200 ), QPointF (100 , 230 ), QPointF (150 , 235 ), QPointF (350 , 200 )]))
3883
+ painter .drawPolyline (line )
3884
+
3885
+ painter .setBrush (QBrush (QColor (182 , 239 , 255 )))
3886
+ painter .setPen (Qt .NoPen )
3887
+
3888
+ format .setAllowHtmlFormatting (True )
3889
+ QgsTextRenderer .drawTextOnLine (line , 'm<sup>y</sup> <span style="font-size: 29pt; color: red;">curv<sup style="font-size: 10pt">ed</sup></span> te<sub>xt</sub>' , context , format , 20 , 0 )
3890
+
3891
+ painter .end ()
3892
+ self .assertTrue (self .imageCheck ('text_on_curved_line_upside_down' , 'text_on_curved_line_upside_down' , image ))
3893
+
3855
3894
def testDrawTextOnCurvedLineBackground (self ):
3856
3895
format = QgsTextFormat ()
3857
3896
format .setFont (getTestFont ('bold' ))
0 commit comments