2018-06-03 09:01:17 +02:00
|
|
|
/****************************************************************************
|
|
|
|
*
|
|
|
|
* t1driver.c
|
|
|
|
*
|
|
|
|
* Type 1 driver interface (body).
|
|
|
|
*
|
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-12-09 01:45:38 +01:00
|
|
|
|
2001-03-20 12:14:24 +01:00
|
|
|
#include "t1driver.h"
|
|
|
|
#include "t1gload.h"
|
|
|
|
#include "t1load.h"
|
2000-11-29 16:18:54 +01:00
|
|
|
|
Complete redesign of error codes. Please check ftmoderr.h for more
details.
* include/freetype/internal/cfferrs.h,
include/freetype/internal/tterrors.h,
include/freetype/internal/t1errors.h: Removed. Replaced with files
local to the module. All extra error codes have been moved to
`fterrors.h'.
* src/sfnt/ttpost.h: Move error codes to `fterrors.h'.
* src/autohint/aherrors.h, src/cache/ftcerror.h, src/cff/cfferrs.h,
src/cid/ciderrs.h, src/pcf/pcferror.h, src/psaux/psauxerr.h,
src/psnames/psnamerr.h, src/raster/rasterrs.h, src/sfnt/sferrors.h,
src/smooth/ftsmerrs.h, src/truetype/tterrors.h,
src/type1/t1errors.h, src/winfonts/fnterrs.h: New files defining the
error names for the module it belongs to.
* include/freetype/ftmoderr.h: New file, defining the module error
offsets. Its structure is similar to `fterrors.h'.
* include/freetype/fterrors.h (FT_NOERRORDEF): New macro.
(FT_ERRORDEF): Redefined to use module error offsets.
All internal error codes are now public; unused error codes have
been removed, some are new.
* include/freetype/config/ftheader.h (FT_MODULE_ERRORS_H): New
macro.
* include/freetype/config/ftoption.h
(FT_CONFIG_OPTION_USE_MODULE_ERRORS): New macro.
All other source files have been updated to use the new error codes;
some already existing (internal) error codes local to a module have
been renamed to give them the same name as in the base module.
All make files have been updated to include the local error files.
* src/cid/cidtokens.h: Replaced with...
* src/cid/cidtoken.h: This file for 8+3 consistency.
* src/raster/ftraster.c: Use macros for header file names.
2001-06-06 19:30:41 +02:00
|
|
|
#include "t1errors.h"
|
|
|
|
|
2000-11-29 16:18:54 +01:00
|
|
|
#ifndef T1_CONFIG_OPTION_NO_AFM
|
2001-03-20 12:14:24 +01:00
|
|
|
#include "t1afm.h"
|
2000-11-29 16:18:54 +01:00
|
|
|
#endif
|
2000-07-08 21:51:42 +02:00
|
|
|
|
2020-06-08 13:31:55 +02:00
|
|
|
#include <freetype/internal/ftdebug.h>
|
|
|
|
#include <freetype/internal/ftstream.h>
|
|
|
|
#include <freetype/internal/fthash.h>
|
|
|
|
#include <freetype/internal/ftpsprop.h>
|
|
|
|
#include <freetype/ftdriver.h>
|
|
|
|
|
|
|
|
#include <freetype/internal/services/svmm.h>
|
|
|
|
#include <freetype/internal/services/svgldict.h>
|
|
|
|
#include <freetype/internal/services/svfntfmt.h>
|
|
|
|
#include <freetype/internal/services/svpostnm.h>
|
|
|
|
#include <freetype/internal/services/svpscmap.h>
|
|
|
|
#include <freetype/internal/services/svpsinfo.h>
|
|
|
|
#include <freetype/internal/services/svprop.h>
|
|
|
|
#include <freetype/internal/services/svkern.h>
|
2000-07-08 21:51:42 +02:00
|
|
|
|
2006-01-16 23:35:33 +01:00
|
|
|
|
2018-06-03 09:01:17 +02:00
|
|
|
/**************************************************************************
|
|
|
|
*
|
|
|
|
* The macro FT_COMPONENT is used in trace mode. It is an implicit
|
|
|
|
* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
|
|
|
|
* messages during execution.
|
|
|
|
*/
|
2000-01-27 15:02:04 +01:00
|
|
|
#undef FT_COMPONENT
|
2018-08-15 18:13:17 +02:00
|
|
|
#define FT_COMPONENT t1driver
|
2000-07-08 21:51:42 +02:00
|
|
|
|
2018-06-03 09:01:17 +02:00
|
|
|
/*
|
|
|
|
* GLYPH DICT SERVICE
|
|
|
|
*
|
|
|
|
*/
|
2000-01-27 15:02:04 +01:00
|
|
|
|
2001-06-28 09:17:51 +02:00
|
|
|
static FT_Error
|
2001-08-09 03:06:33 +02:00
|
|
|
t1_get_glyph_name( T1_Face face,
|
2001-06-28 09:17:51 +02:00
|
|
|
FT_UInt glyph_index,
|
|
|
|
FT_Pointer buffer,
|
|
|
|
FT_UInt buffer_max )
|
2000-07-19 19:13:03 +02:00
|
|
|
{
|
2007-02-12 15:55:03 +01:00
|
|
|
FT_STRCPYN( buffer, face->type1.glyph_names[glyph_index], buffer_max );
|
2007-02-12 22:44:10 +01:00
|
|
|
|
2013-03-14 11:21:17 +01:00
|
|
|
return FT_Err_Ok;
|
2000-10-31 21:42:18 +01:00
|
|
|
}
|
2000-07-19 19:13:03 +02:00
|
|
|
|
Updating to OpenType 1.3.
* include/freetype/internal/tttypes.h (TT_CMap0, TT_CMap2, TT_CMap4,
TT_CMap6): Adding field `language'.
(TT_CMapTable): Removing field `language'.
Type of `length' field changed to FT_ULong.
Adding fields for cmaps format 8, 10, and 12.
(TT_CMapGroup): New auxiliary structure.
(TT_CMap8_12, TT_CMap10): New structures.
* include/freetype/tttables.h (TT_HoriHeader, TT_VertHeader):
Removed last element of `Reserved' array.
* include/freetype/ttnameid.h (TT_PLATFORM_CUSTOM, TT_MS_ID_UCS_4,
TT_NAME_ID_CID_FINDFONT_NAME): New macros.
* src/sfnt/ttcmap.c (TT_CharMap_Load): Updated loading of `language'
field to the new structures.
Fixed freeing of arrays in case of unsuccessful loads.
Added support for loading format 8, 10, and 12 cmaps.
(TT_CharMap_Free): Added support for freeing format 8, 10, and 12
cmaps.
(code_to_index4): Small improvement.
(code_to_index6): Ditto.
(code_to_index8_12, code_to_index10): New functions.
* src/sfnt/ttload.c (TT_Load_Metrics_Header): Updated to new
structure.
(TT_Load_CMap): Ditto.
* src/sfnt/sfobjs.c (tt_encodings): Add MS UCS4 table (before MS
Unicode).
* src/type1/t1driver.c (t1_get_name_index): Fix compiler warning.
2001-08-13 13:44:29 +02:00
|
|
|
|
2001-08-09 03:06:33 +02:00
|
|
|
static FT_UInt
|
2019-04-06 06:37:42 +02:00
|
|
|
t1_get_name_index( T1_Face face,
|
|
|
|
const FT_String* glyph_name )
|
2001-08-09 03:06:33 +02:00
|
|
|
{
|
2013-06-04 10:30:48 +02:00
|
|
|
FT_Int i;
|
2001-08-09 03:06:33 +02:00
|
|
|
|
Updating to OpenType 1.3.
* include/freetype/internal/tttypes.h (TT_CMap0, TT_CMap2, TT_CMap4,
TT_CMap6): Adding field `language'.
(TT_CMapTable): Removing field `language'.
Type of `length' field changed to FT_ULong.
Adding fields for cmaps format 8, 10, and 12.
(TT_CMapGroup): New auxiliary structure.
(TT_CMap8_12, TT_CMap10): New structures.
* include/freetype/tttables.h (TT_HoriHeader, TT_VertHeader):
Removed last element of `Reserved' array.
* include/freetype/ttnameid.h (TT_PLATFORM_CUSTOM, TT_MS_ID_UCS_4,
TT_NAME_ID_CID_FINDFONT_NAME): New macros.
* src/sfnt/ttcmap.c (TT_CharMap_Load): Updated loading of `language'
field to the new structures.
Fixed freeing of arrays in case of unsuccessful loads.
Added support for loading format 8, 10, and 12 cmaps.
(TT_CharMap_Free): Added support for freeing format 8, 10, and 12
cmaps.
(code_to_index4): Small improvement.
(code_to_index6): Ditto.
(code_to_index8_12, code_to_index10): New functions.
* src/sfnt/ttload.c (TT_Load_Metrics_Header): Updated to new
structure.
(TT_Load_CMap): Ditto.
* src/sfnt/sfobjs.c (tt_encodings): Add MS UCS4 table (before MS
Unicode).
* src/type1/t1driver.c (t1_get_name_index): Fix compiler warning.
2001-08-13 13:44:29 +02:00
|
|
|
|
2001-08-09 03:06:33 +02:00
|
|
|
for ( i = 0; i < face->type1.num_glyphs; i++ )
|
|
|
|
{
|
2013-06-04 10:30:48 +02:00
|
|
|
FT_String* gname = face->type1.glyph_names[i];
|
|
|
|
|
2001-08-09 03:06:33 +02:00
|
|
|
|
* README.UNX: updated the Unix-specific quick-compilation guide to
warn about the GNU Make requirement at compile time..
* include/freetype/config/ftstdlib.h,
include/freetype/config/ftconfig.h,
include/freetype/config/ftheader.h,
include/freetype/internal/ftmemory.h,
include/freetype/internal/ftobjs.h,
src/autohint/ahoptim.c,
src/base/ftdbgmem.c, src/base/ftdebug.c,
src/base/ftmac.c, src/base/ftobjs.c,
src/base/ftsystem.c,
src/cache/ftcimage.c, src/cache/ftcsbits.c,
src/cff/cffdriver.c, src/cff/cffload.c, src/cff/cffobjs.c,
src/cid/cidload.c, src/cid/cidparse.c, src/cid/cidriver.c,
src/pcf/pcfdriver.c, src/pcf/pcfread.c,
src/psaux/t1cmap.c, src/psaux/t1decode.c,
src/pshinter/pshalgo1.c, src/pshinter/pshalgo2.c,
src/pshinter/pshrec.c,
src/psnames/psmodule.c,
src/raster/ftraster.c,
src/sfnt/sfdriver.c, src/sfnt/ttload.c, src/sfnt/ttpost.c,
src/smooth/ftgrays.c,
src/type1/t1afm.c, src/type1/t1driver.c, src/type1/t1gload.c,
src/type1/t1load.c, src/type1/t1objs.c, src/type1/t1parse.c:
added the new configuration file "ftstdlib.h" used to define
aliases for all ISO C library functions used by the engine
(e.g. strlen, qsort, setjmp, etc...)
this eases the porting of FreeType 2 to exotic environments like
XFree86 modules/extensions..
also removed many #include <string.h>, #include <stdlib.h>, etc...
from the engine's sources where they're not needed..
2002-04-12 11:31:48 +02:00
|
|
|
if ( !ft_strcmp( glyph_name, gname ) )
|
Updating to OpenType 1.3.
* include/freetype/internal/tttypes.h (TT_CMap0, TT_CMap2, TT_CMap4,
TT_CMap6): Adding field `language'.
(TT_CMapTable): Removing field `language'.
Type of `length' field changed to FT_ULong.
Adding fields for cmaps format 8, 10, and 12.
(TT_CMapGroup): New auxiliary structure.
(TT_CMap8_12, TT_CMap10): New structures.
* include/freetype/tttables.h (TT_HoriHeader, TT_VertHeader):
Removed last element of `Reserved' array.
* include/freetype/ttnameid.h (TT_PLATFORM_CUSTOM, TT_MS_ID_UCS_4,
TT_NAME_ID_CID_FINDFONT_NAME): New macros.
* src/sfnt/ttcmap.c (TT_CharMap_Load): Updated loading of `language'
field to the new structures.
Fixed freeing of arrays in case of unsuccessful loads.
Added support for loading format 8, 10, and 12 cmaps.
(TT_CharMap_Free): Added support for freeing format 8, 10, and 12
cmaps.
(code_to_index4): Small improvement.
(code_to_index6): Ditto.
(code_to_index8_12, code_to_index10): New functions.
* src/sfnt/ttload.c (TT_Load_Metrics_Header): Updated to new
structure.
(TT_Load_CMap): Ditto.
* src/sfnt/sfobjs.c (tt_encodings): Add MS UCS4 table (before MS
Unicode).
* src/type1/t1driver.c (t1_get_name_index): Fix compiler warning.
2001-08-13 13:44:29 +02:00
|
|
|
return (FT_UInt)i;
|
2001-08-09 03:06:33 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
2009-03-03 22:35:32 +01:00
|
|
|
|
* include/freetype/ftmm.h, include/freetype/ftmodule.h,
include/freetype/tttables.h, include/freetype/config/ftconfig.h,
include/freetype/internal/ftobjs.h,
include/freetype/internal/ftserv.h,
include/freetype/internal/internal.h,
include/freetype/internal/sfnt.h,
include/freetype/internal/tttypes.h,
include/freetype/internal/services/bdf.h,
include/freetype/internal/services/glyfdict.h,
include/freetype/internal/services/multmast.h,
include/freetype/internal/services/postname.h,
include/freetype/internal/services/sfnt.h,
include/freetype/internal/services/xf86name.h,
src/base/ftbdf.c, src/base/ftmm.c, src/base/ftobjs.c,
src/base/ftxf86.c, src/bdf/bdfdrivr.c, src/cff/cffdrivr.c,
src/cid/cidriver.c, src/pcf/pcfdrivr.c, src/sfnt/sfdriver.c,
src/truetype/ttdriver.c, src/type1/t1driver.c, src/type42/t42drivr.c:
heavy internal modifications to introduce the concept of
"module services". This is the first step towards a massive
simplification of the engine's internals, in order to
get rid of various numbers of hacks.
Note that this changes will break source & binary compatibility
for authors of external font drivers.
Maybe 2.1.6 will be called 2.2.0 after all :-)
2003-09-11 21:51:54 +02:00
|
|
|
static const FT_Service_GlyphDictRec t1_service_glyph_dict =
|
|
|
|
{
|
2015-10-30 08:07:56 +01:00
|
|
|
(FT_GlyphDict_GetNameFunc) t1_get_glyph_name, /* get_name */
|
|
|
|
(FT_GlyphDict_NameIndexFunc)t1_get_name_index /* name_index */
|
* include/freetype/ftmm.h, include/freetype/ftmodule.h,
include/freetype/tttables.h, include/freetype/config/ftconfig.h,
include/freetype/internal/ftobjs.h,
include/freetype/internal/ftserv.h,
include/freetype/internal/internal.h,
include/freetype/internal/sfnt.h,
include/freetype/internal/tttypes.h,
include/freetype/internal/services/bdf.h,
include/freetype/internal/services/glyfdict.h,
include/freetype/internal/services/multmast.h,
include/freetype/internal/services/postname.h,
include/freetype/internal/services/sfnt.h,
include/freetype/internal/services/xf86name.h,
src/base/ftbdf.c, src/base/ftmm.c, src/base/ftobjs.c,
src/base/ftxf86.c, src/bdf/bdfdrivr.c, src/cff/cffdrivr.c,
src/cid/cidriver.c, src/pcf/pcfdrivr.c, src/sfnt/sfdriver.c,
src/truetype/ttdriver.c, src/type1/t1driver.c, src/type42/t42drivr.c:
heavy internal modifications to introduce the concept of
"module services". This is the first step towards a massive
simplification of the engine's internals, in order to
get rid of various numbers of hacks.
Note that this changes will break source & binary compatibility
for authors of external font drivers.
Maybe 2.1.6 will be called 2.2.0 after all :-)
2003-09-11 21:51:54 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
|
2009-03-03 22:35:32 +01:00
|
|
|
/*
|
2018-06-03 09:01:17 +02:00
|
|
|
* POSTSCRIPT NAME SERVICE
|
2009-03-03 22:35:32 +01:00
|
|
|
*
|
|
|
|
*/
|
2000-07-19 19:13:03 +02:00
|
|
|
|
2001-10-17 15:48:10 +02:00
|
|
|
static const char*
|
2002-04-02 00:01:46 +02:00
|
|
|
t1_get_ps_name( T1_Face face )
|
2001-10-17 15:48:10 +02:00
|
|
|
{
|
|
|
|
return (const char*) face->type1.font_name;
|
|
|
|
}
|
|
|
|
|
2009-03-03 22:35:32 +01:00
|
|
|
|
2003-09-29 22:33:37 +02:00
|
|
|
static const FT_Service_PsFontNameRec t1_service_ps_name =
|
* include/freetype/ftmm.h, include/freetype/ftmodule.h,
include/freetype/tttables.h, include/freetype/config/ftconfig.h,
include/freetype/internal/ftobjs.h,
include/freetype/internal/ftserv.h,
include/freetype/internal/internal.h,
include/freetype/internal/sfnt.h,
include/freetype/internal/tttypes.h,
include/freetype/internal/services/bdf.h,
include/freetype/internal/services/glyfdict.h,
include/freetype/internal/services/multmast.h,
include/freetype/internal/services/postname.h,
include/freetype/internal/services/sfnt.h,
include/freetype/internal/services/xf86name.h,
src/base/ftbdf.c, src/base/ftmm.c, src/base/ftobjs.c,
src/base/ftxf86.c, src/bdf/bdfdrivr.c, src/cff/cffdrivr.c,
src/cid/cidriver.c, src/pcf/pcfdrivr.c, src/sfnt/sfdriver.c,
src/truetype/ttdriver.c, src/type1/t1driver.c, src/type42/t42drivr.c:
heavy internal modifications to introduce the concept of
"module services". This is the first step towards a massive
simplification of the engine's internals, in order to
get rid of various numbers of hacks.
Note that this changes will break source & binary compatibility
for authors of external font drivers.
Maybe 2.1.6 will be called 2.2.0 after all :-)
2003-09-11 21:51:54 +02:00
|
|
|
{
|
2015-10-30 08:07:56 +01:00
|
|
|
(FT_PsName_GetFunc)t1_get_ps_name /* get_ps_font_name */
|
* include/freetype/ftmm.h, include/freetype/ftmodule.h,
include/freetype/tttables.h, include/freetype/config/ftconfig.h,
include/freetype/internal/ftobjs.h,
include/freetype/internal/ftserv.h,
include/freetype/internal/internal.h,
include/freetype/internal/sfnt.h,
include/freetype/internal/tttypes.h,
include/freetype/internal/services/bdf.h,
include/freetype/internal/services/glyfdict.h,
include/freetype/internal/services/multmast.h,
include/freetype/internal/services/postname.h,
include/freetype/internal/services/sfnt.h,
include/freetype/internal/services/xf86name.h,
src/base/ftbdf.c, src/base/ftmm.c, src/base/ftobjs.c,
src/base/ftxf86.c, src/bdf/bdfdrivr.c, src/cff/cffdrivr.c,
src/cid/cidriver.c, src/pcf/pcfdrivr.c, src/sfnt/sfdriver.c,
src/truetype/ttdriver.c, src/type1/t1driver.c, src/type42/t42drivr.c:
heavy internal modifications to introduce the concept of
"module services". This is the first step towards a massive
simplification of the engine's internals, in order to
get rid of various numbers of hacks.
Note that this changes will break source & binary compatibility
for authors of external font drivers.
Maybe 2.1.6 will be called 2.2.0 after all :-)
2003-09-11 21:51:54 +02:00
|
|
|
};
|
2001-10-17 15:48:10 +02:00
|
|
|
|
* include/freetype/ftmm.h, include/freetype/ftmodule.h,
include/freetype/tttables.h, include/freetype/config/ftconfig.h,
include/freetype/internal/ftobjs.h,
include/freetype/internal/ftserv.h,
include/freetype/internal/internal.h,
include/freetype/internal/sfnt.h,
include/freetype/internal/tttypes.h,
include/freetype/internal/services/bdf.h,
include/freetype/internal/services/glyfdict.h,
include/freetype/internal/services/multmast.h,
include/freetype/internal/services/postname.h,
include/freetype/internal/services/sfnt.h,
include/freetype/internal/services/xf86name.h,
src/base/ftbdf.c, src/base/ftmm.c, src/base/ftobjs.c,
src/base/ftxf86.c, src/bdf/bdfdrivr.c, src/cff/cffdrivr.c,
src/cid/cidriver.c, src/pcf/pcfdrivr.c, src/sfnt/sfdriver.c,
src/truetype/ttdriver.c, src/type1/t1driver.c, src/type42/t42drivr.c:
heavy internal modifications to introduce the concept of
"module services". This is the first step towards a massive
simplification of the engine's internals, in order to
get rid of various numbers of hacks.
Note that this changes will break source & binary compatibility
for authors of external font drivers.
Maybe 2.1.6 will be called 2.2.0 after all :-)
2003-09-11 21:51:54 +02:00
|
|
|
|
2009-03-03 22:35:32 +01:00
|
|
|
/*
|
2018-06-03 09:01:17 +02:00
|
|
|
* MULTIPLE MASTERS SERVICE
|
2009-03-03 22:35:32 +01:00
|
|
|
*
|
|
|
|
*/
|
* include/freetype/ftmm.h, include/freetype/ftmodule.h,
include/freetype/tttables.h, include/freetype/config/ftconfig.h,
include/freetype/internal/ftobjs.h,
include/freetype/internal/ftserv.h,
include/freetype/internal/internal.h,
include/freetype/internal/sfnt.h,
include/freetype/internal/tttypes.h,
include/freetype/internal/services/bdf.h,
include/freetype/internal/services/glyfdict.h,
include/freetype/internal/services/multmast.h,
include/freetype/internal/services/postname.h,
include/freetype/internal/services/sfnt.h,
include/freetype/internal/services/xf86name.h,
src/base/ftbdf.c, src/base/ftmm.c, src/base/ftobjs.c,
src/base/ftxf86.c, src/bdf/bdfdrivr.c, src/cff/cffdrivr.c,
src/cid/cidriver.c, src/pcf/pcfdrivr.c, src/sfnt/sfdriver.c,
src/truetype/ttdriver.c, src/type1/t1driver.c, src/type42/t42drivr.c:
heavy internal modifications to introduce the concept of
"module services". This is the first step towards a massive
simplification of the engine's internals, in order to
get rid of various numbers of hacks.
Note that this changes will break source & binary compatibility
for authors of external font drivers.
Maybe 2.1.6 will be called 2.2.0 after all :-)
2003-09-11 21:51:54 +02:00
|
|
|
|
|
|
|
#ifndef T1_CONFIG_OPTION_NO_MM_SUPPORT
|
|
|
|
static const FT_Service_MultiMastersRec t1_service_multi_masters =
|
2000-01-27 15:02:04 +01:00
|
|
|
{
|
[truetype, snft] Add service methods for `DeltaSetIdxMap` and `VarStore`.
This will be needed for 'COLR' v1 variation support.
* src/truetype/ttgxvar.h (GX_ItemVarData, GX_AxisCoords, GX_VarRegion,
GX_VarItemStore, GX_DeltaSetIdxMap): Move structures to...
* include/freetype/internal/ftmmtypes.h: ... this new file.
* include/freetype/internal/service/svmm.h (MultiMasters): Include
`ftmmtypes.h`.
(FT_Var_Load_Delta_Set_Idx_Map_Func, FT_Var_Load_Item_Var_Store_Func,
FT_Var_Get_Item_Delta_Func, FT_Var_Done_Item_Var_Store_Func,
FT_Var_Done_Delta_Set_Idx_Map_Func): New function typedefs.
(MultiMasters): Add them.
(FT_DEFINE_SERVICE_MULTIMASTERSREC): Updated.
* src/cff/cffdrivr.c (cff_load_item_variation_store,
cff_load_delta_set_index_mapping, cff_get_item_delta,
cff_done_item_variation_store, cff_done_delta_set_index_map): New wrapper
methods calling into mm service.
(cff_service_multi_masters): Updated.
* src/truetype/ttgxvar.c (ft_var_load_item_variation_store,
ft_var_load_delta_set_index_mapping, ft_var_get_item_delta,
ft_var_done_item_variation_store, ft_var_done_delta_set_index_map): Renamed
to ...
(tt_var_load_item_variation_store, tt_var_load_delta_set_index_mapping,
tt_var_get_item_delta, tt_var_done_item_variation_store,
tt_var_done_delta_set_index_map): ... this for consistency.
Mark them as non-static.
* src/truetype/ttgxvar.h: Add corresponding prototypes.
* src/truetype/ttdriver.c (tt_service_gx_multi_masters): Updated.
* src/type1/t1driver.c (t1_service_multi_masters): Updated.
2022-05-19 06:30:47 +02:00
|
|
|
(FT_Get_MM_Func) T1_Get_Multi_Master, /* get_mm */
|
|
|
|
(FT_Set_MM_Design_Func) T1_Set_MM_Design, /* set_mm_design */
|
|
|
|
(FT_Set_MM_Blend_Func) T1_Set_MM_Blend, /* set_mm_blend */
|
|
|
|
(FT_Get_MM_Blend_Func) T1_Get_MM_Blend, /* get_mm_blend */
|
|
|
|
(FT_Get_MM_Var_Func) T1_Get_MM_Var, /* get_mm_var */
|
|
|
|
(FT_Set_Var_Design_Func)T1_Set_Var_Design, /* set_var_design */
|
|
|
|
(FT_Get_Var_Design_Func)T1_Get_Var_Design, /* get_var_design */
|
|
|
|
(FT_Set_Instance_Func) T1_Reset_MM_Blend, /* set_instance */
|
|
|
|
(FT_Set_MM_WeightVector_Func)
|
|
|
|
T1_Set_MM_WeightVector, /* set_mm_weightvector */
|
|
|
|
(FT_Get_MM_WeightVector_Func)
|
|
|
|
T1_Get_MM_WeightVector, /* get_mm_weightvector */
|
|
|
|
(FT_Var_Load_Delta_Set_Idx_Map_Func)
|
|
|
|
NULL, /* load_delta_set_idx_map */
|
|
|
|
(FT_Var_Load_Item_Var_Store_Func)
|
|
|
|
NULL, /* load_item_variation_store */
|
|
|
|
(FT_Var_Get_Item_Delta_Func)
|
|
|
|
NULL, /* get_item_delta */
|
|
|
|
(FT_Var_Done_Item_Var_Store_Func)
|
|
|
|
NULL, /* done_item_variation_store */
|
|
|
|
(FT_Var_Done_Delta_Set_Idx_Map_Func)
|
|
|
|
NULL, /* done_delta_set_index_map */
|
|
|
|
(FT_Get_Var_Blend_Func) NULL, /* get_var_blend */
|
|
|
|
(FT_Done_Blend_Func) T1_Done_Blend /* done_blend */
|
* include/freetype/ftmm.h, include/freetype/ftmodule.h,
include/freetype/tttables.h, include/freetype/config/ftconfig.h,
include/freetype/internal/ftobjs.h,
include/freetype/internal/ftserv.h,
include/freetype/internal/internal.h,
include/freetype/internal/sfnt.h,
include/freetype/internal/tttypes.h,
include/freetype/internal/services/bdf.h,
include/freetype/internal/services/glyfdict.h,
include/freetype/internal/services/multmast.h,
include/freetype/internal/services/postname.h,
include/freetype/internal/services/sfnt.h,
include/freetype/internal/services/xf86name.h,
src/base/ftbdf.c, src/base/ftmm.c, src/base/ftobjs.c,
src/base/ftxf86.c, src/bdf/bdfdrivr.c, src/cff/cffdrivr.c,
src/cid/cidriver.c, src/pcf/pcfdrivr.c, src/sfnt/sfdriver.c,
src/truetype/ttdriver.c, src/type1/t1driver.c, src/type42/t42drivr.c:
heavy internal modifications to introduce the concept of
"module services". This is the first step towards a massive
simplification of the engine's internals, in order to
get rid of various numbers of hacks.
Note that this changes will break source & binary compatibility
for authors of external font drivers.
Maybe 2.1.6 will be called 2.2.0 after all :-)
2003-09-11 21:51:54 +02:00
|
|
|
};
|
|
|
|
#endif
|
2000-07-09 21:15:30 +02:00
|
|
|
|
2001-08-09 03:06:33 +02:00
|
|
|
|
2009-03-03 22:35:32 +01:00
|
|
|
/*
|
2018-06-03 09:01:17 +02:00
|
|
|
* POSTSCRIPT INFO SERVICE
|
2009-03-03 22:35:32 +01:00
|
|
|
*
|
|
|
|
*/
|
* include/freetype/internal/bdftypes.h: removed obsolete header
* include/freetype/internal/cfftypes.h, src/cff/cfftypes.h,
src/cff/cffload.h, src/cff/cffobjs.h, src/cff/cffparse.h,
include/freetype/internal/services/svbdf.h: moving "cfftypes.h" from
'include/freetype/internal' to 'src/cff' since no other modules needs
to known about these types
* include/freetype/internal/t42types.h,
include/freetype/internal/internal.h, src/type42/t42objs.h,
src/type42/t42drivr.c, src/type42/t42types.h: moving "t42types.h" from
'include/freetype/internal' to 'src/type42' since no other modules needs
to known about these types
* src/gzip/infblock.c: removing compiler warning
* include/freetype/internal/services/svpsinfo.h,
include/freetype/internal/ftserv.h, src/cff/cffdrivr.c,
src/cid/ciddrivr.c, src/type1/t1driver.c, src/type42/t42drivr.c,
src/base/fttype1.c: migrating to FT_SERVICE_ID_POSTSCRIPT_INFO defined
in "svpsinfo.h", removing some sad hacks.
2003-10-29 22:43:52 +01:00
|
|
|
|
|
|
|
static FT_Error
|
|
|
|
t1_ps_get_font_info( FT_Face face,
|
|
|
|
PS_FontInfoRec* afont_info )
|
|
|
|
{
|
|
|
|
*afont_info = ((T1_Face)face)->type1.font_info;
|
2009-03-03 22:35:32 +01:00
|
|
|
|
2013-03-14 11:21:17 +01:00
|
|
|
return FT_Err_Ok;
|
* include/freetype/internal/bdftypes.h: removed obsolete header
* include/freetype/internal/cfftypes.h, src/cff/cfftypes.h,
src/cff/cffload.h, src/cff/cffobjs.h, src/cff/cffparse.h,
include/freetype/internal/services/svbdf.h: moving "cfftypes.h" from
'include/freetype/internal' to 'src/cff' since no other modules needs
to known about these types
* include/freetype/internal/t42types.h,
include/freetype/internal/internal.h, src/type42/t42objs.h,
src/type42/t42drivr.c, src/type42/t42types.h: moving "t42types.h" from
'include/freetype/internal' to 'src/type42' since no other modules needs
to known about these types
* src/gzip/infblock.c: removing compiler warning
* include/freetype/internal/services/svpsinfo.h,
include/freetype/internal/ftserv.h, src/cff/cffdrivr.c,
src/cid/ciddrivr.c, src/type1/t1driver.c, src/type42/t42drivr.c,
src/base/fttype1.c: migrating to FT_SERVICE_ID_POSTSCRIPT_INFO defined
in "svpsinfo.h", removing some sad hacks.
2003-10-29 22:43:52 +01:00
|
|
|
}
|
|
|
|
|
2009-03-03 22:35:32 +01:00
|
|
|
|
2009-03-03 14:28:59 +01:00
|
|
|
static FT_Error
|
|
|
|
t1_ps_get_font_extra( FT_Face face,
|
|
|
|
PS_FontExtraRec* afont_extra )
|
|
|
|
{
|
|
|
|
*afont_extra = ((T1_Face)face)->type1.font_extra;
|
2009-03-03 22:35:32 +01:00
|
|
|
|
2013-03-14 11:21:17 +01:00
|
|
|
return FT_Err_Ok;
|
2009-03-03 14:28:59 +01:00
|
|
|
}
|
2003-11-01 15:36:20 +01:00
|
|
|
|
2009-03-03 22:35:32 +01:00
|
|
|
|
* include/freetype/internal/bdftypes.h: removed obsolete header
* include/freetype/internal/cfftypes.h, src/cff/cfftypes.h,
src/cff/cffload.h, src/cff/cffobjs.h, src/cff/cffparse.h,
include/freetype/internal/services/svbdf.h: moving "cfftypes.h" from
'include/freetype/internal' to 'src/cff' since no other modules needs
to known about these types
* include/freetype/internal/t42types.h,
include/freetype/internal/internal.h, src/type42/t42objs.h,
src/type42/t42drivr.c, src/type42/t42types.h: moving "t42types.h" from
'include/freetype/internal' to 'src/type42' since no other modules needs
to known about these types
* src/gzip/infblock.c: removing compiler warning
* include/freetype/internal/services/svpsinfo.h,
include/freetype/internal/ftserv.h, src/cff/cffdrivr.c,
src/cid/ciddrivr.c, src/type1/t1driver.c, src/type42/t42drivr.c,
src/base/fttype1.c: migrating to FT_SERVICE_ID_POSTSCRIPT_INFO defined
in "svpsinfo.h", removing some sad hacks.
2003-10-29 22:43:52 +01:00
|
|
|
static FT_Int
|
|
|
|
t1_ps_has_glyph_names( FT_Face face )
|
|
|
|
{
|
|
|
|
FT_UNUSED( face );
|
2009-03-03 22:35:32 +01:00
|
|
|
|
* include/freetype/internal/bdftypes.h: removed obsolete header
* include/freetype/internal/cfftypes.h, src/cff/cfftypes.h,
src/cff/cffload.h, src/cff/cffobjs.h, src/cff/cffparse.h,
include/freetype/internal/services/svbdf.h: moving "cfftypes.h" from
'include/freetype/internal' to 'src/cff' since no other modules needs
to known about these types
* include/freetype/internal/t42types.h,
include/freetype/internal/internal.h, src/type42/t42objs.h,
src/type42/t42drivr.c, src/type42/t42types.h: moving "t42types.h" from
'include/freetype/internal' to 'src/type42' since no other modules needs
to known about these types
* src/gzip/infblock.c: removing compiler warning
* include/freetype/internal/services/svpsinfo.h,
include/freetype/internal/ftserv.h, src/cff/cffdrivr.c,
src/cid/ciddrivr.c, src/type1/t1driver.c, src/type42/t42drivr.c,
src/base/fttype1.c: migrating to FT_SERVICE_ID_POSTSCRIPT_INFO defined
in "svpsinfo.h", removing some sad hacks.
2003-10-29 22:43:52 +01:00
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
2003-11-01 15:36:20 +01:00
|
|
|
|
2004-11-12 08:02:45 +01:00
|
|
|
static FT_Error
|
|
|
|
t1_ps_get_font_private( FT_Face face,
|
|
|
|
PS_PrivateRec* afont_private )
|
|
|
|
{
|
|
|
|
*afont_private = ((T1_Face)face)->type1.private_dict;
|
2009-03-03 22:35:32 +01:00
|
|
|
|
2013-03-14 11:21:17 +01:00
|
|
|
return FT_Err_Ok;
|
2004-11-12 08:02:45 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2011-11-13 16:30:59 +01:00
|
|
|
static FT_Long
|
|
|
|
t1_ps_get_font_value( FT_Face face,
|
|
|
|
PS_Dict_Keys key,
|
|
|
|
FT_UInt idx,
|
|
|
|
void *value,
|
2015-02-18 08:51:22 +01:00
|
|
|
FT_Long value_len_ )
|
2011-11-13 16:30:59 +01:00
|
|
|
{
|
2015-02-18 08:51:22 +01:00
|
|
|
FT_ULong retval = 0; /* always >= 1 if valid */
|
|
|
|
FT_ULong value_len = value_len_ < 0 ? 0 : (FT_ULong)value_len_;
|
|
|
|
|
2011-11-13 16:30:59 +01:00
|
|
|
T1_Face t1face = (T1_Face)face;
|
|
|
|
T1_Font type1 = &t1face->type1;
|
|
|
|
|
|
|
|
|
|
|
|
switch ( key )
|
|
|
|
{
|
|
|
|
case PS_DICT_FONT_TYPE:
|
|
|
|
retval = sizeof ( type1->font_type );
|
|
|
|
if ( value && value_len >= retval )
|
|
|
|
*((FT_Byte *)value) = type1->font_type;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case PS_DICT_FONT_MATRIX:
|
|
|
|
if ( idx < sizeof ( type1->font_matrix ) /
|
|
|
|
sizeof ( type1->font_matrix.xx ) )
|
|
|
|
{
|
2011-12-10 23:16:04 +01:00
|
|
|
FT_Fixed val = 0;
|
2011-11-13 16:30:59 +01:00
|
|
|
|
|
|
|
|
|
|
|
retval = sizeof ( val );
|
|
|
|
if ( value && value_len >= retval )
|
|
|
|
{
|
|
|
|
switch ( idx )
|
|
|
|
{
|
|
|
|
case 0:
|
|
|
|
val = type1->font_matrix.xx;
|
|
|
|
break;
|
|
|
|
case 1:
|
|
|
|
val = type1->font_matrix.xy;
|
|
|
|
break;
|
|
|
|
case 2:
|
|
|
|
val = type1->font_matrix.yx;
|
|
|
|
break;
|
|
|
|
case 3:
|
|
|
|
val = type1->font_matrix.yy;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
*((FT_Fixed *)value) = val;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
case PS_DICT_FONT_BBOX:
|
|
|
|
if ( idx < sizeof ( type1->font_bbox ) /
|
|
|
|
sizeof ( type1->font_bbox.xMin ) )
|
|
|
|
{
|
2015-02-18 08:51:22 +01:00
|
|
|
FT_Fixed val = 0;
|
2011-11-13 16:30:59 +01:00
|
|
|
|
|
|
|
|
|
|
|
retval = sizeof ( val );
|
|
|
|
if ( value && value_len >= retval )
|
|
|
|
{
|
|
|
|
switch ( idx )
|
|
|
|
{
|
|
|
|
case 0:
|
|
|
|
val = type1->font_bbox.xMin;
|
|
|
|
break;
|
|
|
|
case 1:
|
|
|
|
val = type1->font_bbox.yMin;
|
|
|
|
break;
|
|
|
|
case 2:
|
|
|
|
val = type1->font_bbox.xMax;
|
|
|
|
break;
|
|
|
|
case 3:
|
|
|
|
val = type1->font_bbox.yMax;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
*((FT_Fixed *)value) = val;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
case PS_DICT_PAINT_TYPE:
|
|
|
|
retval = sizeof ( type1->paint_type );
|
|
|
|
if ( value && value_len >= retval )
|
|
|
|
*((FT_Byte *)value) = type1->paint_type;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case PS_DICT_FONT_NAME:
|
2018-07-28 22:23:16 +02:00
|
|
|
if ( type1->font_name )
|
|
|
|
{
|
|
|
|
retval = ft_strlen( type1->font_name ) + 1;
|
|
|
|
if ( value && value_len >= retval )
|
|
|
|
ft_memcpy( value, (void *)( type1->font_name ), retval );
|
|
|
|
}
|
2011-11-13 16:30:59 +01:00
|
|
|
break;
|
|
|
|
|
|
|
|
case PS_DICT_UNIQUE_ID:
|
|
|
|
retval = sizeof ( type1->private_dict.unique_id );
|
|
|
|
if ( value && value_len >= retval )
|
|
|
|
*((FT_Int *)value) = type1->private_dict.unique_id;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case PS_DICT_NUM_CHAR_STRINGS:
|
|
|
|
retval = sizeof ( type1->num_glyphs );
|
|
|
|
if ( value && value_len >= retval )
|
|
|
|
*((FT_Int *)value) = type1->num_glyphs;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case PS_DICT_CHAR_STRING_KEY:
|
|
|
|
if ( idx < (FT_UInt)type1->num_glyphs )
|
|
|
|
{
|
2015-02-18 08:51:22 +01:00
|
|
|
retval = ft_strlen( type1->glyph_names[idx] ) + 1;
|
2011-11-13 16:30:59 +01:00
|
|
|
if ( value && value_len >= retval )
|
|
|
|
{
|
|
|
|
ft_memcpy( value, (void *)( type1->glyph_names[idx] ), retval );
|
|
|
|
((FT_Char *)value)[retval - 1] = (FT_Char)'\0';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
case PS_DICT_CHAR_STRING:
|
|
|
|
if ( idx < (FT_UInt)type1->num_glyphs )
|
|
|
|
{
|
2015-02-18 08:51:22 +01:00
|
|
|
retval = type1->charstrings_len[idx] + 1;
|
2011-11-13 16:30:59 +01:00
|
|
|
if ( value && value_len >= retval )
|
|
|
|
{
|
|
|
|
ft_memcpy( value, (void *)( type1->charstrings[idx] ),
|
|
|
|
retval - 1 );
|
|
|
|
((FT_Char *)value)[retval - 1] = (FT_Char)'\0';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
case PS_DICT_ENCODING_TYPE:
|
|
|
|
retval = sizeof ( type1->encoding_type );
|
|
|
|
if ( value && value_len >= retval )
|
|
|
|
*((T1_EncodingType *)value) = type1->encoding_type;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case PS_DICT_ENCODING_ENTRY:
|
|
|
|
if ( type1->encoding_type == T1_ENCODING_TYPE_ARRAY &&
|
|
|
|
idx < (FT_UInt)type1->encoding.num_chars )
|
|
|
|
{
|
2015-02-18 08:51:22 +01:00
|
|
|
retval = ft_strlen( type1->encoding.char_name[idx] ) + 1;
|
2011-11-13 16:30:59 +01:00
|
|
|
if ( value && value_len >= retval )
|
|
|
|
{
|
|
|
|
ft_memcpy( value, (void *)( type1->encoding.char_name[idx] ),
|
|
|
|
retval - 1 );
|
|
|
|
((FT_Char *)value)[retval - 1] = (FT_Char)'\0';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
case PS_DICT_NUM_SUBRS:
|
|
|
|
retval = sizeof ( type1->num_subrs );
|
|
|
|
if ( value && value_len >= retval )
|
|
|
|
*((FT_Int *)value) = type1->num_subrs;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case PS_DICT_SUBR:
|
|
|
|
{
|
2015-12-20 19:36:04 +01:00
|
|
|
FT_Bool ok = 0;
|
|
|
|
|
|
|
|
|
|
|
|
if ( type1->subrs_hash )
|
2011-11-13 16:30:59 +01:00
|
|
|
{
|
2015-12-20 19:36:04 +01:00
|
|
|
/* convert subr index to array index */
|
2016-01-19 19:15:54 +01:00
|
|
|
size_t* val = ft_hash_num_lookup( (FT_Int)idx,
|
|
|
|
type1->subrs_hash );
|
2015-12-20 19:36:04 +01:00
|
|
|
|
|
|
|
|
|
|
|
if ( val )
|
|
|
|
{
|
|
|
|
idx = *val;
|
|
|
|
ok = 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
if ( idx < (FT_UInt)type1->num_subrs )
|
|
|
|
ok = 1;
|
|
|
|
}
|
|
|
|
|
2018-07-28 22:23:16 +02:00
|
|
|
if ( ok && type1->subrs )
|
2015-12-20 19:36:04 +01:00
|
|
|
{
|
|
|
|
retval = type1->subrs_len[idx] + 1;
|
|
|
|
if ( value && value_len >= retval )
|
|
|
|
{
|
|
|
|
ft_memcpy( value, (void *)( type1->subrs[idx] ), retval - 1 );
|
|
|
|
((FT_Char *)value)[retval - 1] = (FT_Char)'\0';
|
|
|
|
}
|
2011-11-13 16:30:59 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
case PS_DICT_STD_HW:
|
|
|
|
retval = sizeof ( type1->private_dict.standard_width[0] );
|
|
|
|
if ( value && value_len >= retval )
|
|
|
|
*((FT_UShort *)value) = type1->private_dict.standard_width[0];
|
|
|
|
break;
|
|
|
|
|
|
|
|
case PS_DICT_STD_VW:
|
|
|
|
retval = sizeof ( type1->private_dict.standard_height[0] );
|
|
|
|
if ( value && value_len >= retval )
|
|
|
|
*((FT_UShort *)value) = type1->private_dict.standard_height[0];
|
|
|
|
break;
|
|
|
|
|
|
|
|
case PS_DICT_NUM_BLUE_VALUES:
|
|
|
|
retval = sizeof ( type1->private_dict.num_blue_values );
|
|
|
|
if ( value && value_len >= retval )
|
|
|
|
*((FT_Byte *)value) = type1->private_dict.num_blue_values;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case PS_DICT_BLUE_VALUE:
|
|
|
|
if ( idx < type1->private_dict.num_blue_values )
|
|
|
|
{
|
|
|
|
retval = sizeof ( type1->private_dict.blue_values[idx] );
|
|
|
|
if ( value && value_len >= retval )
|
|
|
|
*((FT_Short *)value) = type1->private_dict.blue_values[idx];
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
case PS_DICT_BLUE_SCALE:
|
|
|
|
retval = sizeof ( type1->private_dict.blue_scale );
|
|
|
|
if ( value && value_len >= retval )
|
|
|
|
*((FT_Fixed *)value) = type1->private_dict.blue_scale;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case PS_DICT_BLUE_FUZZ:
|
|
|
|
retval = sizeof ( type1->private_dict.blue_fuzz );
|
|
|
|
if ( value && value_len >= retval )
|
|
|
|
*((FT_Int *)value) = type1->private_dict.blue_fuzz;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case PS_DICT_BLUE_SHIFT:
|
|
|
|
retval = sizeof ( type1->private_dict.blue_shift );
|
|
|
|
if ( value && value_len >= retval )
|
|
|
|
*((FT_Int *)value) = type1->private_dict.blue_shift;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case PS_DICT_NUM_OTHER_BLUES:
|
|
|
|
retval = sizeof ( type1->private_dict.num_other_blues );
|
|
|
|
if ( value && value_len >= retval )
|
|
|
|
*((FT_Byte *)value) = type1->private_dict.num_other_blues;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case PS_DICT_OTHER_BLUE:
|
|
|
|
if ( idx < type1->private_dict.num_other_blues )
|
|
|
|
{
|
|
|
|
retval = sizeof ( type1->private_dict.other_blues[idx] );
|
|
|
|
if ( value && value_len >= retval )
|
|
|
|
*((FT_Short *)value) = type1->private_dict.other_blues[idx];
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
case PS_DICT_NUM_FAMILY_BLUES:
|
|
|
|
retval = sizeof ( type1->private_dict.num_family_blues );
|
|
|
|
if ( value && value_len >= retval )
|
|
|
|
*((FT_Byte *)value) = type1->private_dict.num_family_blues;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case PS_DICT_FAMILY_BLUE:
|
|
|
|
if ( idx < type1->private_dict.num_family_blues )
|
|
|
|
{
|
|
|
|
retval = sizeof ( type1->private_dict.family_blues[idx] );
|
|
|
|
if ( value && value_len >= retval )
|
|
|
|
*((FT_Short *)value) = type1->private_dict.family_blues[idx];
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
case PS_DICT_NUM_FAMILY_OTHER_BLUES:
|
|
|
|
retval = sizeof ( type1->private_dict.num_family_other_blues );
|
|
|
|
if ( value && value_len >= retval )
|
|
|
|
*((FT_Byte *)value) = type1->private_dict.num_family_other_blues;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case PS_DICT_FAMILY_OTHER_BLUE:
|
|
|
|
if ( idx < type1->private_dict.num_family_other_blues )
|
|
|
|
{
|
|
|
|
retval = sizeof ( type1->private_dict.family_other_blues[idx] );
|
|
|
|
if ( value && value_len >= retval )
|
|
|
|
*((FT_Short *)value) = type1->private_dict.family_other_blues[idx];
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
case PS_DICT_NUM_STEM_SNAP_H:
|
|
|
|
retval = sizeof ( type1->private_dict.num_snap_widths );
|
|
|
|
if ( value && value_len >= retval )
|
|
|
|
*((FT_Byte *)value) = type1->private_dict.num_snap_widths;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case PS_DICT_STEM_SNAP_H:
|
|
|
|
if ( idx < type1->private_dict.num_snap_widths )
|
|
|
|
{
|
|
|
|
retval = sizeof ( type1->private_dict.snap_widths[idx] );
|
|
|
|
if ( value && value_len >= retval )
|
|
|
|
*((FT_Short *)value) = type1->private_dict.snap_widths[idx];
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
case PS_DICT_NUM_STEM_SNAP_V:
|
|
|
|
retval = sizeof ( type1->private_dict.num_snap_heights );
|
|
|
|
if ( value && value_len >= retval )
|
|
|
|
*((FT_Byte *)value) = type1->private_dict.num_snap_heights;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case PS_DICT_STEM_SNAP_V:
|
|
|
|
if ( idx < type1->private_dict.num_snap_heights )
|
|
|
|
{
|
|
|
|
retval = sizeof ( type1->private_dict.snap_heights[idx] );
|
|
|
|
if ( value && value_len >= retval )
|
|
|
|
*((FT_Short *)value) = type1->private_dict.snap_heights[idx];
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
case PS_DICT_RND_STEM_UP:
|
|
|
|
retval = sizeof ( type1->private_dict.round_stem_up );
|
|
|
|
if ( value && value_len >= retval )
|
|
|
|
*((FT_Bool *)value) = type1->private_dict.round_stem_up;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case PS_DICT_FORCE_BOLD:
|
|
|
|
retval = sizeof ( type1->private_dict.force_bold );
|
|
|
|
if ( value && value_len >= retval )
|
|
|
|
*((FT_Bool *)value) = type1->private_dict.force_bold;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case PS_DICT_MIN_FEATURE:
|
|
|
|
if ( idx < sizeof ( type1->private_dict.min_feature ) /
|
|
|
|
sizeof ( type1->private_dict.min_feature[0] ) )
|
|
|
|
{
|
|
|
|
retval = sizeof ( type1->private_dict.min_feature[idx] );
|
|
|
|
if ( value && value_len >= retval )
|
|
|
|
*((FT_Short *)value) = type1->private_dict.min_feature[idx];
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
case PS_DICT_LEN_IV:
|
|
|
|
retval = sizeof ( type1->private_dict.lenIV );
|
|
|
|
if ( value && value_len >= retval )
|
|
|
|
*((FT_Int *)value) = type1->private_dict.lenIV;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case PS_DICT_PASSWORD:
|
|
|
|
retval = sizeof ( type1->private_dict.password );
|
|
|
|
if ( value && value_len >= retval )
|
|
|
|
*((FT_Long *)value) = type1->private_dict.password;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case PS_DICT_LANGUAGE_GROUP:
|
|
|
|
retval = sizeof ( type1->private_dict.language_group );
|
|
|
|
if ( value && value_len >= retval )
|
|
|
|
*((FT_Long *)value) = type1->private_dict.language_group;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case PS_DICT_IS_FIXED_PITCH:
|
|
|
|
retval = sizeof ( type1->font_info.is_fixed_pitch );
|
|
|
|
if ( value && value_len >= retval )
|
|
|
|
*((FT_Bool *)value) = type1->font_info.is_fixed_pitch;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case PS_DICT_UNDERLINE_POSITION:
|
|
|
|
retval = sizeof ( type1->font_info.underline_position );
|
|
|
|
if ( value && value_len >= retval )
|
|
|
|
*((FT_Short *)value) = type1->font_info.underline_position;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case PS_DICT_UNDERLINE_THICKNESS:
|
|
|
|
retval = sizeof ( type1->font_info.underline_thickness );
|
|
|
|
if ( value && value_len >= retval )
|
|
|
|
*((FT_UShort *)value) = type1->font_info.underline_thickness;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case PS_DICT_FS_TYPE:
|
|
|
|
retval = sizeof ( type1->font_extra.fs_type );
|
|
|
|
if ( value && value_len >= retval )
|
|
|
|
*((FT_UShort *)value) = type1->font_extra.fs_type;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case PS_DICT_VERSION:
|
2018-07-28 22:23:16 +02:00
|
|
|
if ( type1->font_info.version )
|
|
|
|
{
|
|
|
|
retval = ft_strlen( type1->font_info.version ) + 1;
|
|
|
|
if ( value && value_len >= retval )
|
|
|
|
ft_memcpy( value, (void *)( type1->font_info.version ), retval );
|
|
|
|
}
|
2011-11-13 16:30:59 +01:00
|
|
|
break;
|
|
|
|
|
|
|
|
case PS_DICT_NOTICE:
|
2018-07-28 22:23:16 +02:00
|
|
|
if ( type1->font_info.notice )
|
|
|
|
{
|
|
|
|
retval = ft_strlen( type1->font_info.notice ) + 1;
|
|
|
|
if ( value && value_len >= retval )
|
|
|
|
ft_memcpy( value, (void *)( type1->font_info.notice ), retval );
|
|
|
|
}
|
2011-11-13 16:30:59 +01:00
|
|
|
break;
|
|
|
|
|
|
|
|
case PS_DICT_FULL_NAME:
|
2018-07-28 22:23:16 +02:00
|
|
|
if ( type1->font_info.full_name )
|
|
|
|
{
|
|
|
|
retval = ft_strlen( type1->font_info.full_name ) + 1;
|
|
|
|
if ( value && value_len >= retval )
|
|
|
|
ft_memcpy( value, (void *)( type1->font_info.full_name ), retval );
|
|
|
|
}
|
2011-11-13 16:30:59 +01:00
|
|
|
break;
|
|
|
|
|
|
|
|
case PS_DICT_FAMILY_NAME:
|
2018-07-28 22:23:16 +02:00
|
|
|
if ( type1->font_info.family_name )
|
|
|
|
{
|
|
|
|
retval = ft_strlen( type1->font_info.family_name ) + 1;
|
|
|
|
if ( value && value_len >= retval )
|
|
|
|
ft_memcpy( value, (void *)( type1->font_info.family_name ),
|
|
|
|
retval );
|
|
|
|
}
|
2011-11-13 16:30:59 +01:00
|
|
|
break;
|
|
|
|
|
|
|
|
case PS_DICT_WEIGHT:
|
2018-07-28 22:23:16 +02:00
|
|
|
if ( type1->font_info.weight )
|
|
|
|
{
|
|
|
|
retval = ft_strlen( type1->font_info.weight ) + 1;
|
|
|
|
if ( value && value_len >= retval )
|
|
|
|
ft_memcpy( value, (void *)( type1->font_info.weight ), retval );
|
|
|
|
}
|
2011-11-13 16:30:59 +01:00
|
|
|
break;
|
|
|
|
|
|
|
|
case PS_DICT_ITALIC_ANGLE:
|
|
|
|
retval = sizeof ( type1->font_info.italic_angle );
|
|
|
|
if ( value && value_len >= retval )
|
|
|
|
*((FT_Long *)value) = type1->font_info.italic_angle;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
2015-02-18 08:51:22 +01:00
|
|
|
return retval == 0 ? -1 : (FT_Long)retval;
|
2011-11-13 16:30:59 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
* include/freetype/internal/bdftypes.h: removed obsolete header
* include/freetype/internal/cfftypes.h, src/cff/cfftypes.h,
src/cff/cffload.h, src/cff/cffobjs.h, src/cff/cffparse.h,
include/freetype/internal/services/svbdf.h: moving "cfftypes.h" from
'include/freetype/internal' to 'src/cff' since no other modules needs
to known about these types
* include/freetype/internal/t42types.h,
include/freetype/internal/internal.h, src/type42/t42objs.h,
src/type42/t42drivr.c, src/type42/t42types.h: moving "t42types.h" from
'include/freetype/internal' to 'src/type42' since no other modules needs
to known about these types
* src/gzip/infblock.c: removing compiler warning
* include/freetype/internal/services/svpsinfo.h,
include/freetype/internal/ftserv.h, src/cff/cffdrivr.c,
src/cid/ciddrivr.c, src/type1/t1driver.c, src/type42/t42drivr.c,
src/base/fttype1.c: migrating to FT_SERVICE_ID_POSTSCRIPT_INFO defined
in "svpsinfo.h", removing some sad hacks.
2003-10-29 22:43:52 +01:00
|
|
|
static const FT_Service_PsInfoRec t1_service_ps_info =
|
|
|
|
{
|
2015-10-30 08:07:56 +01:00
|
|
|
(PS_GetFontInfoFunc) t1_ps_get_font_info, /* ps_get_font_info */
|
|
|
|
(PS_GetFontExtraFunc) t1_ps_get_font_extra, /* ps_get_font_extra */
|
|
|
|
(PS_HasGlyphNamesFunc) t1_ps_has_glyph_names, /* ps_has_glyph_names */
|
|
|
|
(PS_GetFontPrivateFunc)t1_ps_get_font_private, /* ps_get_font_private */
|
|
|
|
(PS_GetFontValueFunc) t1_ps_get_font_value, /* ps_get_font_value */
|
* include/freetype/internal/bdftypes.h: removed obsolete header
* include/freetype/internal/cfftypes.h, src/cff/cfftypes.h,
src/cff/cffload.h, src/cff/cffobjs.h, src/cff/cffparse.h,
include/freetype/internal/services/svbdf.h: moving "cfftypes.h" from
'include/freetype/internal' to 'src/cff' since no other modules needs
to known about these types
* include/freetype/internal/t42types.h,
include/freetype/internal/internal.h, src/type42/t42objs.h,
src/type42/t42drivr.c, src/type42/t42types.h: moving "t42types.h" from
'include/freetype/internal' to 'src/type42' since no other modules needs
to known about these types
* src/gzip/infblock.c: removing compiler warning
* include/freetype/internal/services/svpsinfo.h,
include/freetype/internal/ftserv.h, src/cff/cffdrivr.c,
src/cid/ciddrivr.c, src/type1/t1driver.c, src/type42/t42drivr.c,
src/base/fttype1.c: migrating to FT_SERVICE_ID_POSTSCRIPT_INFO defined
in "svpsinfo.h", removing some sad hacks.
2003-10-29 22:43:52 +01:00
|
|
|
};
|
|
|
|
|
2009-03-03 22:35:32 +01:00
|
|
|
|
2006-01-23 11:46:38 +01:00
|
|
|
#ifndef T1_CONFIG_OPTION_NO_AFM
|
* src/psaux/afmparse.c, src/psaux/afmparse.h: New files which
implement an AFM parser. It is used to parse an AFM file.
* src/psaux/psconv.c, src/psaux/psconv.h: New files to provide
conversion functions (e.g, PS real number => FT_Fixed) for the
PS_Parser and AFM_Parser. Some of the functions are taken, with some
modifications, from the psobjs.c
* src/psaux/psobjs.c: Use functions from psconv.c.
* include/freetype/internal/psaux.h, src/psaux/psauxmod.c:: Add
`AFM_Parser' to the `psaux' service.
* src/psaux/psaux.c, src/psaux/rules.mk: Include those new files.
* src/tools/test_afm.c: A test program for AFM parser.
* include/freetype/internal/services/svkern.h,
include/freetype/internal/ftserv.h: New service `Kerning'. It is
currently only used to get the track kerning information.
* src/type1/t1driver.c, src/type1/t1objs.c, src/type1/t1afm.c,
src/type1/t1afm.h: Update to use the AFM parser.
Provide the `Kerning' service.
* include/freetype/freetype.h, src/base/ftobjs.c: New API
`FT_Get_Track_Kerning'.
2006-01-16 16:35:56 +01:00
|
|
|
static const FT_Service_KerningRec t1_service_kerning =
|
|
|
|
{
|
2015-10-30 08:07:56 +01:00
|
|
|
T1_Get_Track_Kerning, /* get_track */
|
* src/psaux/afmparse.c, src/psaux/afmparse.h: New files which
implement an AFM parser. It is used to parse an AFM file.
* src/psaux/psconv.c, src/psaux/psconv.h: New files to provide
conversion functions (e.g, PS real number => FT_Fixed) for the
PS_Parser and AFM_Parser. Some of the functions are taken, with some
modifications, from the psobjs.c
* src/psaux/psobjs.c: Use functions from psconv.c.
* include/freetype/internal/psaux.h, src/psaux/psauxmod.c:: Add
`AFM_Parser' to the `psaux' service.
* src/psaux/psaux.c, src/psaux/rules.mk: Include those new files.
* src/tools/test_afm.c: A test program for AFM parser.
* include/freetype/internal/services/svkern.h,
include/freetype/internal/ftserv.h: New service `Kerning'. It is
currently only used to get the track kerning information.
* src/type1/t1driver.c, src/type1/t1objs.c, src/type1/t1afm.c,
src/type1/t1afm.h: Update to use the AFM parser.
Provide the `Kerning' service.
* include/freetype/freetype.h, src/base/ftobjs.c: New API
`FT_Get_Track_Kerning'.
2006-01-16 16:35:56 +01:00
|
|
|
};
|
2006-01-23 11:46:38 +01:00
|
|
|
#endif
|
2003-11-01 15:36:20 +01:00
|
|
|
|
2009-03-03 22:35:32 +01:00
|
|
|
|
2017-10-12 12:13:22 +02:00
|
|
|
/*
|
2018-06-03 09:01:17 +02:00
|
|
|
* PROPERTY SERVICE
|
2017-10-12 12:13:22 +02:00
|
|
|
*
|
|
|
|
*/
|
2017-12-27 08:06:47 +01:00
|
|
|
|
2017-10-12 12:13:22 +02:00
|
|
|
FT_DEFINE_SERVICE_PROPERTIESREC(
|
|
|
|
t1_service_properties,
|
|
|
|
|
Move PostScript drivers' property handlers to `base'
This reduces the amount of duplicated code across PostScript drivers.
* src/cff/cffdrivr.c, src/cid/cidriver.c, src/type1/t1driver.c
({cff,cid,t1}_property_{get,set}): Moved to...
* include/freetype/internal/ftpsprop.h: ...this new file.
(ps_property_{get,set}): New functions to replace moved ones.
* src/base/ftpsprop.c: Implement above functions.
* include/freetype/internal/internal.h (FT_INTERNAL_POSTSCRIPT_PROPS_H):
New macro.
* src/cff/cffdrivr.c, src/cid/cidriver.c, src/type1/t1driver.c: Updated.
* src/base/Jamfile, src/base/rules.mk, src/base/ftbase.c: Updated.
2017-12-25 05:34:37 +01:00
|
|
|
(FT_Properties_SetFunc)ps_property_set, /* set_property */
|
|
|
|
(FT_Properties_GetFunc)ps_property_get ) /* get_property */
|
2017-10-12 12:13:22 +02:00
|
|
|
|
|
|
|
|
2009-03-03 22:35:32 +01:00
|
|
|
/*
|
2018-06-03 09:01:17 +02:00
|
|
|
* SERVICE LIST
|
2009-03-03 22:35:32 +01:00
|
|
|
*
|
|
|
|
*/
|
2000-07-19 19:13:03 +02:00
|
|
|
|
* include/freetype/ftmm.h, include/freetype/ftmodule.h,
include/freetype/tttables.h, include/freetype/config/ftconfig.h,
include/freetype/internal/ftobjs.h,
include/freetype/internal/ftserv.h,
include/freetype/internal/internal.h,
include/freetype/internal/sfnt.h,
include/freetype/internal/tttypes.h,
include/freetype/internal/services/bdf.h,
include/freetype/internal/services/glyfdict.h,
include/freetype/internal/services/multmast.h,
include/freetype/internal/services/postname.h,
include/freetype/internal/services/sfnt.h,
include/freetype/internal/services/xf86name.h,
src/base/ftbdf.c, src/base/ftmm.c, src/base/ftobjs.c,
src/base/ftxf86.c, src/bdf/bdfdrivr.c, src/cff/cffdrivr.c,
src/cid/cidriver.c, src/pcf/pcfdrivr.c, src/sfnt/sfdriver.c,
src/truetype/ttdriver.c, src/type1/t1driver.c, src/type42/t42drivr.c:
heavy internal modifications to introduce the concept of
"module services". This is the first step towards a massive
simplification of the engine's internals, in order to
get rid of various numbers of hacks.
Note that this changes will break source & binary compatibility
for authors of external font drivers.
Maybe 2.1.6 will be called 2.2.0 after all :-)
2003-09-11 21:51:54 +02:00
|
|
|
static const FT_ServiceDescRec t1_services[] =
|
|
|
|
{
|
2003-09-29 22:33:37 +02:00
|
|
|
{ FT_SERVICE_ID_POSTSCRIPT_FONT_NAME, &t1_service_ps_name },
|
2003-10-23 06:54:14 +02:00
|
|
|
{ FT_SERVICE_ID_GLYPH_DICT, &t1_service_glyph_dict },
|
2015-03-11 08:09:13 +01:00
|
|
|
{ FT_SERVICE_ID_FONT_FORMAT, FT_FONT_FORMAT_TYPE_1 },
|
* include/freetype/internal/bdftypes.h: removed obsolete header
* include/freetype/internal/cfftypes.h, src/cff/cfftypes.h,
src/cff/cffload.h, src/cff/cffobjs.h, src/cff/cffparse.h,
include/freetype/internal/services/svbdf.h: moving "cfftypes.h" from
'include/freetype/internal' to 'src/cff' since no other modules needs
to known about these types
* include/freetype/internal/t42types.h,
include/freetype/internal/internal.h, src/type42/t42objs.h,
src/type42/t42drivr.c, src/type42/t42types.h: moving "t42types.h" from
'include/freetype/internal' to 'src/type42' since no other modules needs
to known about these types
* src/gzip/infblock.c: removing compiler warning
* include/freetype/internal/services/svpsinfo.h,
include/freetype/internal/ftserv.h, src/cff/cffdrivr.c,
src/cid/ciddrivr.c, src/type1/t1driver.c, src/type42/t42drivr.c,
src/base/fttype1.c: migrating to FT_SERVICE_ID_POSTSCRIPT_INFO defined
in "svpsinfo.h", removing some sad hacks.
2003-10-29 22:43:52 +01:00
|
|
|
{ FT_SERVICE_ID_POSTSCRIPT_INFO, &t1_service_ps_info },
|
2017-10-12 12:13:22 +02:00
|
|
|
{ FT_SERVICE_ID_PROPERTIES, &t1_service_properties },
|
2006-01-23 11:46:38 +01:00
|
|
|
|
|
|
|
#ifndef T1_CONFIG_OPTION_NO_AFM
|
* src/psaux/afmparse.c, src/psaux/afmparse.h: New files which
implement an AFM parser. It is used to parse an AFM file.
* src/psaux/psconv.c, src/psaux/psconv.h: New files to provide
conversion functions (e.g, PS real number => FT_Fixed) for the
PS_Parser and AFM_Parser. Some of the functions are taken, with some
modifications, from the psobjs.c
* src/psaux/psobjs.c: Use functions from psconv.c.
* include/freetype/internal/psaux.h, src/psaux/psauxmod.c:: Add
`AFM_Parser' to the `psaux' service.
* src/psaux/psaux.c, src/psaux/rules.mk: Include those new files.
* src/tools/test_afm.c: A test program for AFM parser.
* include/freetype/internal/services/svkern.h,
include/freetype/internal/ftserv.h: New service `Kerning'. It is
currently only used to get the track kerning information.
* src/type1/t1driver.c, src/type1/t1objs.c, src/type1/t1afm.c,
src/type1/t1afm.h: Update to use the AFM parser.
Provide the `Kerning' service.
* include/freetype/freetype.h, src/base/ftobjs.c: New API
`FT_Get_Track_Kerning'.
2006-01-16 16:35:56 +01:00
|
|
|
{ FT_SERVICE_ID_KERNING, &t1_service_kerning },
|
2006-01-23 11:46:38 +01:00
|
|
|
#endif
|
* include/freetype/internal/ftserv.h,
include/freetype/internal/service/svpfr.h,
include/freetype/internal/pfr.h,
src/base/ftpfr.c:
migrating the functions of "ftpfr.h" to the new
service-base internal API
* src/cff/cffobjs.c, src/cid/cidobjs.c, src/pfr/pfrsbit.c,
src/psaux/psobjs.c, src/sfnt/sfdriver.c, src/sfnt/sfobjs.c,
src/truetype/ttobjs.c, src/type1/t1driver.c, src/type1/t1objs.c,
src/type42/t42objs.c, src/winfonts/winfnt.c:
removing various compiler warnings
2003-09-21 18:04:05 +02:00
|
|
|
|
|
|
|
#ifndef T1_CONFIG_OPTION_NO_MM_SUPPORT
|
2003-10-23 06:54:14 +02:00
|
|
|
{ FT_SERVICE_ID_MULTI_MASTERS, &t1_service_multi_masters },
|
* include/freetype/internal/ftserv.h,
include/freetype/internal/service/svpfr.h,
include/freetype/internal/pfr.h,
src/base/ftpfr.c:
migrating the functions of "ftpfr.h" to the new
service-base internal API
* src/cff/cffobjs.c, src/cid/cidobjs.c, src/pfr/pfrsbit.c,
src/psaux/psobjs.c, src/sfnt/sfdriver.c, src/sfnt/sfobjs.c,
src/truetype/ttobjs.c, src/type1/t1driver.c, src/type1/t1objs.c,
src/type42/t42objs.c, src/winfonts/winfnt.c:
removing various compiler warnings
2003-09-21 18:04:05 +02:00
|
|
|
#endif
|
* include/freetype/ftmm.h, include/freetype/ftmodule.h,
include/freetype/tttables.h, include/freetype/config/ftconfig.h,
include/freetype/internal/ftobjs.h,
include/freetype/internal/ftserv.h,
include/freetype/internal/internal.h,
include/freetype/internal/sfnt.h,
include/freetype/internal/tttypes.h,
include/freetype/internal/services/bdf.h,
include/freetype/internal/services/glyfdict.h,
include/freetype/internal/services/multmast.h,
include/freetype/internal/services/postname.h,
include/freetype/internal/services/sfnt.h,
include/freetype/internal/services/xf86name.h,
src/base/ftbdf.c, src/base/ftmm.c, src/base/ftobjs.c,
src/base/ftxf86.c, src/bdf/bdfdrivr.c, src/cff/cffdrivr.c,
src/cid/cidriver.c, src/pcf/pcfdrivr.c, src/sfnt/sfdriver.c,
src/truetype/ttdriver.c, src/type1/t1driver.c, src/type42/t42drivr.c:
heavy internal modifications to introduce the concept of
"module services". This is the first step towards a massive
simplification of the engine's internals, in order to
get rid of various numbers of hacks.
Note that this changes will break source & binary compatibility
for authors of external font drivers.
Maybe 2.1.6 will be called 2.2.0 after all :-)
2003-09-11 21:51:54 +02:00
|
|
|
{ NULL, NULL }
|
|
|
|
};
|
2001-10-17 15:48:10 +02:00
|
|
|
|
2000-07-09 21:15:30 +02:00
|
|
|
|
2011-11-30 13:08:28 +01:00
|
|
|
FT_CALLBACK_DEF( FT_Module_Interface )
|
|
|
|
Get_Interface( FT_Module module,
|
* include/freetype/ftmm.h, include/freetype/ftmodule.h,
include/freetype/tttables.h, include/freetype/config/ftconfig.h,
include/freetype/internal/ftobjs.h,
include/freetype/internal/ftserv.h,
include/freetype/internal/internal.h,
include/freetype/internal/sfnt.h,
include/freetype/internal/tttypes.h,
include/freetype/internal/services/bdf.h,
include/freetype/internal/services/glyfdict.h,
include/freetype/internal/services/multmast.h,
include/freetype/internal/services/postname.h,
include/freetype/internal/services/sfnt.h,
include/freetype/internal/services/xf86name.h,
src/base/ftbdf.c, src/base/ftmm.c, src/base/ftobjs.c,
src/base/ftxf86.c, src/bdf/bdfdrivr.c, src/cff/cffdrivr.c,
src/cid/cidriver.c, src/pcf/pcfdrivr.c, src/sfnt/sfdriver.c,
src/truetype/ttdriver.c, src/type1/t1driver.c, src/type42/t42drivr.c:
heavy internal modifications to introduce the concept of
"module services". This is the first step towards a massive
simplification of the engine's internals, in order to
get rid of various numbers of hacks.
Note that this changes will break source & binary compatibility
for authors of external font drivers.
Maybe 2.1.6 will be called 2.2.0 after all :-)
2003-09-11 21:51:54 +02:00
|
|
|
const FT_String* t1_interface )
|
|
|
|
{
|
2011-11-30 13:08:28 +01:00
|
|
|
FT_UNUSED( module );
|
2000-05-17 01:44:38 +02:00
|
|
|
|
* include/freetype/ftmm.h, include/freetype/ftmodule.h,
include/freetype/tttables.h, include/freetype/config/ftconfig.h,
include/freetype/internal/ftobjs.h,
include/freetype/internal/ftserv.h,
include/freetype/internal/internal.h,
include/freetype/internal/sfnt.h,
include/freetype/internal/tttypes.h,
include/freetype/internal/services/bdf.h,
include/freetype/internal/services/glyfdict.h,
include/freetype/internal/services/multmast.h,
include/freetype/internal/services/postname.h,
include/freetype/internal/services/sfnt.h,
include/freetype/internal/services/xf86name.h,
src/base/ftbdf.c, src/base/ftmm.c, src/base/ftobjs.c,
src/base/ftxf86.c, src/bdf/bdfdrivr.c, src/cff/cffdrivr.c,
src/cid/cidriver.c, src/pcf/pcfdrivr.c, src/sfnt/sfdriver.c,
src/truetype/ttdriver.c, src/type1/t1driver.c, src/type42/t42drivr.c:
heavy internal modifications to introduce the concept of
"module services". This is the first step towards a massive
simplification of the engine's internals, in order to
get rid of various numbers of hacks.
Note that this changes will break source & binary compatibility
for authors of external font drivers.
Maybe 2.1.6 will be called 2.2.0 after all :-)
2003-09-11 21:51:54 +02:00
|
|
|
return ft_service_list_lookup( t1_services, t1_interface );
|
2000-01-27 15:02:04 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2000-10-28 19:10:06 +02:00
|
|
|
#ifndef T1_CONFIG_OPTION_NO_AFM
|
2000-07-08 21:51:42 +02:00
|
|
|
|
2018-06-03 09:01:17 +02:00
|
|
|
/**************************************************************************
|
|
|
|
*
|
|
|
|
* @Function:
|
|
|
|
* Get_Kerning
|
|
|
|
*
|
|
|
|
* @Description:
|
|
|
|
* A driver method used to return the kerning vector between two
|
|
|
|
* glyphs of the same face.
|
|
|
|
*
|
|
|
|
* @Input:
|
|
|
|
* face ::
|
|
|
|
* A handle to the source face object.
|
|
|
|
*
|
|
|
|
* left_glyph ::
|
|
|
|
* The index of the left glyph in the kern pair.
|
|
|
|
*
|
|
|
|
* right_glyph ::
|
|
|
|
* The index of the right glyph in the kern pair.
|
|
|
|
*
|
|
|
|
* @Output:
|
|
|
|
* kerning ::
|
|
|
|
* The kerning vector. This is in font units for
|
|
|
|
* scalable formats, and in pixels for fixed-sizes
|
|
|
|
* formats.
|
|
|
|
*
|
|
|
|
* @Return:
|
|
|
|
* FreeType error code. 0 means success.
|
|
|
|
*
|
|
|
|
* @Note:
|
|
|
|
* Only horizontal layouts (left-to-right & right-to-left) are
|
|
|
|
* supported by this function. Other layouts, or more sophisticated
|
|
|
|
* kernings are out of scope of this method (the basic driver
|
|
|
|
* interface is meant to be simple).
|
|
|
|
*
|
|
|
|
* They can be implemented by format-specific interfaces.
|
|
|
|
*/
|
2001-06-28 09:17:51 +02:00
|
|
|
static FT_Error
|
2011-11-30 13:08:28 +01:00
|
|
|
Get_Kerning( FT_Face t1face, /* T1_Face */
|
2001-06-28 09:17:51 +02:00
|
|
|
FT_UInt left_glyph,
|
|
|
|
FT_UInt right_glyph,
|
|
|
|
FT_Vector* kerning )
|
2000-02-15 13:55:57 +01:00
|
|
|
{
|
2011-11-30 13:08:28 +01:00
|
|
|
T1_Face face = (T1_Face)t1face;
|
|
|
|
|
|
|
|
|
2000-02-15 13:55:57 +01:00
|
|
|
kerning->x = 0;
|
|
|
|
kerning->y = 0;
|
|
|
|
|
* src/psaux/afmparse.c, src/psaux/afmparse.h: New files which
implement an AFM parser. It is used to parse an AFM file.
* src/psaux/psconv.c, src/psaux/psconv.h: New files to provide
conversion functions (e.g, PS real number => FT_Fixed) for the
PS_Parser and AFM_Parser. Some of the functions are taken, with some
modifications, from the psobjs.c
* src/psaux/psobjs.c: Use functions from psconv.c.
* include/freetype/internal/psaux.h, src/psaux/psauxmod.c:: Add
`AFM_Parser' to the `psaux' service.
* src/psaux/psaux.c, src/psaux/rules.mk: Include those new files.
* src/tools/test_afm.c: A test program for AFM parser.
* include/freetype/internal/services/svkern.h,
include/freetype/internal/ftserv.h: New service `Kerning'. It is
currently only used to get the track kerning information.
* src/type1/t1driver.c, src/type1/t1objs.c, src/type1/t1afm.c,
src/type1/t1afm.h: Update to use the AFM parser.
Provide the `Kerning' service.
* include/freetype/freetype.h, src/base/ftobjs.c: New API
`FT_Get_Track_Kerning'.
2006-01-16 16:35:56 +01:00
|
|
|
if ( face->afm_data )
|
|
|
|
T1_Get_Kerning( (AFM_FontInfo)face->afm_data,
|
|
|
|
left_glyph,
|
|
|
|
right_glyph,
|
|
|
|
kerning );
|
2000-02-15 13:55:57 +01:00
|
|
|
|
2013-03-14 11:21:17 +01:00
|
|
|
return FT_Err_Ok;
|
2000-02-15 13:55:57 +01:00
|
|
|
}
|
2000-07-08 21:51:42 +02:00
|
|
|
|
|
|
|
|
|
|
|
#endif /* T1_CONFIG_OPTION_NO_AFM */
|
|
|
|
|
2000-02-15 13:55:57 +01:00
|
|
|
|
2000-11-04 02:55:49 +01:00
|
|
|
FT_CALLBACK_TABLE_DEF
|
* include/freetype/internal/ftdriver.h,
include/freetype/internal/ftobjs.h,
src/base/ftapi.c, src/base/ftobjs.c,
src/cff/cffdrivr.c, src/cff/cffdrivr.h,
src/cid/cidriver.c, src/cid/cidriver.h,
src/pcf/pcfdriver.c, src/pcf/pcfdriver.h,
src/truetype/ttdriver.c, src/truetype/ttdriver.h,
src/type1/t1driver.c, src/type1/t1driver.h,
src/winfonts/winfnt.c, src/winfonts/winfnt.h:
updating the type definitions for font font drivers
2002-03-14 10:22:48 +01:00
|
|
|
const FT_Driver_ClassRec t1_driver_class =
|
2000-01-27 15:02:04 +01:00
|
|
|
{
|
- MAJOR INTERNAL REDESIGN:
A lot of internal modifications have been performed lately on the
source in order to provide the following enhancements:
- more generic module support:
The FT_Module type is now defined to represent a handle to a given
module. The file <freetype/ftmodule.h> contains the FT_Module_Class
definition, as well as the module-loading public API
The FT_Driver type is still defined, and still represents a pointer
to a font driver. Note that FT_Add_Driver is replaced by FT_Add_Module,
FT_Get_Driver by FT_Get_Module, etc..
- support for generic glyph image types:
The FT_Renderer type is a pointer to a module used to perform various
operations on glyph image.
Each renderer is capable of handling images in a single format
(e.g. ft_glyph_format_outline). Its functions are used to:
- transform an glyph image
- render a glyph image into a bitmap
- return the control box (dimensions) of a given glyph image
The scan converters "ftraster.c" and "ftgrays.c" have been moved
to the new directory "src/renderer", and are used to provide two
default renderer modules.
One corresponds to the "standard" scan-converter, the other to the
"smooth" one.
The current renderer can be set through the new function
FT_Set_Renderer.
The old raster-related function FT_Set_Raster, FT_Get_Raster and
FT_Set_Raster_Mode have now disappeared, in favor of the new:
FT_Get_Renderer
FT_Set_Renderer
see the file <freetype/ftrender.h> for more details..
These changes were necessary to properly support different scalable
formats in the future, like bi-color glyphs, etc..
- glyph loader object:
A new internal object, called a 'glyph loader' has been introduced
in the base layer. It is used by all scalable format font drivers
to load glyphs and composites.
This object has been created to reduce the code size of each driver,
as each one of them basically re-implemented its functionality.
See <freetype/internal/ftobjs.h> and the FT_GlyphLoader type for
more information..
- FT_GlyphSlot had new fields:
In order to support extended features (see below), the FT_GlyphSlot
structure has a few new fields:
linearHoriAdvance: this field gives the linearly scaled (i.e.
scaled but unhinted) advance width for the glyph,
expressed as a 16.16 fixed pixel value. This
is useful to perform WYSIWYG text.
linearVertAdvance: this field gives the linearly scaled advance
height for the glyph (relevant in vertical glyph
layouts only). This is useful to perform
WYSIWYG text.
Note that the two above field replace the removed "metrics2" field
in the glyph slot.
advance: this field is a vector that gives the transformed
advance for the glyph. By default, it corresponds
to the advance width, unless FT_LOAD_VERTICAL_LAYOUT
was specified when calling FT_Load_Glyph or FT_Load_Char
bitmap_left: this field gives the distance in integer pixels from
the current pen position to the left-most pixel of
a glyph image WHEN IT IS A BITMAP. It is only valid
when the "format" field is set to
"ft_glyph_format_bitmap", for example, after calling
the new function FT_Render_Glyph.
bitmap_top: this field gives the distance in integer pixels from
the current pen position (located on the baseline) to
the top-most pixel of the glyph image WHEN IT IS A
BITMAP. Positive values correspond to upwards Y.
loader: this is a new private field for the glyph slot. Client
applications should not touch it..
- support for transforms and direct rendering in FT_Load_Glyph:
Most of the functionality found in <freetype/ftglyph.h> has been
moved to the core library. Hence, the following:
- a transform can be specified for a face through FT_Set_Transform.
this transform is applied by FT_Load_Glyph to scalable glyph images
(i.e. NOT TO BITMAPS) before the function returns, unless the
bit flag FT_LOAD_IGNORE_TRANSFORM was set in the load flags..
- once a glyph image has been loaded, it can be directly converted to
a bitmap by using the new FT_Render_Glyph function. Note that this
function takes the glyph image from the glyph slot, and converts
it to a bitmap whose properties are returned in "face.glyph.bitmap",
"face.glyph.bitmap_left" and "face.glyph.bitmap_top". The original
native image might be lost after the conversion.
- when using the new bit flag FT_LOAD_RENDER, the FT_Load_Glyph
and FT_Load_Char functions will call FT_Render_Glyph automatically
when needed.
2000-06-22 02:17:42 +02:00
|
|
|
{
|
* include/freetype/ftglyph.h (ft_glyph_bbox_unscaled,
ft_glyph_bbox_subpixels, ft_glyph_bbox_gridfit,
ft_glyph_bbox_truncate, ft_glyph_bbox_pixels): Replaced with
FT_GLYPH_BBOX_UNSCALED, FT_GLYPH_BBOX_SUBPIXELS,
FT_GLYPH_BBIX_GRIDFIT, FT_GLYPH_BBOX_TRUNCATE, FT_GLYPH_BBOX_PIXELS.
The lowercase variants are now (deprecated aliases) to the uppercase
versions.
Updated all other files.
* include/freetype/ftmodule.h (ft_module_font_driver,
ft_module_renderer, ft_module_hinter, ft_module_styler,
ft_module_driver_scalable, ft_module_driver_no_outlines,
ft_module_driver_has_hinter): Replaced with FT_MODULE_FONT_DRIVER,
FT_MODULE_RENDERER, FT_MODULE_HINTER, FT_MODULE_STYLER,
FT_MODULE_DRIVER_SCALABLE, FT_MODULE_DRIVER_NO_OUTLINES,
FT_MODULE_DRIVER_HAS_HINTER.
The lowercase variants are now (deprecated aliases) to the uppercase
versions.
Updated all other files.
* src/base/ftglyph.c (FT_Glyph_Get_CBox): Handle bbox_mode better
as enumeration.
* src/pcf/pcfdrivr.c (pcf_driver_class), src/winfonts/winfnt.c
(winfnt_driver_class), src/bdf/bdfdrivr.c (bdf_driver_class): Add
the FT_MODULE_DRIVER_NO_OUTLINES flag.
2003-06-17 12:42:27 +02:00
|
|
|
FT_MODULE_FONT_DRIVER |
|
|
|
|
FT_MODULE_DRIVER_SCALABLE |
|
|
|
|
FT_MODULE_DRIVER_HAS_HINTER,
|
2002-02-10 13:33:14 +01:00
|
|
|
|
2017-09-25 06:33:28 +02:00
|
|
|
sizeof ( PS_DriverRec ),
|
2000-07-09 21:15:30 +02:00
|
|
|
|
2000-07-26 21:04:08 +02:00
|
|
|
"type1",
|
2000-07-08 21:51:42 +02:00
|
|
|
0x10000L,
|
|
|
|
0x20000L,
|
2000-07-09 21:15:30 +02:00
|
|
|
|
2016-09-17 17:12:50 +02:00
|
|
|
NULL, /* module-specific interface */
|
2000-07-09 21:15:30 +02:00
|
|
|
|
2015-10-19 08:49:25 +02:00
|
|
|
T1_Driver_Init, /* FT_Module_Constructor module_init */
|
|
|
|
T1_Driver_Done, /* FT_Module_Destructor module_done */
|
|
|
|
Get_Interface, /* FT_Module_Requester get_interface */
|
- MAJOR INTERNAL REDESIGN:
A lot of internal modifications have been performed lately on the
source in order to provide the following enhancements:
- more generic module support:
The FT_Module type is now defined to represent a handle to a given
module. The file <freetype/ftmodule.h> contains the FT_Module_Class
definition, as well as the module-loading public API
The FT_Driver type is still defined, and still represents a pointer
to a font driver. Note that FT_Add_Driver is replaced by FT_Add_Module,
FT_Get_Driver by FT_Get_Module, etc..
- support for generic glyph image types:
The FT_Renderer type is a pointer to a module used to perform various
operations on glyph image.
Each renderer is capable of handling images in a single format
(e.g. ft_glyph_format_outline). Its functions are used to:
- transform an glyph image
- render a glyph image into a bitmap
- return the control box (dimensions) of a given glyph image
The scan converters "ftraster.c" and "ftgrays.c" have been moved
to the new directory "src/renderer", and are used to provide two
default renderer modules.
One corresponds to the "standard" scan-converter, the other to the
"smooth" one.
The current renderer can be set through the new function
FT_Set_Renderer.
The old raster-related function FT_Set_Raster, FT_Get_Raster and
FT_Set_Raster_Mode have now disappeared, in favor of the new:
FT_Get_Renderer
FT_Set_Renderer
see the file <freetype/ftrender.h> for more details..
These changes were necessary to properly support different scalable
formats in the future, like bi-color glyphs, etc..
- glyph loader object:
A new internal object, called a 'glyph loader' has been introduced
in the base layer. It is used by all scalable format font drivers
to load glyphs and composites.
This object has been created to reduce the code size of each driver,
as each one of them basically re-implemented its functionality.
See <freetype/internal/ftobjs.h> and the FT_GlyphLoader type for
more information..
- FT_GlyphSlot had new fields:
In order to support extended features (see below), the FT_GlyphSlot
structure has a few new fields:
linearHoriAdvance: this field gives the linearly scaled (i.e.
scaled but unhinted) advance width for the glyph,
expressed as a 16.16 fixed pixel value. This
is useful to perform WYSIWYG text.
linearVertAdvance: this field gives the linearly scaled advance
height for the glyph (relevant in vertical glyph
layouts only). This is useful to perform
WYSIWYG text.
Note that the two above field replace the removed "metrics2" field
in the glyph slot.
advance: this field is a vector that gives the transformed
advance for the glyph. By default, it corresponds
to the advance width, unless FT_LOAD_VERTICAL_LAYOUT
was specified when calling FT_Load_Glyph or FT_Load_Char
bitmap_left: this field gives the distance in integer pixels from
the current pen position to the left-most pixel of
a glyph image WHEN IT IS A BITMAP. It is only valid
when the "format" field is set to
"ft_glyph_format_bitmap", for example, after calling
the new function FT_Render_Glyph.
bitmap_top: this field gives the distance in integer pixels from
the current pen position (located on the baseline) to
the top-most pixel of the glyph image WHEN IT IS A
BITMAP. Positive values correspond to upwards Y.
loader: this is a new private field for the glyph slot. Client
applications should not touch it..
- support for transforms and direct rendering in FT_Load_Glyph:
Most of the functionality found in <freetype/ftglyph.h> has been
moved to the core library. Hence, the following:
- a transform can be specified for a face through FT_Set_Transform.
this transform is applied by FT_Load_Glyph to scalable glyph images
(i.e. NOT TO BITMAPS) before the function returns, unless the
bit flag FT_LOAD_IGNORE_TRANSFORM was set in the load flags..
- once a glyph image has been loaded, it can be directly converted to
a bitmap by using the new FT_Render_Glyph function. Note that this
function takes the glyph image from the glyph slot, and converts
it to a bitmap whose properties are returned in "face.glyph.bitmap",
"face.glyph.bitmap_left" and "face.glyph.bitmap_top". The original
native image might be lost after the conversion.
- when using the new bit flag FT_LOAD_RENDER, the FT_Load_Glyph
and FT_Load_Char functions will call FT_Render_Glyph automatically
when needed.
2000-06-22 02:17:42 +02:00
|
|
|
},
|
|
|
|
|
2011-11-30 10:46:53 +01:00
|
|
|
sizeof ( T1_FaceRec ),
|
|
|
|
sizeof ( T1_SizeRec ),
|
|
|
|
sizeof ( T1_GlyphSlotRec ),
|
2000-05-17 01:44:38 +02:00
|
|
|
|
2015-10-19 08:49:25 +02:00
|
|
|
T1_Face_Init, /* FT_Face_InitFunc init_face */
|
|
|
|
T1_Face_Done, /* FT_Face_DoneFunc done_face */
|
|
|
|
T1_Size_Init, /* FT_Size_InitFunc init_size */
|
|
|
|
T1_Size_Done, /* FT_Size_DoneFunc done_size */
|
|
|
|
T1_GlyphSlot_Init, /* FT_Slot_InitFunc init_slot */
|
|
|
|
T1_GlyphSlot_Done, /* FT_Slot_DoneFunc done_slot */
|
- MAJOR INTERNAL REDESIGN:
A lot of internal modifications have been performed lately on the
source in order to provide the following enhancements:
- more generic module support:
The FT_Module type is now defined to represent a handle to a given
module. The file <freetype/ftmodule.h> contains the FT_Module_Class
definition, as well as the module-loading public API
The FT_Driver type is still defined, and still represents a pointer
to a font driver. Note that FT_Add_Driver is replaced by FT_Add_Module,
FT_Get_Driver by FT_Get_Module, etc..
- support for generic glyph image types:
The FT_Renderer type is a pointer to a module used to perform various
operations on glyph image.
Each renderer is capable of handling images in a single format
(e.g. ft_glyph_format_outline). Its functions are used to:
- transform an glyph image
- render a glyph image into a bitmap
- return the control box (dimensions) of a given glyph image
The scan converters "ftraster.c" and "ftgrays.c" have been moved
to the new directory "src/renderer", and are used to provide two
default renderer modules.
One corresponds to the "standard" scan-converter, the other to the
"smooth" one.
The current renderer can be set through the new function
FT_Set_Renderer.
The old raster-related function FT_Set_Raster, FT_Get_Raster and
FT_Set_Raster_Mode have now disappeared, in favor of the new:
FT_Get_Renderer
FT_Set_Renderer
see the file <freetype/ftrender.h> for more details..
These changes were necessary to properly support different scalable
formats in the future, like bi-color glyphs, etc..
- glyph loader object:
A new internal object, called a 'glyph loader' has been introduced
in the base layer. It is used by all scalable format font drivers
to load glyphs and composites.
This object has been created to reduce the code size of each driver,
as each one of them basically re-implemented its functionality.
See <freetype/internal/ftobjs.h> and the FT_GlyphLoader type for
more information..
- FT_GlyphSlot had new fields:
In order to support extended features (see below), the FT_GlyphSlot
structure has a few new fields:
linearHoriAdvance: this field gives the linearly scaled (i.e.
scaled but unhinted) advance width for the glyph,
expressed as a 16.16 fixed pixel value. This
is useful to perform WYSIWYG text.
linearVertAdvance: this field gives the linearly scaled advance
height for the glyph (relevant in vertical glyph
layouts only). This is useful to perform
WYSIWYG text.
Note that the two above field replace the removed "metrics2" field
in the glyph slot.
advance: this field is a vector that gives the transformed
advance for the glyph. By default, it corresponds
to the advance width, unless FT_LOAD_VERTICAL_LAYOUT
was specified when calling FT_Load_Glyph or FT_Load_Char
bitmap_left: this field gives the distance in integer pixels from
the current pen position to the left-most pixel of
a glyph image WHEN IT IS A BITMAP. It is only valid
when the "format" field is set to
"ft_glyph_format_bitmap", for example, after calling
the new function FT_Render_Glyph.
bitmap_top: this field gives the distance in integer pixels from
the current pen position (located on the baseline) to
the top-most pixel of the glyph image WHEN IT IS A
BITMAP. Positive values correspond to upwards Y.
loader: this is a new private field for the glyph slot. Client
applications should not touch it..
- support for transforms and direct rendering in FT_Load_Glyph:
Most of the functionality found in <freetype/ftglyph.h> has been
moved to the core library. Hence, the following:
- a transform can be specified for a face through FT_Set_Transform.
this transform is applied by FT_Load_Glyph to scalable glyph images
(i.e. NOT TO BITMAPS) before the function returns, unless the
bit flag FT_LOAD_IGNORE_TRANSFORM was set in the load flags..
- once a glyph image has been loaded, it can be directly converted to
a bitmap by using the new FT_Render_Glyph function. Note that this
function takes the glyph image from the glyph slot, and converts
it to a bitmap whose properties are returned in "face.glyph.bitmap",
"face.glyph.bitmap_left" and "face.glyph.bitmap_top". The original
native image might be lost after the conversion.
- when using the new bit flag FT_LOAD_RENDER, the FT_Load_Glyph
and FT_Load_Char functions will call FT_Render_Glyph automatically
when needed.
2000-06-22 02:17:42 +02:00
|
|
|
|
2015-10-19 08:49:25 +02:00
|
|
|
T1_Load_Glyph, /* FT_Slot_LoadFunc load_glyph */
|
2000-02-15 13:55:57 +01:00
|
|
|
|
2000-10-28 19:10:06 +02:00
|
|
|
#ifdef T1_CONFIG_OPTION_NO_AFM
|
2016-09-17 17:12:50 +02:00
|
|
|
NULL, /* FT_Face_GetKerningFunc get_kerning */
|
|
|
|
NULL, /* FT_Face_AttachFunc attach_file */
|
2000-02-15 13:55:57 +01:00
|
|
|
#else
|
2015-10-19 08:49:25 +02:00
|
|
|
Get_Kerning, /* FT_Face_GetKerningFunc get_kerning */
|
|
|
|
T1_Read_Metrics, /* FT_Face_AttachFunc attach_file */
|
2000-02-15 13:55:57 +01:00
|
|
|
#endif
|
2015-10-19 08:49:25 +02:00
|
|
|
T1_Get_Advances, /* FT_Face_GetAdvancesFunc get_advances */
|
|
|
|
|
|
|
|
T1_Size_Request, /* FT_Size_RequestFunc request_size */
|
2016-09-17 17:12:50 +02:00
|
|
|
NULL /* FT_Size_SelectFunc select_size */
|
2000-01-27 15:02:04 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
2000-07-08 21:51:42 +02:00
|
|
|
/* END */
|