[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [ft-devel] How does one enable the new slight auto-hinting mode?
From: |
Markus Trippelsdorf |
Subject: |
Re: [ft-devel] How does one enable the new slight auto-hinting mode? |
Date: |
Sun, 30 Apr 2017 04:13:42 +0200 |
On 2017.04.29 at 21:35 +0000, Jan Alexander Steffens wrote:
> On Sat, Apr 29, 2017 at 9:33 PM Markus Trippelsdorf <address@hidden>
> wrote:
>
> > On 2017.04.29 at 18:11 +0200, Markus Trippelsdorf wrote:
> > > On 2017.04.29 at 17:50 +0200, Werner LEMBERG wrote:
> > > >
> > > > >> But strangely is see no issue related to slight auto-hinting in
> > > > >> Chromium at all.
> > > >
> > > > Interesting.
> > > >
> > > > > Here is another example which uses webfonts:
> > > > > http://ilovetypography.com/2016/04/18/the-first-roman-fonts/
> > > > > Chromium above, Firefox below: http://imgur.com/a/WNR1R
> > > >
> > > > Ouch. However, I think it is *impossible* to get such a bad result
> > > > with my change. Are you sure that Firefox's font cache was refreshed?
> > >
> > > Yes. I have deleted the cache, but it make no difference.
> > >
> > > > Unfortunately, on my openSUSE box, Firefox seems to use a compiled-in
> > > > FreeType version, since `ldd' shows nothing (and testing with
> > > > `LD_PRELOAD' doesn't show a difference).
> > >
> > > The firefox binary is just a small wrapper that loads libxul.so.
> > > On my system:
> > >
> > > % ldd /usr/lib/firefox/libxul.so | grep freety
> > > libfreetype.so.6 => /usr/lib/libfreetype.so.6
> > (0x00007fd9a5aeb000)
> >
> > Hard setting the autohint_mode to FT_RENDER_MODE_SLIGHT "fixes" the
> > Firefox problem for me:
> >
> > diff --git a/src/autofit/afloader.c b/src/autofit/afloader.c
> > index b3269d10b839..8cc860093d60 100644
> > --- a/src/autofit/afloader.c
> > +++ b/src/autofit/afloader.c
> > @@ -249,7 +249,7 @@
> > /* different scaling values; this later on enforces recomputation
> > of */
> > /* everything related to the current size
> > */
> >
> > - size_internal->autohint_mode = FT_LOAD_TARGET_MODE( load_flags );
> > + size_internal->autohint_mode = FT_RENDER_MODE_SLIGHT;
> > size_internal->autohint_metrics = size->metrics;
> >
> > #ifdef AF_CONFIG_OPTION_TT_SIZE_METRICS
> >
> > Setting it to FT_RENDER_MODE_LIGHT makes the problem return.
> >
>
> Firefox should never set _SLIGHT. Perhaps what your change does is ensure
> the preceding check (`size_internal->autohint_mode != FT_LOAD_TARGET_MODE(
> load_flags )`) always succeeds. Is the problem also gone after you replace
> the condition with `if (1)`?
>
> Maybe face->size->metrics changes between calls to af_loader_load_glyph,
> and autohint_metrics is no longer correct.
Yes, that is true. Here is the output of loading the ilovetypography page with:
diff --git a/src/autofit/afloader.c b/src/autofit/afloader.c
index b3269d10b839..9ded58f0c7ef 100644
--- a/src/autofit/afloader.c
+++ b/src/autofit/afloader.c
@@ -242,12 +242,13 @@
FT_ZERO( &scaler );
- if ( !size_internal->autohint_metrics.x_scale ||
- size_internal->autohint_mode != FT_LOAD_TARGET_MODE( load_flags ) )
+ if ( 1 )
{
/* switching between LIGHT and SLIGHT (and vice versa) usually means */
/* different scaling values; this later on enforces recomputation of */
/* everything related to the current size */
+ if (size_internal->autohint_metrics.x_scale != size->metrics.x_scale)
+ printf ("size_internal->autohint_metrics=%ld size->metrics=%ld\n",
size_internal->autohint_metrics.x_scale, size->metrics.x_scale);
size_internal->autohint_mode = FT_LOAD_TARGET_MODE( load_flags );
size_internal->autohint_metrics = size->metrics;
Firefox:
size_internal->autohint_metrics=0 size->metrics=32768
size_internal->autohint_metrics=0 size->metrics=67109
size_internal->autohint_metrics=0 size->metrics=234881
size_internal->autohint_metrics=0 size->metrics=234881
size_internal->autohint_metrics=67109 size->metrics=58720
size_internal->autohint_metrics=0 size->metrics=58720
size_internal->autohint_metrics=58720 size->metrics=67109
size_internal->autohint_metrics=58720 size->metrics=67109
size_internal->autohint_metrics=234881 size->metrics=67109
size_internal->autohint_metrics=234881 size->metrics=67109
size_internal->autohint_metrics=67109 size->metrics=58720
size_internal->autohint_metrics=0 size->metrics=67109
size_internal->autohint_metrics=0 size->metrics=67109
size_internal->autohint_metrics=58720 size->metrics=67109
size_internal->autohint_metrics=0 size->metrics=28672
size_internal->autohint_metrics=67109 size->metrics=58720
size_internal->autohint_metrics=67109 size->metrics=58720
size_internal->autohint_metrics=58720 size->metrics=67109
size_internal->autohint_metrics=58720 size->metrics=67109
size_internal->autohint_metrics=67109 size->metrics=58720
size_internal->autohint_metrics=67109 size->metrics=58720
size_internal->autohint_metrics=58720 size->metrics=67109
size_internal->autohint_metrics=58720 size->metrics=67109
size_internal->autohint_metrics=28672 size->metrics=45888
size_internal->autohint_metrics=32768 size->metrics=28672
size_internal->autohint_metrics=67109 size->metrics=58720
size_internal->autohint_metrics=58720 size->metrics=67109
size_internal->autohint_metrics=28672 size->metrics=32768
size_internal->autohint_metrics=67109 size->metrics=58720
size_internal->autohint_metrics=67109 size->metrics=58720
size_internal->autohint_metrics=58720 size->metrics=67109
size_internal->autohint_metrics=67109 size->metrics=58720
size_internal->autohint_metrics=67109 size->metrics=58720
size_internal->autohint_metrics=58720 size->metrics=67109
size_internal->autohint_metrics=58720 size->metrics=67109
size_internal->autohint_metrics=67109 size->metrics=234881
size_internal->autohint_metrics=67109 size->metrics=234881
size_internal->autohint_metrics=67109 size->metrics=58720
size_internal->autohint_metrics=67109 size->metrics=58720
Chromium:
size_internal->autohint_metrics=0 size->metrics=220201
size_internal->autohint_metrics=0 size->metrics=58720
size_internal->autohint_metrics=0 size->metrics=62915
size_internal->autohint_metrics=0 size->metrics=62915
size_internal->autohint_metrics=0 size->metrics=62915
size_internal->autohint_metrics=0 size->metrics=58720
size_internal->autohint_metrics=0 size->metrics=220201
size_internal->autohint_metrics=0 size->metrics=58720
size_internal->autohint_metrics=0 size->metrics=62915
size_internal->autohint_metrics=0 size->metrics=62915
size_internal->autohint_metrics=0 size->metrics=62915
size_internal->autohint_metrics=0 size->metrics=58720
size_internal->autohint_metrics=0 size->metrics=58720
size_internal->autohint_metrics=0 size->metrics=58720
size_internal->autohint_metrics=0 size->metrics=62915
size_internal->autohint_metrics=0 size->metrics=62915
size_internal->autohint_metrics=0 size->metrics=62915
size_internal->autohint_metrics=0 size->metrics=62915
size_internal->autohint_metrics=0 size->metrics=62915
size_internal->autohint_metrics=0 size->metrics=62915
size_internal->autohint_metrics=0 size->metrics=220201
--
Markus
- Re: [ft-devel] How does one enable the new slight auto-hinting mode?, (continued)
- Re: [ft-devel] How does one enable the new slight auto-hinting mode?, Nikolaus Waxweiler, 2017/04/28
- Re: [ft-devel] How does one enable the new slight auto-hinting mode?, Werner LEMBERG, 2017/04/28
- Re: [ft-devel] How does one enable the new slight auto-hinting mode?, Nikolaus Waxweiler, 2017/04/29
- Re: [ft-devel] How does one enable the new slight auto-hinting mode?, Markus Trippelsdorf, 2017/04/29
- Re: [ft-devel] How does one enable the new slight auto-hinting mode?, Markus Trippelsdorf, 2017/04/29
- Re: [ft-devel] How does one enable the new slight auto-hinting mode?, Markus Trippelsdorf, 2017/04/29
- Re: [ft-devel] How does one enable the new slight auto-hinting mode?, Werner LEMBERG, 2017/04/29
- Re: [ft-devel] How does one enable the new slight auto-hinting mode?, Markus Trippelsdorf, 2017/04/29
- Re: [ft-devel] How does one enable the new slight auto-hinting mode?, Markus Trippelsdorf, 2017/04/29
- Re: [ft-devel] How does one enable the new slight auto-hinting mode?, Jan Alexander Steffens, 2017/04/29
- Re: [ft-devel] How does one enable the new slight auto-hinting mode?,
Markus Trippelsdorf <=
- Re: [ft-devel] How does one enable the new slight auto-hinting mode?, Werner LEMBERG, 2017/04/30
- Re: [ft-devel] How does one enable the new slight auto-hinting mode?, Markus Trippelsdorf, 2017/04/30
- Re: [ft-devel] How does one enable the new slight auto-hinting mode?, Werner LEMBERG, 2017/04/30
- Re: [ft-devel] How does one enable the new slight auto-hinting mode?, Markus Trippelsdorf, 2017/04/30
- Re: [ft-devel] How does one enable the new slight auto-hinting mode?, Nikolaus Waxweiler, 2017/04/30