t1objs.h revision 19ed8afe60bbc5becf0fbbe3987a91b35a36aad4
17fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg/***************************************************************************/ 27fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg/* */ 3b5084e11f7d2d73e0687dee6314c560b8fe6d4cbWerner Lemberg/* t1objs.h */ 47fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg/* */ 5b5084e11f7d2d73e0687dee6314c560b8fe6d4cbWerner Lemberg/* Type 1 objects manager (specification). */ 67fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg/* */ 77fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg/* Copyright 1996-2000 by */ 87fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg/* David Turner, Robert Wilhelm, and Werner Lemberg. */ 97fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg/* */ 107fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg/* This file is part of the FreeType project, and may only be used, */ 117fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg/* modified, and distributed under the terms of the FreeType project */ 127fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ 137fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg/* this file you indicate that you have read the license and */ 147fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg/* understand and accept it fully. */ 157fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg/* */ 167fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg/***************************************************************************/ 177fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg 182dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner 19b5084e11f7d2d73e0687dee6314c560b8fe6d4cbWerner Lemberg#ifndef T1OBJS_H 20b5084e11f7d2d73e0687dee6314c560b8fe6d4cbWerner Lemberg#define T1OBJS_H 212dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner 2219ed8afe60bbc5becf0fbbe3987a91b35a36aad4David Turner#include <ft2build.h> 2319ed8afe60bbc5becf0fbbe3987a91b35a36aad4David Turner#include FT_INTERNAL_OBJECTS_H 2419ed8afe60bbc5becf0fbbe3987a91b35a36aad4David Turner#include FT_CONFIG_CONFIG_H 2519ed8afe60bbc5becf0fbbe3987a91b35a36aad4David Turner#include FT_INTERNAL_TYPE1_ERRORS_H 2619ed8afe60bbc5becf0fbbe3987a91b35a36aad4David Turner#include FT_INTERNAL_TYPE1_TYPES_H 272dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner 2819ed8afe60bbc5becf0fbbe3987a91b35a36aad4David TurnerFT_BEGIN_HEADER 292dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner 302dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner /* The following structures must be defined by the hinter */ 31b5084e11f7d2d73e0687dee6314c560b8fe6d4cbWerner Lemberg typedef struct T1_Size_Hints_ T1_Size_Hints; 32b5084e11f7d2d73e0687dee6314c560b8fe6d4cbWerner Lemberg typedef struct T1_Glyph_Hints_ T1_Glyph_Hints; 332dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner 347fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg 357fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg /*************************************************************************/ 367fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg /* */ 377fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg /* <Type> */ 38b5084e11f7d2d73e0687dee6314c560b8fe6d4cbWerner Lemberg /* T1_Driver */ 397fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg /* */ 407fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg /* <Description> */ 417fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg /* A handle to a Type 1 driver object. */ 427fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg /* */ 43b5084e11f7d2d73e0687dee6314c560b8fe6d4cbWerner Lemberg typedef struct T1_DriverRec_ *T1_Driver; 442dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner 452dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner 467fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg /*************************************************************************/ 477fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg /* */ 487fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg /* <Type> */ 49b5084e11f7d2d73e0687dee6314c560b8fe6d4cbWerner Lemberg /* T1_Size */ 507fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg /* */ 517fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg /* <Description> */ 527fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg /* A handle to a Type 1 size object. */ 537fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg /* */ 54b5084e11f7d2d73e0687dee6314c560b8fe6d4cbWerner Lemberg typedef struct T1_SizeRec_* T1_Size; 552dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner 562dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner 577fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg /*************************************************************************/ 587fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg /* */ 597fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg /* <Type> */ 60b5084e11f7d2d73e0687dee6314c560b8fe6d4cbWerner Lemberg /* T1_GlyphSlot */ 617fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg /* */ 627fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg /* <Description> */ 637fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg /* A handle to a Type 1 glyph slot object. */ 647fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg /* */ 65b5084e11f7d2d73e0687dee6314c560b8fe6d4cbWerner Lemberg typedef struct T1_GlyphSlotRec_* T1_GlyphSlot; 662dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner 672dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner 687fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg /*************************************************************************/ 697fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg /* */ 707fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg /* <Type> */ 71b5084e11f7d2d73e0687dee6314c560b8fe6d4cbWerner Lemberg /* T1_CharMap */ 727fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg /* */ 737fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg /* <Description> */ 747fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg /* A handle to a Type 1 character mapping object. */ 757fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg /* */ 767fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg /* <Note> */ 777fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg /* The Type 1 format doesn't use a charmap but an encoding table. */ 787fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg /* The driver is responsible for making up charmap objects */ 797fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg /* corresponding to these tables. */ 807fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg /* */ 81b5084e11f7d2d73e0687dee6314c560b8fe6d4cbWerner Lemberg typedef struct T1_CharMapRec_* T1_CharMap; 822dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner 832dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner 847fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg /*************************************************************************/ 857fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg /* */ 867fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg /* HERE BEGINS THE TYPE1 SPECIFIC STUFF */ 877fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg /* */ 887fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg /*************************************************************************/ 892dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner 90e49ab25c0822e1043be29e836944c7886f4e8990David Turner 917fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg /*************************************************************************/ 927fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg /* */ 937fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg /* <Type> */ 94b5084e11f7d2d73e0687dee6314c560b8fe6d4cbWerner Lemberg /* T1_SizeRec */ 957fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg /* */ 967fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg /* <Description> */ 977fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg /* Type 1 size record. */ 987fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg /* */ 99b5084e11f7d2d73e0687dee6314c560b8fe6d4cbWerner Lemberg typedef struct T1_SizeRec_ 1002dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner { 1012dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner FT_SizeRec root; 102f9b8dec437dd84060bcd82a555c92fecff848aa7David Turner FT_Bool valid; 103b5084e11f7d2d73e0687dee6314c560b8fe6d4cbWerner Lemberg T1_Size_Hints* hints; /* defined in the hinter. This allows */ 1042dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner /* us to experiment with different */ 1052dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner /* hinting schemes without having to */ 106b5084e11f7d2d73e0687dee6314c560b8fe6d4cbWerner Lemberg /* change `t1objs' each time. */ 107b5084e11f7d2d73e0687dee6314c560b8fe6d4cbWerner Lemberg } T1_SizeRec; 1082dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner 1092dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner 1107fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg /*************************************************************************/ 1117fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg /* */ 1127fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg /* <Type> */ 113b5084e11f7d2d73e0687dee6314c560b8fe6d4cbWerner Lemberg /* T1_GlyphSlotRec */ 1147fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg /* */ 1157fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg /* <Description> */ 1167fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg /* Type 1 glyph slot record. */ 1177fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg /* */ 118b5084e11f7d2d73e0687dee6314c560b8fe6d4cbWerner Lemberg typedef struct T1_GlyphSlotRec_ 1192dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner { 1202dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner FT_GlyphSlotRec root; 1212dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner 122f9b8dec437dd84060bcd82a555c92fecff848aa7David Turner FT_Bool hint; 123f9b8dec437dd84060bcd82a555c92fecff848aa7David Turner FT_Bool scaled; 124e49ab25c0822e1043be29e836944c7886f4e8990David Turner 125f9b8dec437dd84060bcd82a555c92fecff848aa7David Turner FT_Int max_points; 126f9b8dec437dd84060bcd82a555c92fecff848aa7David Turner FT_Int max_contours; 1272dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner 1282dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner FT_Fixed x_scale; 1292dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner FT_Fixed y_scale; 1302dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner 131b5084e11f7d2d73e0687dee6314c560b8fe6d4cbWerner Lemberg T1_Glyph_Hints* hints; /* defined in the hinter */ 1322dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner 133b5084e11f7d2d73e0687dee6314c560b8fe6d4cbWerner Lemberg } T1_GlyphSlotRec; 1342dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner 1352dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner 13676a5f62323d4fe3319d3d5410ded0ff9cab1f8c5David Turner FT_LOCAL 137b5084e11f7d2d73e0687dee6314c560b8fe6d4cbWerner Lemberg FT_Error T1_Init_Face( FT_Stream stream, 1387fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg T1_Face face, 1397fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg FT_Int face_index, 1407fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg FT_Int num_params, 1417fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg FT_Parameter* params ); 1422dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner 14376a5f62323d4fe3319d3d5410ded0ff9cab1f8c5David Turner FT_LOCAL 144b5084e11f7d2d73e0687dee6314c560b8fe6d4cbWerner Lemberg void T1_Done_Face( T1_Face face ); 1452dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner 14676a5f62323d4fe3319d3d5410ded0ff9cab1f8c5David Turner FT_LOCAL 147b5084e11f7d2d73e0687dee6314c560b8fe6d4cbWerner Lemberg FT_Error T1_Init_Driver( T1_Driver driver ); 1482dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner 14976a5f62323d4fe3319d3d5410ded0ff9cab1f8c5David Turner FT_LOCAL 150b5084e11f7d2d73e0687dee6314c560b8fe6d4cbWerner Lemberg void T1_Done_Driver( T1_Driver driver ); 1512dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner 1527fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg 15319ed8afe60bbc5becf0fbbe3987a91b35a36aad4David TurnerFT_END_HEADER 1542dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner 155b5084e11f7d2d73e0687dee6314c560b8fe6d4cbWerner Lemberg#endif /* T1OBJS_H */ 1562dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner 1572dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner 1582dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner/* END */ 159