Re: [ft-devel] State of TrueType interpreter v38 and up?

2015-12-06 Thread Nikolaus Waxweiler

It must

   (a) ignore changes of the horizontal advance widths due to
   hinting instructions (not implemented yet), and

   (b) ensure that all instructions behave correctly even if the
   horizontal resolution is increased (this is ClearType
   compatibility mode, already implemented).


Ah, okay :) is (a) so complicated or is it that simply nobody did the 
work yet? And regarding your other post dealing with DWRITE equivalents, 
I think FT then with the above only ever does 
DWRITE_RENDERING_MODE_NATURAL_SYMMETRIC, which is probably what we want 
for light mode.



No. This is what *effectively* happens, due to the strongly
increased horizontal resolution. However, at least in `native' mode,
you can still enforce non-integer positions along the x axis.



Such a mode doesn't exist in the MS engine. However, Adobe's
modified TT engine essentially hints only along the y axis, if I've
understood Dave Arnold correctly, replacing x axis hints with
emboldening.


How complicated. So I guess ClearType
- without stem darkening: let font modify x-coordinates at will but 
ignore modifications to advance width
- with stem-darkening: nop everything that deals with x-coordinates and 
embolden just the x-axis? Dave?
The latter would make backwards compatibility irrelevant because we 
would only honor Y-hints anyway, right?



... the MS approach is superior IMHO.  It

   (a) elegantly circumvents many problems due to the extreme
   difference between horizontal and vertical resolution – it
   basically makes the compatibillity mode redundant, and

   (b) the increased resolution is around 10 times in both horizontal
   and vertical direction, compared to a threefold horizontal
   resolution increase of FreeType.


Hm. Something for a hypothetical FreeType 3 :) ClearType patents should 
have run out by then ;)


___
Freetype-devel mailing list
Freetype-devel@nongnu.org
https://lists.nongnu.org/mailman/listinfo/freetype-devel


Re: [ft-devel] State of TrueType interpreter v38 and up?

2015-12-05 Thread Werner LEMBERG

> Mostly as note to my future self, to summarize those rendering modes
> in DWrite terms, please correct me if I got anything wrong: [...]

All what I know is taken from information from

  
https://msdn.microsoft.com/en-us/library/windows/desktop/dd368118(v=vs.85).aspx

You certainly are aware of that link :-)

> In all cases that offer AA, it could be either cleartype or
> grayscale, it's specified separately from rendering mode.  Could it
> mean that in grayscale mode DWrite NATURAL mode is the same as
> GDI_NATURAL?

The above link says something different.

> I remember that symmetric mode is not supported in freetype yet, so
> we can forget about it.

It's exactly the opposite: FreeType *only* supports symmetric mode
(this is, AA for both the horizontal and vertical axis).  Note that
`symmetric' is not related to subpixel rendering – this can only be
applied to a single axis due to the geometry of current LCD screens.

> So the question is what does freetype support from this list,

It seems that FreeType supports DWRITE_RENDERING_MODE_ALIASED and
DWRITE_RENDERING_MODE_NATURAL_CLASSIC.  All other modes have non-AA
along the vertical axis, which FreeType doesn't implement.

> and how can I switch between different modes?

Since the AA and non-AA rasterizers are two different modules in
FreeType, you can change between these two modes simply by using the
proper FT_LOAD_XXX flag.

> I know that one option is a per-library engine version setting, but
> what does it change in terms of those listed modes

The Windows enumerations combine various aspects of both the hinting
engine and the rasterizer, and those combinations are not available
under FreeType.

> (also is there any reason to never switch it back and forth between
> render operations, performance penalty for example?).

I think this question doesn't apply to FreeType.


Werner
___
Freetype-devel mailing list
Freetype-devel@nongnu.org
https://lists.nongnu.org/mailman/listinfo/freetype-devel


Re: [ft-devel] State of TrueType interpreter v38 and up?

2015-12-03 Thread Werner LEMBERG

> I'm interested in adding native ClearType to the definition

`Native' ClearType is implemented.

> If I remember correctly, that is what Infinality set out to do and
> Behdad mentioned that it's slow.

Yes, it's slow.  Improvements welcome.

> How far did the integration go?  What work remains?

There are a whole bunch of improvements for the auto-hinter not yet
integrated, but this doesn't affect the TT engine.

> I reckon my stem darkening work will have to wait until the TrueType
> driver can do native Y-only-hinting..

There is a misunderstanding, see above.  `Native' ClearType doesn't do
y-only hinting!  It's simply that advance width modifications are
ignored in Windows at a later stage, namely in the rasterizer.


Werner

___
Freetype-devel mailing list
Freetype-devel@nongnu.org
https://lists.nongnu.org/mailman/listinfo/freetype-devel


Re: [ft-devel] State of TrueType interpreter v38 and up?

2015-12-03 Thread Nikolaus Waxweiler

Infinality patches are integrated. See in ttinterp.c under |#ifdef
TT_CONFIG_OPTION_SUBPIXEL_HINTING


Ah, okay, so ClearType support is theoretically complete? What about v39 
and v40?



I personally do not like how this is done. Also the truth remains that
ClearType patents will prevent this from wide acceptance in the near
future. By then you will upgrade to a 4k monitor and forget this.


I what way do you not like it? And Werner said something like leaving 
half the hints out is not covered by patents? I thought only subpixel 
rendering is covered by patents? I also fear that crappy LoDPI screens 
will be with us for quite a while...


___
Freetype-devel mailing list
Freetype-devel@nongnu.org
https://lists.nongnu.org/mailman/listinfo/freetype-devel


Re: [ft-devel] State of TrueType interpreter v38 and up?

2015-12-03 Thread Werner LEMBERG
>> Infinality patches are integrated. See in ttinterp.c under |#ifdef
>> TT_CONFIG_OPTION_SUBPIXEL_HINTING
> 
> Ah, okay, so ClearType support is theoretically complete?  What about
> v39 and v40?

ClearType consists of multiple parts.  The first one is the
interpretation of the hints, which is complete (more or less).  The
second one consists how the hinted outlines are converted to raster
images.  There are big differences between the MS engine and FreeType,
which can't be `fixed' without completely redesigning FreeType.

>> I personally do not like how this is done. Also the truth remains
>> that ClearType patents will prevent this from wide acceptance in
>> the near future.  By then you will upgrade to a 4k monitor and
>> forget this.
> 
> In what way do you not like it?  And Werner said something like
> leaving half the hints out is not covered by patents?

The ClearType rendering *filter* is patented, not the ClearType
compatibility mode for hinting instructions.


Werner

___
Freetype-devel mailing list
Freetype-devel@nongnu.org
https://lists.nongnu.org/mailman/listinfo/freetype-devel


Re: [ft-devel] State of TrueType interpreter v38 and up?

2015-12-03 Thread Nikolay Sivov

On 03.12.2015 21:38, Werner LEMBERG wrote:



There is a misunderstanding, see above.  `Native' ClearType doesn't do
y-only hinting!  It's simply that advance width modifications are
ignored in Windows at a later stage, namely in the rasterizer.


I'm confused. Is this "native ClearType" actually called "Natural
ClearType" or "natural advance widths"?


MS created too many buzzwords :-(

   `Native ClearType ' means `no ClearType backwards-compatibility
   mode'

   `natural ClearType mode' is DWrite talk for subpixel positioning

   `natural ClearType widths' is GDI talk for integer pixel positioning
   with subpixel rendering.



Mostly as note to my future self, to summarize those rendering modes in 
DWrite terms, please correct me if I got anything wrong:


DWRITE_RENDERING_MODE_ALIASED

No antialiasing (still hinted I think)

DWRITE_RENDERING_MODE_GDI_CLASSIC

Horizontal direction AA, advances are adjusted.

DWRITE_RENDERING_MODE_GDI_NATURAL

Horizontal direction AA, advances are not adjusted, but still rounded.

DWRITE_RENDERING_MODE_NATURAL

Horizontal axis AA, with subpixel positioning, i.e. no snapping to pixel 
boundaries.


DWRITE_RENDERING_MODE_NATURAL_SYMMETRIC

Both axis AA, with subpixel positioning

DWRITE_RENDERING_MODE_OUTLINE

Raw design outlines, irrelevant in this context.

In all cases that offer AA, it could be either cleartype or grayscale, 
it's specified separately from rendering mode. Could it mean that in 
grayscale mode DWrite NATURAL mode is the same as GDI_NATURAL?


I remember that symmetric mode is not supported in freetype yet, so we 
can forget about it.


So the question is what does freetype support from this list, and how 
can I switch between different modes? I know that one option is a 
per-library engine version setting, but what does it change in terms of 
those listed modes (also is there any reason to never switch it back and 
forth between render operations, performance penalty for example?).





___
Freetype-devel mailing list
Freetype-devel@nongnu.org
https://lists.nongnu.org/mailman/listinfo/freetype-devel


Re: [ft-devel] State of TrueType interpreter v38 and up?

2015-12-03 Thread Nikolaus Waxweiler

MS created too many buzzwords :-(

   `Native ClearType ' means `no ClearType backwards-compatibility
   mode'

   `natural ClearType mode' is DWrite talk for subpixel positioning

   `natural ClearType widths' is GDI talk for integer pixel positioning
   with subpixel rendering.


Now I'm more confused :B


MS Windows doesn't support that, and FreeType doesn't support it
either.


Uh, wait. I thought one of the core ideas of ClearType is that glyphs 
are snapped to the pixel grid only on the Y-axis? By Y-only hinting I 
mean what the slight autohinter and the CFF engine do. Are you telling 
me I'm even more confused? :B And if so, why didn't you say so when I 
posted my documentation update? :O


So what exactly must the TT driver support or imitate so that it fits 
the description of “Use native vertical-grid-only-snapping if driver and 
font supports it [...]”? If I understand correctly, FT already does 
subpixel positioning and natural advance widths in light mode 
(autohinter, CFF)?



The latter: MS uses super-sampling, which *virtually* increases the
device resolution by a factor of 10 or so, while FreeType does
*really* increase the resolution.


Ah. I take it those differences don't matter? Any known advantages and 
disadvantages to either approach?



___
Freetype-devel mailing list
Freetype-devel@nongnu.org
https://lists.nongnu.org/mailman/listinfo/freetype-devel


Re: [ft-devel] State of TrueType interpreter v38 and up?

2015-12-03 Thread Nikolaus Waxweiler

There are a whole bunch of improvements for the auto-hinter not yet
integrated, but this doesn't affect the TT engine.


Mhm, sounds like a job for me. I'll put it somewhere on my todo list :P


There is a misunderstanding, see above.  `Native' ClearType doesn't do
y-only hinting!  It's simply that advance width modifications are
ignored in Windows at a later stage, namely in the rasterizer.


I'm confused. Is this "native ClearType" actually called "Natural 
ClearType" or "natural advance widths"? I guess that's something FT 
already does? What I meant to say is I want the part of ClearType that 
does Y-only hinting.



ClearType consists of multiple parts. The first one is the
interpretation of the hints, which is complete (more or less).


This, I guess? I don't fully understand the description of the 
interpreter versions. Does GETINFO == 39 (v2.0) and 40 (v2.1) bring 
anything to the table that would be relevant to FT?


A quick search didn't turn up any specifications except that one guide 
for how ClearType tries to be backwards compatible...



The second one consists how the hinted outlines are converted to
raster images. There are big differences between the MS engine and
FreeType, which can't be `fixed' without completely redesigning
FreeType.


Could you provide some specifics? Do you mean how the rasterizer handles 
anti-aliasing and subpixel-rendering?


___
Freetype-devel mailing list
Freetype-devel@nongnu.org
https://lists.nongnu.org/mailman/listinfo/freetype-devel


Re: [ft-devel] State of TrueType interpreter v38 and up?

2015-12-03 Thread Werner LEMBERG

>> There is a misunderstanding, see above.  `Native' ClearType doesn't do
>> y-only hinting!  It's simply that advance width modifications are
>> ignored in Windows at a later stage, namely in the rasterizer.
> 
> I'm confused. Is this "native ClearType" actually called "Natural
> ClearType" or "natural advance widths"?

MS created too many buzzwords :-(

  `Native ClearType ' means `no ClearType backwards-compatibility
  mode'

  `natural ClearType mode' is DWrite talk for subpixel positioning

  `natural ClearType widths' is GDI talk for integer pixel positioning
  with subpixel rendering.

> What I meant to say is I want the part of ClearType that does Y-only
> hinting.

MS Windows doesn't support that, and FreeType doesn't support it
either.

> Does GETINFO == 39 (v2.0) and 40 (v2.1) bring anything to the table
> that would be relevant to FT?

Versions 39 and 40 essentially add different rendering modes only,
which isn't directly relevant to FreeType.

>> The second one consists how the hinted outlines are converted to
>> raster images.  There are big differences between the MS engine and
>> FreeType, which can't be `fixed' without completely redesigning
>> FreeType.
> 
> Could you provide some specifics?  Do you mean how the rasterizer
> handles anti-aliasing and subpixel-rendering?

The latter: MS uses super-sampling, which *virtually* increases the
device resolution by a factor of 10 or so, while FreeType does
*really* increase the resolution.


Werner

___
Freetype-devel mailing list
Freetype-devel@nongnu.org
https://lists.nongnu.org/mailman/listinfo/freetype-devel


[ft-devel] State of TrueType interpreter v38 and up?

2015-12-02 Thread Nikolaus Waxweiler

Hey,
so I was wondering what work exactly is left to support TT interpreter 
v38 and up? I'm interested in adding native ClearType to the definition 
of slight and Jan says, we need v38 and up for that. If I remember 
correctly, that is what Infinality set out to do and Behdad mentioned 
that it's slow. How far did the integration go? What work remains? Are 
there fundamental problems? I reckon my stem darkening work will have to 
wait until the TrueType driver can do native Y-only-hinting..


Regards,
Nikolaus :)

___
Freetype-devel mailing list
Freetype-devel@nongnu.org
https://lists.nongnu.org/mailman/listinfo/freetype-devel