@@ -1202,3 +1202,60 @@ def test_ytick_rotation_mode():
1202
1202
tick .set_rotation (angle )
1203
1203
1204
1204
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