Apologies, it was not my intent to bikeshed. As I said before, I'm looking
forward to seeing his results. Either way, happy to offer my experiences
off-thread if desired.

On Thu, Jun 4, 2020 at 1:28 PM Alexei Podtelezhnikov <apodt...@gmail.com>
wrote:

> Jim, Behdad,
>
> Please hold your horses. This is Anuj's GSoC project for this summer.
> It is not nice to take it over until September. For now, please let
> him explore the field. Feel free to discuss your own implementation in
> a separate thread or at least povide some explanation instead of
> abrupt "8.8 makes more sense" or "when I was at Google". This is
> highly inappropriate as you had your chance to contribute Distance
> Fields before May and will have it after September.
>
> Best regards,
> Alexei
>
>
>
>
> On Thu, Jun 4, 2020 at 12:39 PM Behdad Esfahbod <beh...@behdad.org> wrote:
> >
> > Thanks Jim.
> >
> > A 2.14 representation when 1 unit = 1em is sufficient.  If we are
> talking pixels then 10.6 or better 8.8 makes more sense.  And I agree that
> the pixel values are more useful to clients than em values.
> >
> > On Thu, Jun 4, 2020 at 8:35 AM Jim Van Verth <jvanve...@google.com>
> wrote:
> >>
> >> Behdad,
> >>
> >> Thanks for the pointer to cu2qu, I'll take a look at it. I assume
> you're suggesting we use that in place of GrPathUtils::convertCubicToQuads.
> I believe in our case we chop at inflections to avoid artifacts from our
> resolution independent curve rendering.
> >>
> >> As far as scale for our SDFs, 1 unit in distance is one pixel. And
> Anuj, I'm not sure 2.14 is enough precision in the integer part. It's been
> a while, but I believe I got better results with at least 3 bits of integer.
> >>
> >> On Wed, Jun 3, 2020 at 6:33 PM Behdad Esfahbod <beh...@behdad.org>
> wrote:
> >>>
> >>> Jim,
> >>>
> >>> I see that in your implementation you are converting cubics to
> quadratic spline.  That makes a lot of sense and I support that.  For the
> conversion though, I see a messy piece of code, which is typical of that
> kind of thing.  I like to introduce you to cu2qu algorithm which we
> designed and implemented back when I was at Google.  It has a much simpler
> algorithm, which is very robust by design and has been used in production
> of thousands of fonts in recent years with no bug report whatsoever.  The
> core algorithm is very simple:
> >>>
> >>>
> https://github.com/googlefonts/cu2qu/blob/master/Lib/cu2qu/cu2qu.py#L218
> >>>
> >>> Here's a highlevel description of the algorithm:
> >>>
> >>>   https://github.com/googlefonts/cu2qu/issues/10
> >>>
> >>> This was specifically designed to have very good behavior for encoding
> the results in a 'glyf' table.  But is useful for more general uses as well.
> >>>
> >>> It would work much better if we break the input curve on cusps if
> any.  But even that has not been an issue:
> >>>
> >>>   https://github.com/googlefonts/cu2qu/issues/6
> >>>
> >>> Cheers,
> >>> behdad
> >>>
> >>>
> >>> On Wed, Jun 3, 2020 at 3:16 PM Behdad Esfahbod <beh...@behdad.org>
> wrote:
> >>>>
> >>>> Hi Jim, others,
> >>>>
> >>>> Thanks for your input.  I've been meaning to get into the discussion
> as well but didn't get to.
> >>>>
> >>>> I support your suggestions: generate from vector instead of bitmap,
> as well as 8-bit 3.5 fixed point or similar at least as an option.  In your
> 3.5 fixed-point, does one unit reflect 1em, or 1 pixel at the SDF size?
> >>>>
> >>>> I think we do want a 8bit representation at least, and possible a
> higher one.
> >>>>
> >>>> On Wed, Jun 3, 2020 at 10:26 AM Jim Van Verth <jvanve...@google.com>
> wrote:
> >>>>>
> >>>>> Forgive me for coming into this late -- a colleague pointed me to
> this thread a couple of days ago and I'm just catching up. I work on Skia,
> and we've been generating SDFs from glyphs for quite some time now, so the
> possibility of just getting them from Freetype is pretty exciting.
> >>>>>
> >>>>> I hope you don't mind some comments on what we have now. We
> currently use the Gustavson algorithm to generate them from bitmaps but it
> produces slightly fuzzy results. I have wanted to move to use this
> algorithm to generate them directly from the outline which might be useful
> to you:
> >>>>>
> https://skia.googlesource.com/skia/+/refs/heads/master/src/gpu/GrDistanceFieldGenFromVector.cpp
> >>>>> We use it to store atlased paths at the moment and it produces much
> better results.
> >>>>>
> >>>>> As far as format, we use an 8-bit 3.5 fixed point format, because it
> allows us to combine the SDF and bitmap glyphs into the same atlas to
> conserve space. There is a sacrifice in quality, but we only use the SDFs
> for larger glyphs so it's acceptable.
> >>>>>
> >>>>> If you would like more details on our implementation please let me
> know. I'm looking forward to seeing how this turns out.
> >>>>>
> >>>>
> >>>>
> >>>> --
> >>>> behdad
> >>>> http://behdad.org/
> >>>
> >>>
> >>>
> >>> --
> >>> behdad
> >>> http://behdad.org/
> >>
> >>
> >>
> >> --
> >>
> >> Jim Van Verth | Software Engineer | jvanve...@google.com | 919-210-7664
> <(919)%20210-7664>
> >>
> >
> >
> > --
> > behdad
> > http://behdad.org/
>
>
>
> --
> Alexei A. Podtelezhnikov, PhD
>


-- 

Jim Van Verth | Software Engineer | jvanve...@google.com | 919-210-7664

Reply via email to