From 7a7d403d7a0c3bef6e3346a0e3736b69ff4323f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Suzuki=2C=20Toshiya=20=28=E9=88=B4=E6=9C=A8=E4=BF=8A?= =?UTF-8?q?=E5=93=89=29?= Date: Fri, 15 Dec 2006 14:47:42 +0000 Subject: [PATCH] * Improve resource fork handler for POSIX --- ChangeLog | 8 ++++++++ src/base/ftobjs.c | 11 +++++++++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0cd1e6327..aa4fe2dad 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2006-12-15 suzuki toshiya + + * src/base/ftobjs.c: Improvement of resource fork handler for POSIX, + http://lists.gnu.org/archive/html/freetype-devel/2006-10/msg00025.html + (Mac_Read_sfnt_Resource): Count only `sfnt' resource of suitcase font + format or .dfont, to simulate the face index number counted by ftmac.c. + (IsMacResource): Return the number of scalable faces correctly. + 2006-12-10 Werner Lemberg * builds/toplevel.mk (version): Protect against `distclean' target. diff --git a/src/base/ftobjs.c b/src/base/ftobjs.c index 6a26140f7..e16a19f0f 100644 --- a/src/base/ftobjs.c +++ b/src/base/ftobjs.c @@ -1371,6 +1371,7 @@ FT_Long flag_offset; FT_Long rlen; int is_cff; + FT_Long face_index_in_resource = 0; if ( face_index == -1 ) @@ -1402,7 +1403,7 @@ error = open_face_from_buffer( library, sfnt_data, rlen, - face_index, + face_index_in_resource, is_cff ? "cff" : "truetype", aface ); @@ -1444,6 +1445,8 @@ error = Mac_Read_POST_Resource( library, stream, data_offsets, count, face_index, aface ); FT_FREE( data_offsets ); + /* POST exists in a LWFN providing single face */ + (*aface)->num_faces = 1; return error; } @@ -1453,9 +1456,13 @@ &data_offsets, &count ); if ( !error ) { + FT_Long face_index_internal = face_index % count; + + error = Mac_Read_sfnt_Resource( library, stream, data_offsets, count, - face_index, aface ); + face_index_internal, aface ); FT_FREE( data_offsets ); + (*aface)->num_faces = count; } return error;