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