Files
freetype/contrib/ttf2pk/ttf2tfm.h
2023-08-27 18:03:45 +02:00

235 lines
5.4 KiB
C

/*
* ttf2tfm.h
*
* This file is part of the ttf2pk package.
*
* Copyright 1997-1999 by
* Frederic Loyer <loyer@ensta.fr>
* Werner Lemberg <wl@gnu.org>
*/
#ifndef TTF2TFM_H
#define TTF2TFM_H
#include <stdio.h>
enum Boolean_
{
False = 0,
True = 1
};
typedef enum Boolean_ Boolean;
enum PSstate_
{
No = 0,
Yes = 1,
Only = 2
};
typedef enum PSstate_ PSstate;
struct _encoding
{
char *name;
char *vec[256];
};
typedef struct _encoding encoding;
/*
* This is what we store character data in.
*/
struct _ttfinfo;
typedef struct _ttfinfo ttfinfo;
struct _lig;
typedef struct _lig lig;
struct _kern;
typedef struct _kern kern;
struct _ttfptr;
typedef struct _ttfptr ttfptr;
struct _pcc;
typedef struct _pcc pcc;
struct _stringlist;
typedef struct _stringlist stringlist;
struct _ttfinfo
{
ttfinfo *next;
long charcode; /* the TTF character code (or glyph index */
/* if bit 17 is set) */
unsigned short glyphindex; /* the TTF glyph number */
short incode; /* the code position in the raw TeX font */
short outcode; /* the code position in the virtual font */
char *adobename;
short width;
short llx, lly, urx, ury;
lig *ligs;
kern *kerns;
ttfptr *kern_equivs;
Boolean constructed;
pcc *pccs; /* we use the composite feature for */
/* `germandbls' <--> `SS' only */
unsigned char wptr, hptr, dptr, iptr;
};
struct _lig
{
lig *next;
char *succ, *sub;
short op, boundleft;
};
struct _kern
{
kern *next;
char *succ;
short delta;
};
struct _ttfptr
{
ttfptr *next;
ttfinfo *ch;
};
struct _pcc
{
pcc *next;
char *partname;
short xoffset, yoffset;
};
struct _stringlist
{
stringlist* next;
char *old_name;
char *new_name;
Boolean single_replacement;
};
struct _Font
{
char *ttfname;
/*
* Full path and extension of the tfm file
*/
char *tfm_path;
char *tfm_ext;
/*
* The final tfm name is composed of the following three parts.
*/
char *outname; /* only namestem without extension */
char *subfont_name; /* NULL if not used */
char *outname_postfix; /* NULL if not used */
char *fullname; /* outname + subfont_name + outname_postfix */
FILE *vplout;
FILE *tfmout;
/*
* The input encoding maps from the TrueType font to the raw TeX font.
*/
char *inencname; /* name of input encoding file */
encoding *inencoding; /* the input encoding vector */
ttfinfo *inencptrs[256]; /* the input mapping table. Will be
filled initially with the first
256 characters in the selected
cmap of the TrueType font */
stringlist *replacements; /* replacements for glyph names given
with the -r option on the command
line */
char *replacementname; /* name of replacement file */
/*
* The output encoding maps from the raw TeX font to the virtual font.
*/
char *outencname; /* name of output encoding file */
encoding *outencoding; /* the output encoding vector */
ttfinfo *outencptrs[256]; /* the output mapping table */
short nextout[256]; /* for characters encoded multiple times
in output */
Boolean sawligkern; /* there were LIGKERN lines in the
output encoding file */
Boolean subfont_ligs; /* ligatures 1st byte/2nd byte in
subfonts wanted */
ttfinfo *charlist; /* a linked list of all valid chars */
ttfinfo *uppercase[256]; /* needed for small caps fonts */
ttfinfo *lowercase[256]; /* ditto */
short boundarychar; /* the boundary character */
char *codingscheme; /* coding scheme for TeX */
char *titlebuf;
/*
* The name of the subfont definition file.
*/
char *sfdname;
long sf_code[256];
/*
* We get the following three values from the TTF's postscript table.
*/
short units_per_em;
float italicangle;
char fixedpitch;
short xheight; /* xheight for TeX */
short fontspace; /* font space for TeX */
/*
* These values can be specified on the command line.
*/
unsigned short pid; /* the TTF platform ID */
unsigned short eid; /* the TTF encoding ID */
float efactor; /* to extend the glyphs horizontally */
float slant; /* to slant the font */
unsigned long fontindex; /* font number in TTC */
float capheight; /* the height of small caps glyphs */
PSstate PSnames; /* we use the PS names in the TTF */
Boolean rotate; /* we rotate the glyphs by 90 degrees */
float y_offset; /* y offset for rotated glyphs */
/*
* The command line parameter strings needed for ttf2pk.
*/
char *pidparam;
char *eidparam;
char *efactorparam;
char *slantparam;
char *fontindexparam;
char *y_offsetparam;
};
typedef struct _Font Font;
#endif /* TEX2TFM_H */
/* end */