freetype-devel
[Top][All Lists]
Advanced

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

Re: [ft-devel] various questions about implementing ttf


From: Werner LEMBERG
Subject: Re: [ft-devel] various questions about implementing ttf
Date: Tue, 06 Dec 2016 06:58:46 +0100 (CET)

>>> 1. Are there fonts designed for the purpose of debuging
>>>    interpreters?
>
>> Not really, AFAIK.  You can however compare the results of
>> FreeType's `ttdebug' program with your stuff.  Additionally,
>> Microsoft's VTT is also available.
>
> Great. This will help me.

You have seen yesterday's announcement of

  
http://blog.typekit.com/2016/12/04/annotated-opentype-specification-software-now-open-source

I suppose.  I haven't had a look yet, but maybe bytecode issues are
covered also.

> using "pointsize", and give intended sampling through MPPEM.
>
>>> 3. CVT-table (from font-file):
>>>   spec unclear (apple says 4 bytes per elem),
>
>> Unclear?  4 bytes per element is correct.
>
> According to
>
> https://www.microsoft.com/typography/otspec/cvt.htm
>
> it's an array of FWORDS, wich in turn are 16 Bit FUnits:
>
> https://www.microsoft.com/typography/otspec/otff.htm

Ah, ok.  Never trust the memory :-)  And Apple is wrong!

  https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6cvt.html

It's obviously a typo: You get the size by dividing the length in the
`table directory' by 2, not by 4.

>> The basic unit for bytecode is 1/64th pixel, and you *always* scale
>> by PPEM, not pointsize – while the latter is absolute, it has no
>> connection to the output device resolution.
>
> But the CVT-entries don't have their own direction-vector.

Right.  You have to maintain an array of scaled CVT entries that must
be updated after `prep' is run.

> For example. assume the prep program has left the projection vector
> at a non-default value when it finished.  Should subsequent glyph
> programs all start up with that projection vector, or should they
> start up with the default?

You should start with the default.

>>>    What about zone0 init?
>
>> Missing in the spec, but it is always reset and re-initialized in
>> the MS implementation before a glyph gets rendered, IIRC.
>
> Hmn, ok, but there are fragments of memo in my brain that I might
> have read exactly the opposite somewhere, something like: let the
> prep govern the storage AND CVT values for the glyph progs.  Buut I
> can't find it back, maybe the memo-fragment is wrong.

???  What has zone 0 to do with storage and CVT?

> I have already implemented most bytecode commands, and none of wich
> makes use of this state, even those that according to some specs
> would use it (without mention how).
>
> For example, the GC[a] command as described here:
> https://developer.apple.com/fonts/TrueType-Reference-Manual/RM05/Chap5.html#GC
>
> In the OpenType specs, the dual projection vector doesn't appear in
> the list of used states for GC[a].

Bad documentation, alas.

> So does it probably have to anything to do with these old
> angle-related commands that are already obsolete?

No, they *are* used in those commands.  I recommend to check the
FreeType implementation.  For example, there is the following comment
for GC and MD:

  XXX: UNDOCUMENTED: Measures from the original glyph must be taken
       along the dual projection vector!


    Werner

reply via email to

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