    class
    	EV_FONT

    General
    	cluster: interface
    	description:
    		"Representation of a typeface.
    		Appearance is specified in terms of font family, height, shape and
    		weight. The local system font closest to the specification will be
    		displayed. A specific font name may optionally be specified. See `set_preferred_face'%"

    		There are two available queries for a font height, `height' and `height_in_points'.
    		Changing one, changes the other accordingly. `height' is given in pixels while
    		`height_in_points' is in points or 1/72 of an inch. Using `height_in_points' ensures
    		that on different screen resolutions `Current' has the same physical size, although
    		the pixel height may differ to achieve this."
    	keywords: "character, face, height, family, weight, shape, bold, italic"
    	create: make_with_values, default_create

    Ancestors
    	EV_ANY*
    	EV_FONT_CONSTANTS

    Queries
    	ascent: INTEGER_32
    	char_set: INTEGER_32
    	data: ANY
    	descent: INTEGER_32
    	family: INTEGER_32
    	height: INTEGER_32
    	height_in_points: INTEGER_32
    	horizontal_resolution: INTEGER_32
    	is_destroyed: BOOLEAN
    	is_equal (other: [like Current] EV_FONT): BOOLEAN
    	is_proportional: BOOLEAN
    	maximum_width: INTEGER_32
    	minimum_width: INTEGER_32
    	name: STRING_32
    	preferred_families: EV_ACTIVE_LIST [STRING_32]
    	shape: INTEGER_32
    	string_size (a_string: STRING_GENERAL): TUPLE [INTEGER_32, INTEGER_32, INTEGER_32, INTEGER_32]
    	string_width (a_string: STRING_GENERAL): INTEGER_32
    	valid_family (a_family: INTEGER_32): BOOLEAN
    	valid_shape (a_shape: INTEGER_32): BOOLEAN
    	valid_weight (a_weight: INTEGER_32): BOOLEAN
    	vertical_resolution: INTEGER_32
    	weight: INTEGER_32
    	width: INTEGER_32

    Commands
    	copy (other: [like Current] EV_FONT)
    	destroy
    	set_data (some_data: [like data] ANY)
    	set_family (a_family: INTEGER_32)
    	set_height (a_height: INTEGER_32)
    	set_height_in_points (a_height: INTEGER_32)
    	set_shape (a_shape: INTEGER_32)
    	set_weight (a_weight: INTEGER_32)

    Constraints
    	family valid
    	weight valid
    	shape valid
    	height positive
    	height in points positive
    	ascent not negative
    	descent not negative
    	width of empty string equals zero
    	horizontal resolution non negative
    	vertical resolution non negative