File: utilPostscriptFace.c

package info (click to toggle)
ted 2.11-1
  • links: PTS
  • area: main
  • in suites: woody
  • size: 11,064 kB
  • ctags: 13,935
  • sloc: ansic: 120,446; makefile: 7,469; sh: 253
file content (118 lines) | stat: -rw-r--r-- 2,881 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
/************************************************************************/
/*									*/
/*  Keep a list of font faces.						*/
/*									*/
/************************************************************************/

#   include	"appUtilConfig.h"

#   include	<stddef.h>
#   include	<stdio.h>
#   include	<stdlib.h>
#   include	<string.h>
#   include	<time.h>

#   include	<utilPostscriptFace.h>

#   include	<appDebugon.h>

/************************************************************************/
/*									*/
/*  Collect the fonts in a document					*/
/*  This has two functions:						*/
/*	1)  They are needed for the DSC comments.			*/
/*	2)  This makes it possible to define shorthands in the prologue	*/
/*									*/
/************************************************************************/

int utilRememberPostsciptFace(		PostScriptFaceList *	psfl,
					/*
					int			familyNumber,
					int			faceNumber,
					*/
					int			encoding,
					const AfmFontInfo *	afi,
					TextAttribute		ta,
					const char *		prefix,
					int			appearsInText )
    {
    int			i;
    PostScriptFace *	psf= psfl->psflFaces;

    for ( i= 0; i < psfl->psflFaceCount; psf++, i++ )
	{
	if  ( psf->psfAttributes.taFontNumber == ta.taFontNumber	&&
	      psf->psfAttributes.taFontIsBold == ta.taFontIsBold	&&
	      psf->psfAttributes.taFontIsSlanted == ta.taFontIsSlanted	&&
	      psf->psfEncodingUsed == encoding				&&
	      ! strcmp( psf->psfFontPrefix, prefix )			)
	    { break;	}
	}

    if  ( i >= psfl->psflFaceCount )
	{
	char *			s;

	psf= (PostScriptFace *)
		    realloc( psfl->psflFaces, (i+ 1)* sizeof(PostScriptFace) );
	if  ( ! psf )
	    { LXDEB(i,psf); return -1;	}
	psfl->psflFaces= psf;
	psfl->psflFaceCount= i+ 1;

	psf += i;

	/*
	psf->psfFamilyNumber= familyNumber;
	psf->psfFaceNumber= faceNumber;
	*/
	psf->psfEncodingUsed= encoding;
	psf->psfAfi= afi;
	psf->psfAttributes= ta;
	psf->psfAppearsInText= appearsInText;

	strcpy( psf->psfFontPrefix, prefix );

	s= psf->psfFontId;
	sprintf( s, "%s%d", prefix, ta.taFontNumber );
	s += strlen( s );
	if  ( ta.taFontIsBold )
	    { strcpy( s, "b" ); s++;	}
	if  ( ta.taFontIsSlanted )
	    { strcpy( s, "i" ); s++;	}

	/*
	appDebug( "%-5ss -> \"%s\" (%d)\n",
			    psf->psfFontId, afi->afiFullName, encoding );
	*/
	}
    else{
	if  ( appearsInText )
	    { psf->psfAppearsInText= 1;	}
	}

    return 0;
    }

/************************************************************************/
/*									*/
/*  Bookkeeping.							*/
/*									*/
/************************************************************************/

void utilInitPostScriptFaceList( PostScriptFaceList *	psfl )
    {
    psfl->psflFaces= (PostScriptFace *)0;
    psfl->psflFaceCount= 0;

    return;
    }

void utilCleanPostScriptFaceList( PostScriptFaceList *	psfl )
    {
    if  ( psfl->psflFaces )
	{ free( psfl->psflFaces );	}

    return;
    }