@@ -1202,3 +1202,60 @@ def test_ytick_rotation_mode():
12021202 tick .set_rotation (angle )
12031203
12041204 plt .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 ))
0 commit comments