| /**************************************************************************** |
| * |
| * 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 */ |