/* * @(#)MultipleMaster.java 1.18 03/12/19 * * Copyright 2004 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */ package java.awt.font; import java.awt.Font; /** * The MultipleMaster interface represents Type 1 * Multiple Master fonts. * A particular {@link Font} object can implement this interface. * @version 10 Feb 1997 */ public interface MultipleMaster { /** * Returns the number of multiple master design controls. * Design axes include things like width, weight and optical scaling. * @return the number of multiple master design controls */ public int getNumDesignAxes(); /** * Returns an array of design limits interleaved in the form [from->to] * for each axis. For example, * design limits for weight could be from 0.1 to 1.0. The values are * returned in the same order returned by * getDesignAxisNames. * @return an array of design limits for each axis. */ public float[] getDesignAxisRanges(); /** * Returns an array of default design values for each axis. For example, * the default value for weight could be 1.6. The values are returned * in the same order returned by getDesignAxisNames. * @return an array of default design values for each axis. */ public float[] getDesignAxisDefaults(); /** * Returns the name for each design axis. This also determines the order in * which the values for each axis are returned. * @return an array containing the names of each design axis. */ public String[] getDesignAxisNames(); /** * Creates a new instance of a multiple master font based on the design * axis values contained in the specified array. The size of the array * must correspond to the value returned from * getNumDesignAxes and the values of the array elements * must fall within limits specified by * getDesignAxesLimits. In case of an error, * null is returned. * @param axes an array containing axis values * @return a {@link Font} object that is an instance of * MultipleMaster and is based on the design axis values * provided by axes. */ public Font deriveMMFont(float[] axes); /** * Creates a new instance of a multiple master font based on detailed metric * information. In case of an error, null is returned. * @param glyphWidths an array of floats representing the desired width * of each glyph in font space * @param avgStemWidth the average stem width for the overall font in * font space * @param typicalCapHeight the height of a typical upper case char * @param typicalXHeight the height of a typical lower case char * @param italicAngle the angle at which the italics lean, in degrees * counterclockwise from vertical * @return a Font object that is an instance of * MultipleMaster and is based on the specified metric * information. */ public Font deriveMMFont( float[] glyphWidths, float avgStemWidth, float typicalCapHeight, float typicalXHeight, float italicAngle); }