131 lines
3.6 KiB
C
131 lines
3.6 KiB
C
|
/***
|
||
|
**
|
||
|
** Module: T1Parser
|
||
|
**
|
||
|
** Description:
|
||
|
** This is a module of the T1 to TT font converter. The module
|
||
|
** will extract information from a T1 font file, by parsing
|
||
|
** the data/commands found in PFB, PFM and AFM files.
|
||
|
**
|
||
|
** Author: Michael Jansson
|
||
|
**
|
||
|
** Created: 5/26/93
|
||
|
**
|
||
|
***/
|
||
|
|
||
|
|
||
|
#ifndef _ARGS
|
||
|
# define IN const
|
||
|
# define OUT
|
||
|
# define INOUT
|
||
|
# define _ARGS(arg) arg
|
||
|
#endif
|
||
|
|
||
|
|
||
|
|
||
|
struct T1Arg;
|
||
|
struct T1Info;
|
||
|
struct T1Glyph;
|
||
|
struct T1Handle;
|
||
|
struct T1Metrics;
|
||
|
struct Composite;
|
||
|
struct GlyphFilter;
|
||
|
|
||
|
|
||
|
|
||
|
/***
|
||
|
** Function: InitT1Input
|
||
|
**
|
||
|
** Description:
|
||
|
** Allocate and initiate a handle for a T1 font file, including
|
||
|
** extracting data from the font prolog that is needed to
|
||
|
** read the glyphs, such as /FontMatrix, /Subrs and /lenIV.
|
||
|
***/
|
||
|
errcode InitT1Input _ARGS((IN struct T1Arg *,
|
||
|
OUT struct T1Handle **,
|
||
|
OUT struct T1Metrics **,
|
||
|
IN short (*cb)(IN char *,
|
||
|
IN char *,
|
||
|
IN char *)));
|
||
|
/***
|
||
|
** Function: CleanUpT1
|
||
|
**
|
||
|
** Description:
|
||
|
** Free the resources allocated for the T1 handle.
|
||
|
***/
|
||
|
errcode CleanUpT1 _ARGS((INOUT struct T1Handle *));
|
||
|
|
||
|
|
||
|
/***
|
||
|
** Function: ReadOtherMetrics
|
||
|
**
|
||
|
** Description:
|
||
|
** Return font level information about the T1 font (mostly
|
||
|
** metrics).
|
||
|
***/
|
||
|
errcode ReadOtherMetrics _ARGS((INOUT struct T1Metrics *,
|
||
|
IN char *metrics));
|
||
|
|
||
|
/***
|
||
|
** Function: GetT1Glyph
|
||
|
**
|
||
|
** Description:
|
||
|
** The current file position of the T1 font file must be
|
||
|
** at the begining of an entry in the /CharStrings dictionary.
|
||
|
** The function will decode the font commands, parse them, and
|
||
|
** finally build a representation of the glyph.
|
||
|
***/
|
||
|
errcode GetT1Glyph _ARGS((INOUT struct T1Handle *,
|
||
|
OUT struct T1Glyph *,
|
||
|
IN struct GlyphFilter *));
|
||
|
/***
|
||
|
** Function: FreeT1Glyph
|
||
|
**
|
||
|
** Description:
|
||
|
** This function frees the memory used to represent
|
||
|
** a glyph that has been translated.
|
||
|
***/
|
||
|
void FreeT1Glyph _ARGS((INOUT struct T1Glyph *));
|
||
|
|
||
|
|
||
|
/***
|
||
|
** Function: GetT1Composite
|
||
|
**
|
||
|
** Description:
|
||
|
** This function unlinks the first composite glyph
|
||
|
** from the list of recorded composite glyphs, which
|
||
|
** is returned to the caller.
|
||
|
***/
|
||
|
struct Composite *GetT1Composite _ARGS((INOUT struct T1Handle *));
|
||
|
|
||
|
|
||
|
/***
|
||
|
** Function: GetT1AccentGlyph
|
||
|
**
|
||
|
** Description:
|
||
|
** This function parses the charstring code associated to the
|
||
|
** accent character of a composite character, if that glyph
|
||
|
** is not already converted.
|
||
|
***/
|
||
|
errcode GetT1AccentGlyph _ARGS((INOUT struct T1Handle *,
|
||
|
IN struct Composite *,
|
||
|
OUT struct T1Glyph *));
|
||
|
/***
|
||
|
** Function: GetT1BaseGlyph
|
||
|
**
|
||
|
** Description:
|
||
|
** This function parses the charstring code associated to the
|
||
|
** base character of a composite character, if that glyph
|
||
|
** is not already converted.
|
||
|
***/
|
||
|
errcode GetT1BaseGlyph _ARGS((INOUT struct T1Handle *,
|
||
|
IN struct Composite *,
|
||
|
OUT struct T1Glyph *));
|
||
|
/***
|
||
|
** Function: FlushWorkspace
|
||
|
**
|
||
|
** Description:
|
||
|
** Free the resources allocated for the T1 handle.
|
||
|
***/
|
||
|
void FlushWorkspace _ARGS((INOUT struct T1Handle *t1));
|