You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			78 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
			
		
		
	
	
			78 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
import pytest
 | 
						|
 | 
						|
from matplotlib.font_manager import FontProperties
 | 
						|
 | 
						|
 | 
						|
# Attributes on FontProperties object to check for consistency
 | 
						|
keys = [
 | 
						|
    "get_family",
 | 
						|
    "get_style",
 | 
						|
    "get_variant",
 | 
						|
    "get_weight",
 | 
						|
    "get_size",
 | 
						|
    ]
 | 
						|
 | 
						|
 | 
						|
def test_fontconfig_pattern():
 | 
						|
    """Test converting a FontProperties to string then back."""
 | 
						|
 | 
						|
    # Defaults
 | 
						|
    test = "defaults "
 | 
						|
    f1 = FontProperties()
 | 
						|
    s = str(f1)
 | 
						|
 | 
						|
    f2 = FontProperties(s)
 | 
						|
    for k in keys:
 | 
						|
        assert getattr(f1, k)() == getattr(f2, k)(), test + k
 | 
						|
 | 
						|
    # Basic inputs
 | 
						|
    test = "basic "
 | 
						|
    f1 = FontProperties(family="serif", size=20, style="italic")
 | 
						|
    s = str(f1)
 | 
						|
 | 
						|
    f2 = FontProperties(s)
 | 
						|
    for k in keys:
 | 
						|
        assert getattr(f1, k)() == getattr(f2, k)(), test + k
 | 
						|
 | 
						|
    # Full set of inputs.
 | 
						|
    test = "full "
 | 
						|
    f1 = FontProperties(family="sans-serif", size=24, weight="bold",
 | 
						|
                        style="oblique", variant="small-caps",
 | 
						|
                        stretch="expanded")
 | 
						|
    s = str(f1)
 | 
						|
 | 
						|
    f2 = FontProperties(s)
 | 
						|
    for k in keys:
 | 
						|
        assert getattr(f1, k)() == getattr(f2, k)(), test + k
 | 
						|
 | 
						|
 | 
						|
def test_fontconfig_str():
 | 
						|
    """Test FontProperties string conversions for correctness."""
 | 
						|
 | 
						|
    # Known good strings taken from actual font config specs on a linux box
 | 
						|
    # and modified for MPL defaults.
 | 
						|
 | 
						|
    # Default values found by inspection.
 | 
						|
    test = "defaults "
 | 
						|
    s = ("sans\\-serif:style=normal:variant=normal:weight=normal"
 | 
						|
         ":stretch=normal:size=12.0")
 | 
						|
    font = FontProperties(s)
 | 
						|
    right = FontProperties()
 | 
						|
    for k in keys:
 | 
						|
        assert getattr(font, k)() == getattr(right, k)(), test + k
 | 
						|
 | 
						|
    test = "full "
 | 
						|
    s = ("serif-24:style=oblique:variant=small-caps:weight=bold"
 | 
						|
         ":stretch=expanded")
 | 
						|
    font = FontProperties(s)
 | 
						|
    right = FontProperties(family="serif", size=24, weight="bold",
 | 
						|
                           style="oblique", variant="small-caps",
 | 
						|
                           stretch="expanded")
 | 
						|
    for k in keys:
 | 
						|
        assert getattr(font, k)() == getattr(right, k)(), test + k
 | 
						|
 | 
						|
 | 
						|
def test_fontconfig_unknown_constant():
 | 
						|
    with pytest.raises(ValueError, match="ParseException"):
 | 
						|
        FontProperties(":unknown")
 |