blob: 546fc33530be4fd0bfdde642048dcf4b2bb257f5 [file] [log] [blame]
Werner Lemberg7fa51b52000-07-08 19:51:42 +00001/***************************************************************************/
2/* */
Werner Lembergb5084e12000-10-28 17:10:06 +00003/* t1load.h */
Werner Lemberg7fa51b52000-07-08 19:51:42 +00004/* */
Werner Lembergb5084e12000-10-28 17:10:06 +00005/* Type 1 font loader (specification). */
Werner Lemberg7fa51b52000-07-08 19:51:42 +00006/* */
Werner Lemberg6e87ed92007-01-26 22:18:56 +00007/* Copyright 1996-2001, 2002, 2004, 2006, 2007 by */
Werner Lemberg7fa51b52000-07-08 19:51:42 +00008/* David Turner, Robert Wilhelm, and Werner Lemberg. */
9/* */
10/* This file is part of the FreeType project, and may only be used, */
11/* modified, and distributed under the terms of the FreeType project */
12/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
13/* this file you indicate that you have read the license and */
14/* understand and accept it fully. */
15/* */
16/***************************************************************************/
17
David Turner2dfb5ac2000-01-27 14:02:04 +000018
Werner Lemberg90d99642000-12-09 00:45:38 +000019#ifndef __T1LOAD_H__
20#define __T1LOAD_H__
David Turner2dfb5ac2000-01-27 14:02:04 +000021
Werner Lembergcc069be2000-12-08 16:17:16 +000022
David Turner19ed8af2000-12-08 02:42:29 +000023#include <ft2build.h>
24#include FT_INTERNAL_STREAM_H
25#include FT_INTERNAL_POSTSCRIPT_AUX_H
26#include FT_MULTIPLE_MASTERS_H
David Turnera90663f2000-07-08 00:41:13 +000027
David Turner8d3a4012001-03-20 11:14:24 +000028#include "t1parse.h"
David Turnera90663f2000-07-08 00:41:13 +000029
Werner Lembergcc069be2000-12-08 16:17:16 +000030
David Turner19ed8af2000-12-08 02:42:29 +000031FT_BEGIN_HEADER
David Turner2dfb5ac2000-01-27 14:02:04 +000032
Werner Lembergcc069be2000-12-08 16:17:16 +000033
Werner Lembergb5084e12000-10-28 17:10:06 +000034 typedef struct T1_Loader_
David Turner2dfb5ac2000-01-27 14:02:04 +000035 {
Werner Lembergb5084e12000-10-28 17:10:06 +000036 T1_ParserRec parser; /* parser used to read the stream */
David Turner2dfb5ac2000-01-27 14:02:04 +000037
Werner Lembergb5084e12000-10-28 17:10:06 +000038 FT_Int num_chars; /* number of characters in encoding */
David Turner4e7eeee2002-02-28 16:10:29 +000039 PS_TableRec encoding_table; /* PS_Table used to store the */
Werner Lembergb5084e12000-10-28 17:10:06 +000040 /* encoding character names */
David Turnere49ab252000-05-16 23:44:38 +000041
Werner Lembergb5084e12000-10-28 17:10:06 +000042 FT_Int num_glyphs;
David Turner4e7eeee2002-02-28 16:10:29 +000043 PS_TableRec glyph_names;
44 PS_TableRec charstrings;
45 PS_TableRec swap_table; /* For moving .notdef glyph to index 0. */
David Turnere49ab252000-05-16 23:44:38 +000046
Werner Lembergb5084e12000-10-28 17:10:06 +000047 FT_Int num_subrs;
David Turner4e7eeee2002-02-28 16:10:29 +000048 PS_TableRec subrs;
Werner Lembergb5084e12000-10-28 17:10:06 +000049 FT_Bool fontdata;
David Turnere49ab252000-05-16 23:44:38 +000050
Werner Lemberg1a380e02006-07-14 18:28:08 +000051 FT_UInt keywords_encountered; /* T1_LOADER_ENCOUNTERED_XXX */
52
Werner Lembergbd889e52002-05-12 19:59:17 +000053 } T1_LoaderRec, *T1_Loader;
David Turner2dfb5ac2000-01-27 14:02:04 +000054
Werner Lemberg7fa51b52000-07-08 19:51:42 +000055
Werner Lemberg1a380e02006-07-14 18:28:08 +000056 /* treatment of some keywords differs depending on whether */
Werner Lemberg6e87ed92007-01-26 22:18:56 +000057 /* they precede or follow certain other keywords */
Werner Lemberg1a380e02006-07-14 18:28:08 +000058
59#define T1_PRIVATE ( 1 << 0 )
60#define T1_FONTDIR_AFTER_PRIVATE ( 1 << 1 )
61
62
David Turnerbc82f1b2002-03-01 02:26:22 +000063 FT_LOCAL( FT_Error )
Werner Lemberg4a2305c2001-06-28 07:17:51 +000064 T1_Open_Face( T1_Face face );
David Turner2dfb5ac2000-01-27 14:02:04 +000065
Werner Lembergb5084e12000-10-28 17:10:06 +000066#ifndef T1_CONFIG_OPTION_NO_MM_SUPPORT
Werner Lemberg7fa51b52000-07-08 19:51:42 +000067
David Turnerbc82f1b2002-03-01 02:26:22 +000068 FT_LOCAL( FT_Error )
Werner Lemberg4a2305c2001-06-28 07:17:51 +000069 T1_Get_Multi_Master( T1_Face face,
70 FT_Multi_Master* master );
David Turner11187202000-05-26 17:13:23 +000071
Werner Lemberg44bb3032004-04-25 20:15:11 +000072 FT_LOCAL_DEF( FT_Error )
73 T1_Get_MM_Var( T1_Face face,
74 FT_MM_Var* *master );
75
David Turnerbc82f1b2002-03-01 02:26:22 +000076 FT_LOCAL( FT_Error )
Werner Lemberg4a2305c2001-06-28 07:17:51 +000077 T1_Set_MM_Blend( T1_Face face,
78 FT_UInt num_coords,
79 FT_Fixed* coords );
Werner Lemberge35cac62000-06-11 03:46:57 +000080
David Turnerbc82f1b2002-03-01 02:26:22 +000081 FT_LOCAL( FT_Error )
Werner Lemberg4a2305c2001-06-28 07:17:51 +000082 T1_Set_MM_Design( T1_Face face,
83 FT_UInt num_coords,
84 FT_Long* coords );
Werner Lemberge35cac62000-06-11 03:46:57 +000085
Werner Lemberg44bb3032004-04-25 20:15:11 +000086 FT_LOCAL_DEF( FT_Error )
87 T1_Set_Var_Design( T1_Face face,
88 FT_UInt num_coords,
89 FT_Fixed* coords );
90
David Turnerbc82f1b2002-03-01 02:26:22 +000091 FT_LOCAL( void )
Werner Lemberg4a2305c2001-06-28 07:17:51 +000092 T1_Done_Blend( T1_Face face );
Werner Lemberg7fa51b52000-07-08 19:51:42 +000093
Werner Lembergb5084e12000-10-28 17:10:06 +000094#endif /* !T1_CONFIG_OPTION_NO_MM_SUPPORT */
Werner Lemberg7fa51b52000-07-08 19:51:42 +000095
David Turner2dfb5ac2000-01-27 14:02:04 +000096
David Turner19ed8af2000-12-08 02:42:29 +000097FT_END_HEADER
David Turner2dfb5ac2000-01-27 14:02:04 +000098
Werner Lemberg90d99642000-12-09 00:45:38 +000099#endif /* __T1LOAD_H__ */
David Turner2dfb5ac2000-01-27 14:02:04 +0000100
101
102/* END */