/**************************************************************
 * 
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 * 
 *   http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 * 
 *************************************************************/


#ifndef __com_sun_star_awt_SimpleFontMetric_idl__ 
#define __com_sun_star_awt_SimpleFontMetric_idl__ 
 
 
//============================================================================= 
 
 module com {  module sun {  module star {  module awt {  
 
//============================================================================= 
 
/** describes the general metrics of a certain font.
 */
published struct SimpleFontMetric
{
	/** specifies the portion of a lower case character that
		rises above the height of the character "x" of the font. 
						
		<p>For example, the letters 'b', 'd', 'h', 'k' and 'l' 
		have an ascent unequal to 0.</p>
        
		<p>The ascent is measured in pixels, thus the font metric is
		device dependent.</p>
	 */
	short Ascent; 
 
	//------------------------------------------------------------------------- 
	 
	/** specifies the portion of a letter falling below the baseline.
						
		<p>For example, the letters 'g', 'p', and 'y'
        have a descent unequal to 0.</p>
        
		<p>The descent is measured in pixels, thus the font metric is 
		device dependent.</p>
	 */
	short Descent; 
 
	//------------------------------------------------------------------------- 
	 
	/** specifies the vertical space between lines of this font;
		it is also called internal linespacing. 
						
		<p>The leading is measured in pixels, thus the font metric is 
		device dependent.</p>
	 */
	short Leading; 
 
	//------------------------------------------------------------------------- 
	 
	/** specifies the slant of the characters (italic).
						
		<p>The slant is measured in degrees from 0 to 359.</p>
	 */
	short Slant; 
 
	//------------------------------------------------------------------------- 
	 
	/** specifies the code of the first printable character in the font.
	 */
	char FirstChar; 
 
	//------------------------------------------------------------------------- 
	 
	/** specifies the code of the last printable character in the font.
	 */
	char LastChar; 
 
}; 
 
//============================================================================= 
 
}; }; }; };  
 

#endif 
