Re: U.F.O. 3 Implementation Questions

Martin Hosken <[email protected]>
Newsgroups gmane.comp.fonts.fontforge.devel
Message-ID <20131207091037.3bd82702@sil-mh6>
Dear Dave,

> Yes! UFO is used as a file interchange format, so that you can edit a
> font in several task-specific editors at the same time. So if you LOSE
> information when round tripping a UFO through FontForge, this is a
> disaster.

I agree.

> 
> Therefore, one simple 'unit test' style test to apply to the UFO
> load/save code, is that opening a UFO and the saving it with a new
> file name should give a 0 size diff. This is formally called 'binary
> idempotence' I believe. http://en.wikipedia.org/wiki/Idempotence

That's a little strong, perhaps we can say normal(ufo) == normal(ff(ufo)). That is FF doesn't have to save the UFO in exactly the same plist order or surface textual format as every other tool out there.

One thing I think that is needed is some kind of normalization of ufo that allows for easy version control. I wonder if we were to tweak the output process of ff, whether ff could become that normalizer? Is this something we would like to see happen? For example, a line based vcs is going to do a better job on:

	<key>ascender</key><integer>1010</integer>

than

	<key>ascender</key>
	<integer>1010</integer>

which is what we have at the moment.

Although something like this is probably open to debate as to what is really needed for good vcs.

> I guess we can have a FF convention to support the Font -> Layer
> objects, similar to the public.* convention described in
> http://unifiedfontobject.org/versions/ufo3/layercontents.html -
> perhaps like public.background we can have fontforge.guide.* ?

I think a standard mapping between ff and public.* would be helpful.

Yours,
Martin

------------------------------------------------------------------------------
Sponsored by Intel(R) XDK 
Develop, test and display web and hybrid apps with a single code base.
Download it for free now!
http://pubads.g.doubleclick.net/gampad/clk?id=111408631&iu=/4140/ostg.clktrk
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.