001 /*
002 * Copyright 1997-1998 Sun Microsystems, Inc. All Rights Reserved.
003 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
004 *
005 * This code is free software; you can redistribute it and/or modify it
006 * under the terms of the GNU General Public License version 2 only, as
007 * published by the Free Software Foundation. Sun designates this
008 * particular file as subject to the "Classpath" exception as provided
009 * by Sun in the LICENSE file that accompanied this code.
010 *
011 * This code is distributed in the hope that it will be useful, but WITHOUT
012 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
013 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
014 * version 2 for more details (a copy is included in the LICENSE file that
015 * accompanied this code).
016 *
017 * You should have received a copy of the GNU General Public License version
018 * 2 along with this work; if not, write to the Free Software Foundation,
019 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
020 *
021 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
022 * CA 95054 USA or visit www.sun.com if you need additional information or
023 * have any questions.
024 */
025 package java.awt.font;
026
027 import java.awt.Font;
028
029 /**
030 * The <code>MultipleMaster</code> interface represents Type 1
031 * Multiple Master fonts.
032 * A particular {@link Font} object can implement this interface.
033 * @version 10 Feb 1997
034 */
035 public interface MultipleMaster {
036
037 /**
038 * Returns the number of multiple master design controls.
039 * Design axes include things like width, weight and optical scaling.
040 * @return the number of multiple master design controls
041 */
042 public int getNumDesignAxes();
043
044 /**
045 * Returns an array of design limits interleaved in the form [from->to]
046 * for each axis. For example,
047 * design limits for weight could be from 0.1 to 1.0. The values are
048 * returned in the same order returned by
049 * <code>getDesignAxisNames</code>.
050 * @return an array of design limits for each axis.
051 */
052 public float[] getDesignAxisRanges();
053
054 /**
055 * Returns an array of default design values for each axis. For example,
056 * the default value for weight could be 1.6. The values are returned
057 * in the same order returned by <code>getDesignAxisNames</code>.
058 * @return an array of default design values for each axis.
059 */
060 public float[] getDesignAxisDefaults();
061
062 /**
063 * Returns the name for each design axis. This also determines the order in
064 * which the values for each axis are returned.
065 * @return an array containing the names of each design axis.
066 */
067 public String[] getDesignAxisNames();
068
069 /**
070 * Creates a new instance of a multiple master font based on the design
071 * axis values contained in the specified array. The size of the array
072 * must correspond to the value returned from
073 * <code>getNumDesignAxes</code> and the values of the array elements
074 * must fall within limits specified by
075 * <code>getDesignAxesLimits</code>. In case of an error,
076 * <code>null</code> is returned.
077 * @param axes an array containing axis values
078 * @return a {@link Font} object that is an instance of
079 * <code>MultipleMaster</code> and is based on the design axis values
080 * provided by <code>axes</code>.
081 */
082 public Font deriveMMFont(float[] axes);
083
084 /**
085 * Creates a new instance of a multiple master font based on detailed metric
086 * information. In case of an error, <code>null</code> is returned.
087 * @param glyphWidths an array of floats representing the desired width
088 * of each glyph in font space
089 * @param avgStemWidth the average stem width for the overall font in
090 * font space
091 * @param typicalCapHeight the height of a typical upper case char
092 * @param typicalXHeight the height of a typical lower case char
093 * @param italicAngle the angle at which the italics lean, in degrees
094 * counterclockwise from vertical
095 * @return a <code>Font</code> object that is an instance of
096 * <code>MultipleMaster</code> and is based on the specified metric
097 * information.
098 */
099 public Font deriveMMFont(float[] glyphWidths, float avgStemWidth,
100 float typicalCapHeight, float typicalXHeight,
101 float italicAngle);
102
103 }
|