Bedstead claims to be written in ISO C. ISO C allows "int" to be only
16 bits wide, which is a bit of a problem. In fact, it's not much of
a problem because Bedstead mostly deals in small numbers. The main
exception is Unicode code points, which can exceed 16 bits.
To hopefully fix this, Bedstead now mostly uses "long" for Unicode
code points. The main exception is in the gklph table where that
seems a bit profligate on 64-bit systems so I've used int_least32_t
instead.
The fiddliest bits of this are around uses of printf(), which cares
whether it's being passed an "int" or a "long".
This is untested on an actual 16-bit system, but at least on a 64-bit
system it continues to produce correct results.
Specifically this changes the comments on IPA characters to refer to
them in lower-case even though the official names of these characters
are upper-case. I did this because it was annoying not being able to
tell the case of a letter from its comment.
In addition to their obviously distinctive national characters, the
SAA5051 and SAA5052 also change the shape of some standard characters
compared to the SAA5050. I had spotted some of these, but noticed
several more when using an actual SAA5051 in my Acorn System 3. The
unusual characters are apparently much easier to spot on screen than
in a datasheet.
Now, I think, we actually have the correct characters for each of
these chips. In many cases, they're the same as one another, and in
those cases I've aliased the glyphs.
The final versions of letters should obviously come after the normal
ones. While I'm there, I've also put the variant phi after the ordinary
one.
Thanks to Adam for pointing this out.
Bedstead has actually had external contributions, so it seems reasonably
to set out how I handle them.
This was inspired by Valerie Aurora and by the contributions and credits
policy guide created by members of the RIPE Open Source Working Group.
The small-caps and 'rtlm' lookups now come before the stylistic sets.
This is appropriate because the former make changes to the semantics
of characters and so should take priority over mere stylistic changes.
'palt' comes last because it can only reasonably be applied to the
actual glyphs being rendered.
Almost no new glyphs, because the existing accented caps glyphs are
themselves small. I'm not quite sure which glyphs small caps need to
be visually distinct from, so for now I won't worry about that.
I liked the approach I took with 'rtlm' of putting variant glyphs next
to the standard ones in the glyph array. So I've tried doing the same
with small caps. Each small cap appears at least twice. For ones with
real Unicode code points, the 'c2sc' version is an alias for the native
one. For small caps without Unicode code points, the 'c2sc' version is
the actual small cap glyph. In either case, the 'smcp' version is an
alias for the 'c2sc' one. This is a change from the previous setup,
where the 'c2sc' version was an alias for the 'smcp' one instead. I've
swapped them because the small cap glyph is generally based on the full
cap, so putting them together seems sensible.
As far as I can tell, the "GaspTable" line that I put in the SFD file
has never actually worked. I don't think I want it to anyway: even
when the source pixels line up precisely with the display pixels, it's
still worth having anti-aliasing on the diagonal lines. And of course
none of this would work properly for any width other than the default
one.
So overall, it doesn't work, and if it did I'd want it to stop. So
let's remove it.
These are characters that have the Bidi_Mirroring_Glyph but don't
appear in the OpenType Mirroring Pairs List (OMPL). In a couple of
cases, these are listed by Unicode as "best fit" and I think I should
actually redraw the tildes the other way around.
This implements the Bidi_Mirrored Unicode property for those characters
that don't have a Bidi_Mirroring_Glyph. These are the characters listed
at the end of BidiMirroring-15.1.0.txt. I haven't yet assigned them PUA
code-points. The characters with a Bidi_Mirroring_Glyph that don't
appear in the OpenType Mirroring Pairs List (OMPL) still need aliases
added.
The TeX "unicode-math" package conveniently lists a bunch of characters
that it treats as the kind of large operator that takes limits. Bedstead
has a standard treatment for these, stretching them over the full height
of the character cell. So I've drawn some that are in Plain TeX or
otherwise reasonably easy. One exception is the n-ary square cap and
cup operators because I can't work out how to distinguish them from the
n-ary product and coproduct.
This is usually five-pointed, and I seem to have come up with an
acceptable five-pointed design. This matches the existing U+235F APL
FUNCTIONAL SYMBOL CIRCLE STAR. U+2363 APL FUNCTIONAL SYMBOL STAR
DIAERESIS is modified to match.
It looks like these will have an official mapping in the next version of
Unicode, so I'll leave out the PUA mapping and put in a proper mapping
once they're in Unicode proper.
This reverts commit dd35eed4ed411ca3468306f5a281118cef8a2f28.