    deferred class
    	EV_FONT_I

    General
    	cluster: implementation_mswin
    	description: "Eiffel Vision font. Implementation interface."
    	keywords: "character, face, height, family, weight, shape, bold, italic"

    Ancestors
    	EV_ANY_I*
    	EV_FONT_CONSTANTS

    Queries
    	ascent: INTEGER_32
    	char_set: INTEGER_32
    	descent: INTEGER_32
    	family: INTEGER_32
    	Family_modern: INTEGER_32
    	Family_roman: INTEGER_32
    	Family_sans: INTEGER_32
    	Family_screen: INTEGER_32
    	Family_typewriter: INTEGER_32
    	height: INTEGER_32
    	height_in_points: INTEGER_32
    	horizontal_resolution: INTEGER_32
    	is_proportional: BOOLEAN
    	maximum_width: INTEGER_32
    	minimum_width: INTEGER_32
    	name: STRING_32
    	preferred_families: EV_ACTIVE_LIST [STRING_32]
    	shape: INTEGER_32
    	Shape_italic: INTEGER_32
    	Shape_regular: 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
    	Weight_black: INTEGER_32
    	Weight_bold: INTEGER_32
    	Weight_regular: INTEGER_32
    	Weight_thin: INTEGER_32
    	width: INTEGER_32

    Commands
    	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_values (a_family, a_weight, a_shape, a_height: INTEGER_32; a_preferred_families: [like preferred_families] EV_ACTIVE_LIST [STRING_32])
    	set_weight (a_weight: INTEGER_32)

    Constraints
    	family valid
    	weight valid
    	shape valid
    	height bigger than zero
    	ascent not negative
    	descent not negative
    	width of empty string equals zero