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