Re: [fonc] Morphic 3 defensive disclosure

2014-09-18 Thread J. Vuletich (mail lists)

Hi Dan,

(redending without attachs)

Quoting Dan Amelang daniel.amel...@gmail.com:


Hi Juan,

Glad that you're making progress! One question: how hard would it be to use
a TrueType font (or any fill-based font) with your rasterizer? And, I would
be interested in comparing the visual results of rendering 1) a TrueType
font via FreeType, 2) a TrueType font via your Morphic 3 rasterizer, 3)
your stroke font via the Morphic 3 rasterizer.



It is some work, as the TrueType font needs to be imported. I already  
did this for DejaVu, printing a text sample to pdf, then converting  
that to svg with Inkscape, and then loading the svg in Cuis / Morphic  
3 and using a CodeGeneratingCanvas to write the Smalltalk code for  
me. https://dl.dropboxusercontent.com/u/13285702/M3-TTF.png is a  
sample image using just that font.

And, I would be interested in comparing the visual results of rendering
1) a TrueType font via FreeType, 2) a TrueType font via your Morphic 3
rasterizer, 3) your stroke font via the Morphic 3 rasterizer.
Taking a look at M3-TTF.png, and the original  
https://dl.dropboxusercontent.com/u/13285702/M3.png , and comparing  
with FreeType samples (for example, the regular Cuis fonts), I think  
that (sorted by visual quality):


a) For pointSize =14
  1) Morphic 3 / StrokeFont with autohinting
  2) Feetype / TrueType with autohinting
  3) Morphic 3 / TrueType (no autohinting possible yet)
Note 1: For M3/TTF I could take the autohinting algorithm from  
Freetype, and quality would be at least on par with it, for point  
sizes = 9
Note 2: For point sizes  9 (fills less than one pixel), M3/TTF  
produces color fringes. I think this can be enhanced with some work.
I didn't spend much time on these issues, as I focused on StrokeFonts,  
that give best results, at least for a programming environment.  
Applications might need TTF, and there are possible enhancements to be  
done.


b) Rotated text. Here the difference in quality is rather small.
  1) Morphic 3 / StrokeFont (autohinting off)
  2) Feetype / TrueType
  3) Morphic 3 / TrueType

c) Point sizes  14. Here I think the three alternatives look really  
good, no autohinting is needed, and there is no clear winner. (Same  
would go for most point sizes on a Retina or other hi dpi display,  
such as phones.)




I know option 3) produces the best quality, I'm just interested in the
visual details. Such a comparison might also be helpful to showcase and
explain your work to others.



It is also worth noting that the usual Cairo + Freetype (or Cairo +  
Pango + Freetype) combo uses different algorithms for text and  
graphics, as Freetype can do much better than Cairo, but can not do  
general vector graphics. But Morphic 3 gives the same top quality for  
vector graphics too, as text is done simply by calling the svg like  
graphics primitives. Where Morphic 3 really stands out is when  
comparing against Cairo for drawing vector graphics!


I hope this helps.

Cheers,
Juan Vuletich



Dan

On Wed, Sep 17, 2014 at 6:25 AM, J. Vuletich (mail lists) 
juanli...@jvuletich.org wrote:


Hi Dan, Folks,

I finally published the Morphic 3 code in its current state. It is still
unfinished, and in need of cleanup. I hope you are still interested in this
stuff.

See http://jvuletich.org/pipermail/cuis_jvuletich.org/
2014-September/001692.html I attached there a demo image with some SVG
drawings, and some text at rather small sizes, and some rotated text too.
This took me a lot of time, because for maximum text quality I had to
design a new font, based on pen strokes (and not fills!). I based it on the
technical lettering I learned at high school.

I think I'm now close to the limit of what is possible on regular LCDs
when trying to optimize crispness, absence of pixellation and absence of
color fringes. What I need to do now is to fill in some details, then
optimization and a VM plugin. Then it could become the default graphics
engine for Cuis ( www.cuis-smalltalk.org ).

Cheers,
Juan Vuletich

Quoting Dan Amelang daniel.amel...@gmail.com:

 Hi Juan,


I think it's great that you are sharing your rasterization approach.
So far it sounds pretty interesting. FWIW, after you've released the
code, I would be interested in using this approach to create a higher
quality, drop-in replacement for the current Rasterize stage in the
Gezira rendering pipeline.

Best,

Dan

On Tue, Dec 3, 2013 at 6:24 PM, J. Vuletich (mail lists)
juanli...@jvuletich.org wrote:


Hi Folks,

The first defensive disclosure about Morphic 3 has been accepted and
published at
http://www.defensivepublications.org/publications/prefiltering-
antialiasing-for-general-vector-graphics
and http://ip.com/IPCOM/000232657 ..

Morphic 3 is described at
http://www.jvuletich.org/Morphic3/Morphic3-201006.html

This paves the way for releasing all the code, as no one will be able to
patent it.

Cheers,
Juan Vuletich

___
fonc mailing list
fonc@vpri.org

[fonc] Earley Parsing Explained (incomplete first draft)

2014-09-18 Thread Loup Vaillant-David
Hi,

After spending months banging my head over Earley Parsing, I have
decided to write a tutorial.  Ian once said Earley parsing is simple
and easy to implement.  I agree with simple, but not with easy.
The required background knowledge is not trivial.

This tutorial is an attempt to gather this knowledge in one place.
Nothing fancy, no deep math, no proof of correctness.  Just a
(hopefully) intuitive explanation of the concepts, needed to implement
Earley parsing.  The goal is to help competent programmers who know
little about parsing to write their own Earley parsing framework.

So far, I have done most of the recogniser.  The following pages are
done, and up for review:

http://loup-vaillant.fr/tutorials/earley-parsing/
http://loup-vaillant.fr/tutorials/earley-parsing/what-and-why
http://loup-vaillant.fr/tutorials/earley-parsing/chart-parsing
http://loup-vaillant.fr/tutorials/earley-parsing/recogniser

Questions and criticisms are most welcome.  I'd like to know about any
factual inaccuracy, poor wording, confusing explanation… please don't
hesitate to question anything, even the structure of this tutorial.

Enjoy, and thanks,
Loup.
___
fonc mailing list
fonc@vpri.org
http://vpri.org/mailman/listinfo/fonc


Re: [fonc] Earley Parsing Explained (incomplete first draft)

2014-09-18 Thread Julian Leviston
On 19 Sep 2014, at 7:11 am, Loup Vaillant-David l...@loup-vaillant.fr wrote:

 Hi,
 
 After spending months banging my head over Earley Parsing, I have
 decided to write a tutorial.  Ian once said Earley parsing is simple
 and easy to implement.  I agree with simple, but not with easy.
 The required background knowledge is not trivial.
 

Easy is pretty subjective! What's easy to my a 6 year old is not going to be 
easy for a 50 year old, and vice versa.
Perhaps you mean approachable to someone of average intellect and cultural 
heritage?

 This tutorial is an attempt to gather this knowledge in one place.
 Nothing fancy, no deep math, no proof of correctness.  Just a
 (hopefully) intuitive explanation of the concepts, needed to implement
 Earley parsing.  The goal is to help competent programmers who know
 little about parsing to write their own Earley parsing framework.
 
 So far, I have done most of the recogniser.  The following pages are
 done, and up for review:
 
 http://loup-vaillant.fr/tutorials/earley-parsing/
 http://loup-vaillant.fr/tutorials/earley-parsing/what-and-why
 http://loup-vaillant.fr/tutorials/earley-parsing/chart-parsing
 http://loup-vaillant.fr/tutorials/earley-parsing/recogniser
 
 Questions and criticisms are most welcome.  I'd like to know about any
 factual inaccuracy, poor wording, confusing explanation… please don't
 hesitate to question anything, even the structure of this tutorial.
 
 Enjoy, and thanks,
 Loup.


I really like your writing style!

One criticism I'd have is there aren't any pointers to people who don't have 
programming language construction backgrounds. So, perhaps adding a 
pre-requisite reading list at the beginning aimed at bringing someone who has 
finished high school and nothing else up to speed...

This is perhaps my general criticism of most technical work. The assumed 
knowledge is high, and it shouldn't be. As more and more people get involved in 
computing, this means there can be less and less assumed backgrounds. I wrote 
about good code and by extension good writing a while back here: 
http://www.genericoverlords.com/good_coding

Julian

http://www.getcontented.com.au/ - You Need GetContented - Get Your Website 
Happy. :)___
fonc mailing list
fonc@vpri.org
http://vpri.org/mailman/listinfo/fonc


Re: [fonc] Morphic 3 defensive disclosure

2014-09-18 Thread Dan Amelang
Hi Juan,

Thanks for the screenshots, that helps a lot! Now, it would be ideal to
have a visual like this to for the comparison:
http://typekit.files.wordpress.com/2013/05/jensonw-900.png. But, I know
that you've got limited time to work on this, and such a thing wouldn't be
very high priority. Maybe down the road.

Also, comparing your renderer+stroke font to the recently open sourced
Adobe font rasterizer would be interesting, too (
http://blog.typekit.com/2013/05/01/adobe-contributes-cff-rasterizer-to-freetype/).
As far as I can tell, Adobe's rasterizer is pretty much the the
state-of-the-art rasterizer for outline font rasterization. If you're
making the case that outline fonts are intrinsically unable to match the
quality of your stroke font, this comparison would be a convincing way to
do so.

Going back to the topic of Morphic 3 rendering TrueType fonts,  I'm
attaching a few unfiltered zooms from your M3-TTF.png (your more recent
M3-TTF-5.png looks the same in these areas). Notice the saturated colors in
the middle of the black text. You mentioned that you have color fringing
problems with 9 point sizes, but this font is about 12pt and the problem
doesn't look like color fringing (i.e., the coloring isn't light nor just
on the fringes, see
http://typekit.files.wordpress.com/2010/10/gdi-cleartype.png for what I
understand color fringing to look like). Maybe something else is going on
here?

Back to your comments...I also like the idea of having a single rasterizer
for text and general graphics. At least one that can be just parametrized
or extended to handle text nicely as needed.

Yes, there is no question that one can improve on the visual output of the
popular rasterizers (cairo, skia, antigrain, qt, etc.). The question has
always been at what cost to software complexity and at what cost to
performance.

I wasn't able to mentally separate your rasterization code from the rest of
the Morphic 3 code (I'm not a big Smalltalker, so maybe it's just me), so I
couldn't evaluate the complexity cost. It also looked like there were
several optimizations mixed in that could have thrown off my understanding.

Would you be interested in creating a clean, totally not optimized (and
thus slow), stand alone version of the rasterizer just for exposition
purposes? Something for people like me to learn from? Again, I know you
have very limited time. No rush.

Dan

On Thu, Sep 18, 2014 at 6:38 AM, J. Vuletich (mail lists) 
juanli...@jvuletich.org wrote:

  Hi Dan,

 Quoting Dan Amelang daniel.amel...@gmail.com:

  Hi Juan,

 Glad that you're making progress! One question: how hard would it be to
 use a TrueType font (or any fill-based font) with your rasterizer?


 It is some work, as the TrueType font needs to be imported. I already did
 this for DejaVu, printing a text sample to pdf, then converting that to svg
 with Inkscape, and then loading the svg in Cuis / Morphic 3 and using a
 CodeGeneratingCanvas to write the Smalltalk code for me. The attach is a
 sample image using just that font.

  And, I would be interested in comparing the visual results of rendering
 1) a TrueType font via FreeType, 2) a TrueType font via your Morphic 3
 rasterizer, 3) your stroke font via the Morphic 3 rasterizer.


 Taking a look at the attach, and the original attach in the mail linked
 below, and comparing with FreeType samples (for example, the regular Cuis
 fonts), I think that (sorted by visual quality):

 a) For pointSize =14
   1) Morphic 3 / StrokeFont with autohinting
   2) Feetype / TrueType with autohinting
   3) Morphic 3 / TrueType (no autohinting possible yet)
 Note 1: For M3/TTF I could take the autohinting algorithm from Freetype,
 and quality would be at least on par with it, for point sizes = 9
 Note 2: For point sizes  9 (fills less than one pixel), M3/TTF produces
 color fringes. I think this can be enhanced with some work.
 I didn't spend much time on these issues, as I focused on StrokeFonts,
 that give best results, at least for a programming environment.
 Applications might need TTF, and there are possible enhancements to be done.

 b) Rotated text. Here the difference in quality is rather small.
   1) Morphic 3 / StrokeFont (autohinting off)
   2) Feetype / TrueType
   3) Morphic 3 / TrueType

 c) Point sizes  14. Here I think the three alternatives look really good,
 no autohinting is needed, and there is no clear winner. (Same would go for
 most point sizes on a Retina or other hi dpi display, such as phones.)

  I know option 3) produces the best quality, I'm just interested in
 the visual details. Such a comparison might also be helpful to showcase
 and explain your work to others.


 It is also worth noting that the usual Cairo + Freetype (or Cairo + Pango
 + Freetype) combo uses different algorithms for text and graphics, as
 Freetype can do much better than Cairo, but can not do general vector
 graphics. But Morphic 3 gives the same top quality for vector graphics too,
 as text is done simply by