19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/*
29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *  Licensed to the Apache Software Foundation (ASF) under one or more
39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *  contributor license agreements.  See the NOTICE file distributed with
49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *  this work for additional information regarding copyright ownership.
59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *  The ASF licenses this file to You under the Apache License, Version 2.0
69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *  (the "License"); you may not use this file except in compliance with
79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *  the License.  You may obtain a copy of the License at
89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *     http://www.apache.org/licenses/LICENSE-2.0
109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *  Unless required by applicable law or agreed to in writing, software
129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *  distributed under the License is distributed on an "AS IS" BASIS,
139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *  See the License for the specific language governing permissions and
159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *  limitations under the License.
169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/**
189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @author Ilya S. Okomin
199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @version $Revision$
209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage org.apache.harmony.awt.gl.font;
239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/**
259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Extra font metrics: sub/superscripts sizes, offsets, average char width.
269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class FontExtraMetrics {
289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /* !! Subscript/superscript metrics are undefined for Type1. As a possible
309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * solution we can use values for Type1, that are proportionate to TrueType
319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * ones:
329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  SubscriptSizeX == 0.7 * fontSize
339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  SubscriptSizeY == 0.65 * fontSize
349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  SubscriptOffsetX == 0;
359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  SubscriptOffsetY == 0.15 * fontSize;
369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  SuperscriptSizeX == 0.7 * fontSize
379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  SuperscriptSizeY == 0.65 * fontSize
389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  SuperscriptOffsetX == 0;
399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  SuperscriptOffsetY == 0.45 * fontSize
409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /*
449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The average width of characters in the font.
459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private float lAverageCharWidth;
479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /*
499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Horizontal size for subscripts.
509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private float lSubscriptSizeX;
529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /*
549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Vertical size for subscripts.
559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private float lSubscriptSizeY;
579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /*
599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Horizontal offset for subscripts, the offset from the character origin
609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * to the origin of the subscript character.
619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private float lSubscriptOffsetX;
639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /*
659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Vertical offset for subscripts, the offset from the character origin
669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * to the origin of the subscript character.
679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private float lSubscriptOffsetY;
699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /*
719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Horizontal size for superscripts.
729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private float lSuperscriptSizeX;
749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /*
769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Vertical size for superscripts.
779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private float lSuperscriptSizeY;
799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /*
819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Horizontal offset for superscripts, the offset from the character
829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * base line to the base line of the superscript character.
839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private float lSuperscriptOffsetX;
859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /*
879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Vertical offset for superscripts, the offset from the character
889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * base line to the base line of the superscript character.
899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private float lSuperscriptOffsetY;
919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public FontExtraMetrics(){
939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        // default constructor
949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public FontExtraMetrics(float[] metrics){
979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        lAverageCharWidth = metrics[0];
989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        lSubscriptSizeX = metrics[1];
999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        lSubscriptSizeY = metrics[2];
1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        lSubscriptOffsetX = metrics[3];
1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        lSubscriptOffsetY = metrics[4];
1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        lSuperscriptSizeX = metrics[5];
1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        lSuperscriptSizeY = metrics[6];
1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        lSuperscriptOffsetX = metrics[7];
1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        lSuperscriptOffsetY = metrics[8];
1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public float getAverageCharWidth(){
1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return lAverageCharWidth;
1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public float getSubscriptSizeX(){
1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return lSubscriptSizeX;
1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public float getSubscriptSizeY(){
1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return lSubscriptSizeY;
1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public float getSubscriptOffsetX(){
1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return lSubscriptOffsetX;
1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public float getSubscriptOffsetY(){
1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return lSubscriptOffsetY;
1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public float getSuperscriptSizeX(){
1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return lSuperscriptSizeX;
1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public float getSuperscriptSizeY(){
1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return lSuperscriptSizeY;
1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public float getSuperscriptOffsetX(){
1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return lSuperscriptOffsetX;
1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public float getSuperscriptOffsetY(){
1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return lSuperscriptOffsetY;
1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
146