/* * Copyright 1997-1998 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Sun designates this * particular file as subject to the "Classpath" exception as provided * by Sun in the LICENSE file that accompanied this code. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, * CA 95054 USA or visit www.sun.com if you need additional information or * have any questions. */ package java.awt.font; import java.awt.Font; /** * The <code>MultipleMaster</code> interface represents Type 1 * Multiple Master fonts. * A particular {@link Font} object can implement this interface. */ 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 * <code>getDesignAxisNames</code>. * @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 <code>getDesignAxisNames</code>. * @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 * <code>getNumDesignAxes</code> and the values of the array elements * must fall within limits specified by * <code>getDesignAxesLimits</code>. In case of an error, * <code>null</code> is returned. * @param axes an array containing axis values * @return a {@link Font} object that is an instance of * <code>MultipleMaster</code> and is based on the design axis values * provided by <code>axes</code>. */ public Font deriveMMFont(float[] axes); /** * Creates a new instance of a multiple master font based on detailed metric * information. In case of an error, <code>null</code> 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 <code>Font</code> object that is an instance of * <code>MultipleMaster</code> and is based on the specified metric * information. */ public Font deriveMMFont( float[] glyphWidths, float avgStemWidth, float typicalCapHeight, float typicalXHeight, float italicAngle); }