From 3d780173feddb66e404b317f88086da05ebf266b Mon Sep 17 00:00:00 2001 From: Werner Lemberg Date: Sun, 11 Jan 2004 10:01:08 +0000 Subject: [PATCH] Make `FT_Get_CMap_Language_ID' work with CFF. Bug reported by Steve Hartwell . * src/cff/cffdrivr.c: Include FT_SERVICE_TT_CMAP_H. (cff_services): Added an entry for FT_SERVICE_ID_TT_CMAP. (cff_get_cmap_info): New function. (cff_service_get_cmap_info) New entry for cff_services. * src/sfnt/ttcmap0.c: Exit loop after a format match has been found. Suggested by Steve Hartwell . --- ChangeLog | 13 +++++++++++++ src/cff/cffdrivr.c | 30 +++++++++++++++++++++++++++++- src/sfnt/ttcmap0.c | 1 + 3 files changed, 43 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 3710b4515..343bd796b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +2004-01-10 Masatake YAMATO + + Make `FT_Get_CMap_Language_ID' work with CFF. Bug reported by + Steve Hartwell . + + * src/cff/cffdrivr.c: Include FT_SERVICE_TT_CMAP_H. + (cff_services): Added an entry for FT_SERVICE_ID_TT_CMAP. + (cff_get_cmap_info): New function. + (cff_service_get_cmap_info) New entry for cff_services. + + * src/sfnt/ttcmap0.c: Exit loop after a format match has been found. + Suggested by Steve Hartwell . + 2004-01-03 Masatake YAMATO * src/base/ftobjs.c (destroy_charmaps): New function. diff --git a/src/cff/cffdrivr.c b/src/cff/cffdrivr.c index 9ddb379df..3a24a5de2 100644 --- a/src/cff/cffdrivr.c +++ b/src/cff/cffdrivr.c @@ -4,7 +4,7 @@ /* */ /* OpenType font driver implementation (body). */ /* */ -/* Copyright 1996-2001, 2002, 2003 by */ +/* Copyright 1996-2001, 2002, 2003, 2004 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -24,6 +24,7 @@ #include FT_TRUETYPE_IDS_H #include FT_SERVICE_POSTSCRIPT_CMAPS_H #include FT_SERVICE_POSTSCRIPT_INFO_H +#include FT_SERVICE_TT_CMAP_H #include "cffdrivr.h" #include "cffgload.h" @@ -338,6 +339,32 @@ }; + /* + * (empty) TT CMAP INFO + * + * Hide TT CMAP INFO service defined in SFNT module; + * just return 0. + * + */ + + static FT_Error + cff_get_cmap_info( FT_CharMap charmap, + TT_CMapInfo *cmap_info ) + { + FT_UNUSED( charmap ); + + cmap_info->language = 0; + + return CFF_Err_Ok; + } + + + static const FT_Service_TTCMapsRec cff_service_get_cmap_info = + { + (TT_CMap_Info_GetFunc)cff_get_cmap_info + }; + + /*************************************************************************/ /*************************************************************************/ /*************************************************************************/ @@ -357,6 +384,7 @@ #ifndef FT_CONFIG_OPTION_NO_GLYPH_NAMES { FT_SERVICE_ID_GLYPH_DICT, &cff_service_glyph_dict }, #endif + { FT_SERVICE_ID_TT_CMAP, &cff_service_get_cmap_info }, { NULL, NULL } }; diff --git a/src/sfnt/ttcmap0.c b/src/sfnt/ttcmap0.c index ae39413c8..dd1c76aaa 100644 --- a/src/sfnt/ttcmap0.c +++ b/src/sfnt/ttcmap0.c @@ -1966,6 +1966,7 @@ FT_ERROR(( "tt_face_build_cmaps:" )); FT_ERROR(( " broken cmap sub-table ignored!\n" )); } + break; } } }