146 lines
4.4 KiB
C
146 lines
4.4 KiB
C
/****************************************************************************
|
|
*
|
|
* tfm.h
|
|
*
|
|
* Auxiliary functions and data structures related to TFM metric files
|
|
* (specification).
|
|
*
|
|
* Copyright 1996-2018 by
|
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
|
*
|
|
* This file is part of the FreeType project, and may only be used,
|
|
* modified, and distributed under the terms of the FreeType project
|
|
* license, LICENSE.TXT. By continuing to use, modify, or distribute
|
|
* this file you indicate that you have read the license and
|
|
* understand and accept it fully.
|
|
*
|
|
*/
|
|
|
|
|
|
#ifndef TFM_H_
|
|
#define TFM_H_
|
|
|
|
|
|
#include <ft2build.h>
|
|
#include FT_INTERNAL_OBJECTS_H
|
|
#include FT_INTERNAL_HASH_H
|
|
#include FT_INTERNAL_TRUETYPE_TYPES_H
|
|
|
|
|
|
|
|
FT_BEGIN_HEADER
|
|
|
|
|
|
/*************************************************************************/
|
|
/*************************************************************************/
|
|
/*************************************************************************/
|
|
/*** ***/
|
|
/*** ***/
|
|
/*** TFM FONT INFORMATION STRUCTURES ***/
|
|
/*** ***/
|
|
/*** ***/
|
|
/*************************************************************************/
|
|
/*************************************************************************/
|
|
/*************************************************************************/
|
|
|
|
typedef struct TFM_FontInfoRec_
|
|
{
|
|
/* Font Info */
|
|
FT_Long cs; /* Check Sum */
|
|
/* Metrics */
|
|
FT_ULong ds, fs; /* Design Size */
|
|
FT_UInt design_size;
|
|
FT_ULong slant;
|
|
FT_UInt begin_char, end_char;
|
|
FT_Long *width, *height, *depth;
|
|
/* Font bounding box */
|
|
FT_Long font_bbx_w, font_bbx_h;
|
|
FT_Long font_bbx_xoff, font_bbx_yoff;
|
|
|
|
} TFM_FontInfoRec, *TFM_FontInfo;
|
|
|
|
#define RDS2PT(rds) (tfm->design_size * ((FT_Long)(rds)/(FT_Long)(1<<20)))
|
|
|
|
/*************************************************************************/
|
|
/*************************************************************************/
|
|
/***** *****/
|
|
/***** TFM PARSER *****/
|
|
/***** *****/
|
|
/*************************************************************************/
|
|
/*************************************************************************/
|
|
|
|
typedef struct TFM_ParserRec_* TFM_Parser;
|
|
|
|
typedef struct TFM_Parser_FuncsRec_
|
|
{
|
|
FT_Error
|
|
(*init)( TFM_Parser parser,
|
|
FT_Memory memory,
|
|
FT_Stream stream );
|
|
|
|
FT_Error
|
|
(*parse_metrics)( TFM_Parser parser );
|
|
|
|
void
|
|
(*done)( TFM_Parser parser );
|
|
|
|
} TFM_Parser_FuncsRec;
|
|
|
|
|
|
|
|
/**************************************************************************
|
|
*
|
|
* @struct:
|
|
* TFM_ParserRec
|
|
*
|
|
* @description:
|
|
* An TFM_Parser is a parser for the TFM files.
|
|
*
|
|
* @fields:
|
|
* memory ::
|
|
* The object used for memory operations (alloc and
|
|
* realloc).
|
|
*
|
|
* stream ::
|
|
* This is an FT_Stream object.
|
|
*
|
|
* FontInfo ::
|
|
* The result will be stored here.
|
|
*/
|
|
typedef struct TFM_ParserRec_
|
|
{
|
|
FT_Memory memory;
|
|
FT_Stream stream;
|
|
|
|
TFM_FontInfo FontInfo;
|
|
|
|
void* user_data; /* To be checked for compatibility */
|
|
|
|
} TFM_ParserRec;
|
|
|
|
|
|
/*************************************************************************/
|
|
/*************************************************************************/
|
|
/***** *****/
|
|
/***** TFM Module Interface *****/
|
|
/***** *****/
|
|
/*************************************************************************/
|
|
/*************************************************************************/
|
|
|
|
typedef struct TFM_ServiceRec_
|
|
{
|
|
const TFM_Parser_FuncsRec* tfm_parser_funcs;
|
|
|
|
} TFM_ServiceRec, *TFM_Service;
|
|
|
|
/* backward compatible type definition */
|
|
typedef TFM_ServiceRec TFM_Interface;
|
|
|
|
|
|
FT_END_HEADER
|
|
|
|
#endif /* PSAUX_H_ */
|
|
|
|
|
|
/* END */
|