@@ -1202,3 +1202,60 @@ def test_ytick_rotation_mode():
12021202tick .set_rotation (angle )
12031203
12041204plt .subplots_adjust (left = 0.4 ,right = 0.6 ,top = .99 ,bottom = .01 )
1205+
1206+
1207+ @pytest .mark .parametrize (
1208+ 'input, match' ,
1209+ [
1210+ ([1 ,2 ,3 ],'must be list of tuple' ),
1211+ ([(1 ,2 )],'must be list of tuple' ),
1212+ ([('en' ,'foo' ,2 )],'start location must be int' ),
1213+ ([('en' ,1 ,'foo' )],'end location must be int' ),
1214+ ],
1215+ )
1216+ def test_text_language_invalid (input ,match ):
1217+ with pytest .raises (TypeError ,match = match ):
1218+ Text (0 ,0 ,'foo' ,language = input )
1219+
1220+
1221+ @image_comparison (baseline_images = ['language.png' ],remove_text = False ,style = 'mpl20' )
1222+ def test_text_language ():
1223+ fig = plt .figure (figsize = (5 ,3 ))
1224+
1225+ t = fig .text (0 ,0.8 ,'Default' ,fontsize = 32 )
1226+ assert t .get_language ()is None
1227+ t = fig .text (0 ,0.55 ,'Lang A' ,fontsize = 32 )
1228+ assert t .get_language ()is None
1229+ t = fig .text (0 ,0.3 ,'Lang B' ,fontsize = 32 )
1230+ assert t .get_language ()is None
1231+ t = fig .text (0 ,0.05 ,'Mixed' ,fontsize = 32 )
1232+ assert t .get_language ()is None
1233+
1234+ # DejaVu Sans supports language-specific glyphs in the Serbian and Macedonian
1235+ # languages in the Cyrillic alphabet.
1236+ cyrillic = '\U00000431 '
1237+ t = fig .text (0.4 ,0.8 ,cyrillic ,fontsize = 32 )
1238+ assert t .get_language ()is None
1239+ t = fig .text (0.4 ,0.55 ,cyrillic ,fontsize = 32 ,language = 'sr' )
1240+ assert t .get_language ()== 'sr'
1241+ t = fig .text (0.4 ,0.3 ,cyrillic ,fontsize = 32 )
1242+ t .set_language ('ru' )
1243+ assert t .get_language ()== 'ru'
1244+ t = fig .text (0.4 ,0.05 ,cyrillic * 4 ,fontsize = 32 ,
1245+ language = [('ru' ,0 ,1 ), ('sr' ,1 ,2 ), ('ru' ,2 ,3 ), ('sr' ,3 ,4 )])
1246+ assert t .get_language ()== (('ru' ,0 ,1 ), ('sr' ,1 ,2 ), ('ru' ,2 ,3 ), ('sr' ,3 ,4 ))
1247+
1248+ # Or the Sámi family of languages in the Latin alphabet.
1249+ latin = '\U0000014a '
1250+ t = fig .text (0.7 ,0.8 ,latin ,fontsize = 32 )
1251+ assert t .get_language ()is None
1252+ with plt .rc_context ({'text.language' :'en' }):
1253+ t = fig .text (0.7 ,0.55 ,latin ,fontsize = 32 )
1254+ assert t .get_language ()== 'en'
1255+ t = fig .text (0.7 ,0.3 ,latin ,fontsize = 32 ,language = 'smn' )
1256+ assert t .get_language ()== 'smn'
1257+ # Tuples are not documented, but we'll allow it.
1258+ t = fig .text (0.7 ,0.05 ,latin * 4 ,fontsize = 32 )
1259+ t .set_language ((('en' ,0 ,1 ), ('smn' ,1 ,2 ), ('en' ,2 ,3 ), ('smn' ,3 ,4 )))
1260+ assert t .get_language ()== (
1261+ ('en' ,0 ,1 ), ('smn' ,1 ,2 ), ('en' ,2 ,3 ), ('smn' ,3 ,4 ))