Apart from main(), of course. Everything else is now file-scoped at
most. This is more consistent, and might allow for more
optimisations (if I ever used -O).
The cleanup itself is good, but emit_paths() will need enhancement.
At the moment, it assumes that all paths are closed, so it doesn't
matter where on a path it starts emitting it. With an open path,
though, it's important to emit it starting at one end, so there will
have to be a mechanism for distinguishing open from closed paths and
behaving accordingly.
It was obviously wrong that the <ul> on the Bedstead Web page had
circular bullets. The current CSS Lists and Counters working draft,
<http://www.w3.org/TR/2014/WD-css-lists-3-20140320/>, allows for setting
the bullet to a string, and Firefox 54 supports this, so use it in the
CSS for Bedstead's Web page.
The names of the widths now track those in the OpenType 'OS/2' table, so
the former condensed and semicondensed are now ultra-condensed and
extra-condensed, and there are new condensed and semi-condensed widths
to fill the gaps. Also, the fonts are named more consistently with
Adobe's practice: "Bedstead Semi Condensed" and so forth.
The new Bedstead Condensed makes a pretty decent terminal font, which is
a nice side-effect.
I've reduced the size of the bidental percussive in general since it
seems to be based on the dental diacritic. Having done that, it fits
in the x-height, which is sensible since IPA is generally lower-case,
and then it seems sensible to make the bilabial percussive fit in the
x-height too.
Everyone seems to prefer the Zehlendorfer version, so that's the one
I've chosen. Also add a small-cap version because I can (though the
shortage of mappings for accented characters means that 'smcp' doesn't
really work in German yet).
The new one is more distinct from U+0266 LATIN SMALL LETTER H WITH
HOOK, but sadly not actually an inverted 'y' any more. 6x13 does the
same, so I only feel slightly guilty.
This avoids an infinite loop if one of them is inadvertently (or
advertently) set. Why might one be set advertently? Well, it would
allow us to replace our long lists of numbers with short strings. For
instance, the U+0024 DOLLAR SIGN glyph is "NUTNEUN". Sadly that would
make the program incompatible with non-ASCII systems and since I claim
ANSI C I should probably continue to support those.
We now draw in units of half a design unit (1/2000 em), and then scale
to normal design units when outputting paths. This allows for the
future possibility of producing fractional co-ordinates.