ref: 7a7d403d7a0c3bef6e3346a0e3736b69ff4323f9
parent: ec5b4508cc17e81153a6f5625794ab36f009d9ab
author: Suzuki, Toshiya (鈴木俊哉) <[email protected]>
date: Fri Dec 15 09:47:42 EST 2006
* Improve resource fork handler for POSIX
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2006-12-15 suzuki toshiya <[email protected]>
+
+ * 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 <[email protected]>
* builds/toplevel.mk (version): Protect against `distclean' target.
--- 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;