2018-06-03 09:01:17 +02:00
|
|
|
/****************************************************************************
|
|
|
|
*
|
|
|
|
* t1objs.h
|
|
|
|
*
|
|
|
|
* Type 1 objects manager (specification).
|
|
|
|
*
|
2022-01-11 10:54:10 +01:00
|
|
|
* Copyright (C) 1996-2022 by
|
2018-06-03 09:01:17 +02:00
|
|
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
|
|
|
*
|
|
|
|
* This file is part of the FreeType project, and may only be used,
|
|
|
|
* modified, and distributed under the terms of the FreeType project
|
|
|
|
* license, LICENSE.TXT. By continuing to use, modify, or distribute
|
|
|
|
* this file you indicate that you have read the license and
|
|
|
|
* understand and accept it fully.
|
|
|
|
*
|
|
|
|
*/
|
2000-07-08 21:51:42 +02:00
|
|
|
|
2000-01-27 15:02:04 +01:00
|
|
|
|
2016-01-12 21:37:13 +01:00
|
|
|
#ifndef T1OBJS_H_
|
|
|
|
#define T1OBJS_H_
|
2000-01-27 15:02:04 +01:00
|
|
|
|
2000-12-08 17:17:16 +01:00
|
|
|
|
2000-12-08 03:42:29 +01:00
|
|
|
#include <ft2build.h>
|
2020-06-08 13:31:55 +02:00
|
|
|
#include <freetype/internal/ftobjs.h>
|
2000-12-08 03:42:29 +01:00
|
|
|
#include FT_CONFIG_CONFIG_H
|
2020-06-08 13:31:55 +02:00
|
|
|
#include <freetype/internal/t1types.h>
|
2000-01-27 15:02:04 +01:00
|
|
|
|
2000-12-08 17:17:16 +01:00
|
|
|
|
2000-12-08 03:42:29 +01:00
|
|
|
FT_BEGIN_HEADER
|
2000-01-27 15:02:04 +01:00
|
|
|
|
2000-12-08 17:17:16 +01:00
|
|
|
|
2000-01-27 15:02:04 +01:00
|
|
|
/* The following structures must be defined by the hinter */
|
2000-10-28 19:10:06 +02:00
|
|
|
typedef struct T1_Size_Hints_ T1_Size_Hints;
|
|
|
|
typedef struct T1_Glyph_Hints_ T1_Glyph_Hints;
|
2000-01-27 15:02:04 +01:00
|
|
|
|
2000-07-08 21:51:42 +02:00
|
|
|
|
2018-06-03 09:01:17 +02:00
|
|
|
/**************************************************************************
|
|
|
|
*
|
|
|
|
* @Type:
|
|
|
|
* T1_Size
|
|
|
|
*
|
|
|
|
* @Description:
|
|
|
|
* A handle to a Type 1 size object.
|
|
|
|
*/
|
2000-10-28 19:10:06 +02:00
|
|
|
typedef struct T1_SizeRec_* T1_Size;
|
2000-01-27 15:02:04 +01:00
|
|
|
|
|
|
|
|
2018-06-03 09:01:17 +02:00
|
|
|
/**************************************************************************
|
|
|
|
*
|
|
|
|
* @Type:
|
|
|
|
* T1_GlyphSlot
|
|
|
|
*
|
|
|
|
* @Description:
|
|
|
|
* A handle to a Type 1 glyph slot object.
|
|
|
|
*/
|
2000-10-28 19:10:06 +02:00
|
|
|
typedef struct T1_GlyphSlotRec_* T1_GlyphSlot;
|
2000-01-27 15:02:04 +01:00
|
|
|
|
|
|
|
|
2018-06-03 09:01:17 +02:00
|
|
|
/**************************************************************************
|
|
|
|
*
|
|
|
|
* @Type:
|
|
|
|
* T1_CharMap
|
|
|
|
*
|
|
|
|
* @Description:
|
|
|
|
* A handle to a Type 1 character mapping object.
|
|
|
|
*
|
|
|
|
* @Note:
|
|
|
|
* The Type 1 format doesn't use a charmap but an encoding table.
|
|
|
|
* The driver is responsible for making up charmap objects
|
|
|
|
* corresponding to these tables.
|
|
|
|
*/
|
2000-10-28 19:10:06 +02:00
|
|
|
typedef struct T1_CharMapRec_* T1_CharMap;
|
2000-01-27 15:02:04 +01:00
|
|
|
|
|
|
|
|
2018-06-03 09:01:17 +02:00
|
|
|
/**************************************************************************
|
|
|
|
*
|
|
|
|
* HERE BEGINS THE TYPE1 SPECIFIC STUFF
|
|
|
|
*
|
|
|
|
*/
|
2000-01-27 15:02:04 +01:00
|
|
|
|
2000-05-17 01:44:38 +02:00
|
|
|
|
2018-06-03 09:01:17 +02:00
|
|
|
/**************************************************************************
|
|
|
|
*
|
|
|
|
* @Type:
|
|
|
|
* T1_SizeRec
|
|
|
|
*
|
|
|
|
* @Description:
|
|
|
|
* Type 1 size record.
|
|
|
|
*/
|
2000-10-28 19:10:06 +02:00
|
|
|
typedef struct T1_SizeRec_
|
2000-01-27 15:02:04 +01:00
|
|
|
{
|
2001-10-18 13:49:26 +02:00
|
|
|
FT_SizeRec root;
|
|
|
|
|
2000-10-28 19:10:06 +02:00
|
|
|
} T1_SizeRec;
|
2000-01-27 15:02:04 +01:00
|
|
|
|
|
|
|
|
2002-03-01 03:26:22 +01:00
|
|
|
FT_LOCAL( void )
|
2011-11-30 13:08:28 +01:00
|
|
|
T1_Size_Done( FT_Size size );
|
2001-12-05 02:22:05 +01:00
|
|
|
|
2002-03-01 03:26:22 +01:00
|
|
|
FT_LOCAL( FT_Error )
|
2011-11-30 13:08:28 +01:00
|
|
|
T1_Size_Request( FT_Size size,
|
* include/freetype/freetype.h (FT_Select_Size): Rename the second
argument from `idx' to `strike_index'.
(FT_Size_Request_Type): Add FT_SIZE_REQUEST_TYPE_MAX to the end of
this enum.
* include/freetype/internal/ftobjs.h (FT_REQUEST_WIDTH,
FT_REQUEST_HEIGHT): New macros to get the width and height of a
request, in fractional pixels.
* include/freetype/internal/ftobjs.h (FT_Select_Metrics,
FT_Request_Metrics), src/base/ftobjs.c (FT_Select_Metrics,
FT_Request_Metrics): New base functions to set the font metrics. They
were part of FT_Select_Size/FT_Request_Size and are made independent
functions so that metrics are not set again and again.
* src/base/ftobjs.c (FT_Select_Size, FT_Request_Size): Metrics are set
only when driver's size_select/size_request is NULL. That is, drivers
should set the metrics themselves.
(FT_Match_Size): Round before matching. This was what we did and it
does cause some problems without rounding.
* src/cff/cffobjs.c (cff_size_select), src/truetype/ttdriver.c
(tt_size_select): Set the font metrics.
s/index/strike_index/.
The scaled metrics are always preferred over strikes' metrics, even
when some strike is selected. This is done because the strikes'
metrics are not reliable, e.g., the sign of the descender is wrong for
some fonts.
* src/cff/cffobjs.c (cff_size_request), src/truetype/ttdriver.c
(tt_size_request): Set the font metrics.
Call cff_size_select/tt_size_select when some strike is matched.
* src/bdf/bdfdrivr.c, src/cff/cffobjs.c, src/cid/cidobjs.c,
src/pcf/pcfdrivr.c, src/truetype/ttdriver.c, src/type1/t1objs.c,
src/type1/t1objs.h, src/type42/t42objs.c, src/winfonts/winfnt.c:
Set the font metrics.
s/index/strike_index/.
* src/tools/test_afm.c, src/psaux/psconv.c: Older versions of these
files were committed. Just a catch-up.
(PS_Conv_ToFixed): Remove the `goto'.
(PS_Conv_ASCIIHexDecode, PS_Conv_EexecDecode): Speed up a little.
* src/sfnt/ttsbit.c (tt_face_load_sbit_strikes,
tt_face_load_strike_metrics), src/sfnt/ttsbit0.c
(tt_face_load_sbit_strikes, tt_face_load_strike_metrics): The
advertised metrics in `available_sizes' are different from those
actually used.
2006-01-23 15:12:40 +01:00
|
|
|
FT_Size_Request req );
|
2001-10-18 13:49:26 +02:00
|
|
|
|
2002-03-01 03:26:22 +01:00
|
|
|
FT_LOCAL( FT_Error )
|
2011-11-30 13:08:28 +01:00
|
|
|
T1_Size_Init( FT_Size size );
|
2001-10-18 13:49:26 +02:00
|
|
|
|
|
|
|
|
2018-06-03 09:01:17 +02:00
|
|
|
/**************************************************************************
|
|
|
|
*
|
|
|
|
* @Type:
|
|
|
|
* T1_GlyphSlotRec
|
|
|
|
*
|
|
|
|
* @Description:
|
|
|
|
* Type 1 glyph slot record.
|
|
|
|
*/
|
2000-10-28 19:10:06 +02:00
|
|
|
typedef struct T1_GlyphSlotRec_
|
2000-01-27 15:02:04 +01:00
|
|
|
{
|
|
|
|
FT_GlyphSlotRec root;
|
|
|
|
|
2000-06-16 21:34:52 +02:00
|
|
|
FT_Bool hint;
|
|
|
|
FT_Bool scaled;
|
2000-05-17 01:44:38 +02:00
|
|
|
|
2000-01-27 15:02:04 +01:00
|
|
|
FT_Fixed x_scale;
|
|
|
|
FT_Fixed y_scale;
|
|
|
|
|
2017-09-25 06:22:52 +02:00
|
|
|
FT_Int max_points;
|
|
|
|
FT_Int max_contours;
|
|
|
|
|
2000-10-28 19:10:06 +02:00
|
|
|
} T1_GlyphSlotRec;
|
2000-01-27 15:02:04 +01:00
|
|
|
|
|
|
|
|
2002-03-01 03:26:22 +01:00
|
|
|
FT_LOCAL( FT_Error )
|
2001-10-18 13:49:26 +02:00
|
|
|
T1_Face_Init( FT_Stream stream,
|
2011-11-30 13:08:28 +01:00
|
|
|
FT_Face face,
|
2001-06-28 09:17:51 +02:00
|
|
|
FT_Int face_index,
|
|
|
|
FT_Int num_params,
|
|
|
|
FT_Parameter* params );
|
2000-01-27 15:02:04 +01:00
|
|
|
|
2002-03-01 03:26:22 +01:00
|
|
|
FT_LOCAL( void )
|
2011-11-30 13:08:28 +01:00
|
|
|
T1_Face_Done( FT_Face face );
|
2001-10-18 13:49:26 +02:00
|
|
|
|
2002-03-01 03:26:22 +01:00
|
|
|
FT_LOCAL( FT_Error )
|
2011-11-30 13:08:28 +01:00
|
|
|
T1_GlyphSlot_Init( FT_GlyphSlot slot );
|
2007-01-16 07:11:27 +01:00
|
|
|
|
2002-03-01 03:26:22 +01:00
|
|
|
FT_LOCAL( void )
|
2011-11-30 13:08:28 +01:00
|
|
|
T1_GlyphSlot_Done( FT_GlyphSlot slot );
|
2000-01-27 15:02:04 +01:00
|
|
|
|
2002-03-01 03:26:22 +01:00
|
|
|
FT_LOCAL( FT_Error )
|
2011-11-30 13:08:28 +01:00
|
|
|
T1_Driver_Init( FT_Module driver );
|
2000-01-27 15:02:04 +01:00
|
|
|
|
2002-03-01 03:26:22 +01:00
|
|
|
FT_LOCAL( void )
|
2011-11-30 13:08:28 +01:00
|
|
|
T1_Driver_Done( FT_Module driver );
|
2000-01-27 15:02:04 +01:00
|
|
|
|
2000-07-08 21:51:42 +02:00
|
|
|
|
2000-12-08 03:42:29 +01:00
|
|
|
FT_END_HEADER
|
2000-01-27 15:02:04 +01:00
|
|
|
|
2016-01-12 21:37:13 +01:00
|
|
|
#endif /* T1OBJS_H_ */
|
2000-01-27 15:02:04 +01:00
|
|
|
|
|
|
|
|
|
|
|
/* END */
|