freetype-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [ft-devel] benchmark of sfnt checksum recalculation


From: suzuki toshiya
Subject: Re: [ft-devel] benchmark of sfnt checksum recalculation
Date: Sun, 01 May 2011 00:55:03 +0900
User-agent: Mozilla-Thunderbird 2.0.0.12 (X11/20080406)

Hi all,

Just I've committed to make tricky font detector to ignore
the existing checksum written in the TrueType header, like this.
In my benchmark, the latency in FT_New_Face() introduced
by this change is less than 0.01%. However, if anybody thinks
extra seek of the font file is problematic (and you do not
care about the embedded tricky font, e.g. FT2 is used only
for font files, not a document package), please post a message.
I'm really willing to add configuration option to prioritize
the existing value.

Regards,
mpsuzuki



diff --git a/ChangeLog b/ChangeLog
index fe645d4..0221692 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,17 @@
 2011-04-30  suzuki toshiya  <address@hidden>

+       [truetype] Recalculate the sfnt table checksum always.
+
+       * src/truetype/ttobjs.c (tt_get_sfnt_checksum): Recalculate
+       the sfnt table checksum even if non-zero value is writte in
+       the TrueType font header.  Some bad PDF generators write
+       wrong values.  For detail, see examples and benchmark tests
+       of the latency by recalculation:
+       http://lists.gnu.org/archive/html/freetype-devel/2011-04/msg00091.html
+       http://lists.gnu.org/archive/html/freetype-devel/2011-04/msg00096.html
+
+2011-04-30  suzuki toshiya  <address@hidden>
+
        [truetype] Register a set of tricky fonts, NEC FA family.

        * src/truetype/ttobjs.c (tt_check_trickyness_sfnt_ids):
diff --git a/src/truetype/ttobjs.c b/src/truetype/ttobjs.c
index 11cd4b3..942361c 100644
--- a/src/truetype/ttobjs.c
+++ b/src/truetype/ttobjs.c
@@ -213,8 +213,10 @@
   tt_get_sfnt_checksum( TT_Face    face,
                         FT_UShort  i )
   {
+#if 0 /* if we believe the written value, use following part. */
     if ( face->dir_tables[i].CheckSum )
       return face->dir_tables[i].CheckSum;
+#endif

     if ( !face->goto_table )
       return 0;

Werner LEMBERG wrote:
>> Here is 2nd testcases checking ca. 1900 fonts [...]
> 
> Thanks.  Since this is a once-per-font operation, I don't think we
> should think too much about timing issues.  Please proceed.
> 
> 
>     Werner




reply via email to

[Prev in Thread] Current Thread [Next in Thread]