379 Commits

Author SHA1 Message Date
Ben Harris
d196eef561 Use the global nglyphs variable in glyph_complement() 2024-08-17 00:11:11 +01:00
Ben Harris
cbbb1a6533 Convert indentation to tabs where it had been spaces
Now that at least my own edits shouldn't break this.
2024-07-10 21:01:45 +01:00
Ben Harris
69dafd7b02 Add Emacs file variables to bedstead.c
These set the C indentation style and tab usage to what's traditional
in this file.
2024-07-10 20:57:27 +01:00
Ben Harris
e6128359b5 Condense weight and width tables
They're really very small and putting each weight and width on a
single line makes them much more readable.
2024-07-10 14:58:15 +01:00
Ben Harris
1281b34c53 16-bit safety, maybe
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.
2024-07-10 14:57:49 +01:00
Ben Harris
08bbcb04f6 Use bool, true, and false in more places
There were still places where I was storing booleans in int variables
and explicitly using 0 and 1.
2024-07-10 14:47:34 +01:00
Ben Harris
c9ce6d79a9 Adjust comments to match case of characters
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.
2024-07-07 16:14:56 +01:00
Ben Harris
3a5f15e112 Latin small caps complete (probably) 2024-07-07 00:33:31 +01:00
Ben Harris
036d2b3e15 New question mark for SAA5051 and SAA5052
It's a different shape from the one used by the other chips.  Checked
against the 1982 datasheet and a real SAA5051.
2024-06-24 23:24:30 +01:00
Ben Harris
1d7a9aa164 Improvements to SAA5051 and SAA5052 characters
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.
2024-06-20 23:06:14 +01:00
Ben Harris
fb5e209f40 U+2139 TURNED NOT SIGN 2024-06-04 14:59:09 +01:00
Ben Harris
6700ff3672 Re-order OpenType lookups to be more sensible
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.
2024-06-03 00:50:38 +01:00
Ben Harris
3da2d72ab3 Small caps for Latin Extended-A 2024-06-02 21:57:14 +01:00
Ben Harris
8a95a216d3 Latin-1 small caps
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.
2024-06-02 20:55:38 +01:00
Ben Harris
ae6caa5bd8 Re-organise Latin small caps (no functional change)
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.
2024-06-02 20:16:27 +01:00
Ben Harris
4757465cde Stop trying to create a 'gasp' table
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.
2024-06-02 17:55:08 +01:00
Ben Harris
0f03141ebd Redesigned U+2203 THERE EXISTS
There seems to be a consensus that the three bars should be the same
length, and that distinguishes the 'rtlm' version from a capital 'E'.
2024-06-02 16:55:05 +01:00
Ben Harris
a8f205ad4c Add Private Use Area mapping for 'rtlm' glyphs
I've gone for U+F100 upwards because I expect there to be more than the
31 I've currently got.
2024-06-02 16:50:51 +01:00
Ben Harris
1c64ed5016 New 'rtlm' versions of subset/superset tilde
These versions have the tilde reversed, which I think is the right
thing to do.
2024-06-02 14:21:57 +01:00
Ben Harris
aa596a604b Alias mappings for 'rtlm'
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.
2024-06-02 14:21:57 +01:00
Ben Harris
bddc409560 Add 'rtlm' (right-to-left mirrored) lookup
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.
2024-06-02 14:21:57 +01:00
Ben Harris
ecf4d042a0 U+2AFE WHITE VERTICAL BAR
It seemed silly to have the tall version but not the normal one.
2024-06-02 14:21:09 +01:00
Ben Harris
78f2ef9b4a More ANDs and ORs with bars above and below
I had NAND, NOR, and XOR from Mathematical Operators.  This adds five
more characters from Supplementary Mathematical Operators to fill in
the gaps.
2024-06-02 11:18:23 +01:00
Ben Harris
148e6b657e A load more large mathematical operators
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.
2024-06-02 11:02:31 +01:00
Ben Harris
2f4f128b47 Flattened parentheses
According to the TeX "unicode-math" documentation, these are in Plain
TeX, so I think they're mainstream enough that Bedstead should have
them.
2024-06-02 10:44:17 +01:00
Ben Harris
5606348e45 Correct ordering of a couple of glyphs 2024-06-01 23:18:00 +01:00
Ben Harris
612d65862a Update version to 002.006 2024-05-24 15:22:16 +01:00
Ben Harris
c916e6251a Correct ordering of squares and circles with quadrants
That's U+25F0 to U+25F7.
2024-05-14 08:17:44 +01:00
Ben Harris
2d919655cf Update version to 002.005 2024-05-12 00:57:49 +01:00
Ben Harris
c2b3187eb5 Update authorship date 2024-05-12 00:07:49 +01:00
Ben Harris
9607e2ff95 Move glyph complement 40 pt rightward
This places it roughly in the middle of an A4 page, and more
importantly within the margins of my LaserJet 1100.
2024-05-11 22:39:03 +01:00
Ben Harris
7a622c0209 U+22C6 STAR OPERATOR
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.
2024-05-11 21:58:17 +01:00
Ben Harris
d922a43261 Corrected glyph name for U+22C5 DOT OPERATOR
AGLFN says it should be "dotmath".  It wasn't in the last release, so
no backward-compatibility alias.
2024-05-11 19:45:49 +01:00
Ben Harris
fb990fe7ef XOR, NAND, and NOR
We've got AND and OR, so may as well have the rest.
2024-05-11 14:54:43 +01:00
Ben Harris
8bf9ede22b Yijing monograms, digrams, and trigrams
Unfortunately, the hexagrams won't really fit in Bedstead.
2024-05-11 14:35:55 +01:00
Ben Harris
ac569c276e Revert "Private use area mappings for separated 4-cell mosaic graphics"
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.
2024-05-10 21:34:31 +01:00
Ben Harris
f04285cfe8 Further harpoons 2024-05-10 21:34:26 +01:00
Ben Harris
04f1cdf76f Add U+2686 to U+2689
That's {WHITE,BLACK} CIRCLE WITH {DOT RIGHT,TWO DOTS}.  One of them is
used by BQN but we may as well have all four.
2024-05-10 20:40:33 +01:00
Ben Harris
66546110d3 A few more APL symbols
U+2361 APL FUNCTIONAL SYMBOL UP TACK DIAERESIS
U+2362 APL FUNCTIONAL SYMBOL DEL DIAERESIS
U+2365 APL FUNCTIONAL SYMBOL CIRCLE DIAERESIS
2024-05-05 22:13:35 +01:00
Ben Harris
0cc42a86b9 Three more glyphs used by BQN
U+22C8 BOWTIE, U+2389 CIRCLED HORIZONTAL BAR WITH NOTCH, and U+238A
CIRCLED TRIANGLE DOWN.
2024-05-05 22:00:39 +01:00
Ben Harris
004261bffa Empty set symbol, since I can do a tolerable one 2024-05-05 20:58:21 +01:00
Ben Harris
6660803262 A few more circled operators and a new Oslash
The new Oslash is probably better than the old one, with a slash that
actually passes through the O.  It's also distinguishable from the new
U+2298 CIRCLED DIVISION SLASH.
2024-05-05 20:38:59 +01:00
Ben Harris
2269fc7bc6 A couple of n-ary circled operators to go with normal ones 2024-05-05 19:44:41 +01:00
Ben Harris
fbc0bc5e6e Make various circled operators bigger
It was very hard to tell apart U+2295 CIRCLED PLUS and U+233E APL
FUNCTIONAL SYMBOL CIRCLE JOT.  Making the circles the size of an
upper-case 'O' has helped with that.  I've enlarged U+2296 CIRCLED
MINUS and U+2299 CIRCLED DOT OPERATOR to match.  I've left U+25CB
WHITE CIRCLE alone because it probably wants to be distinct from
upper-case 'O' and it doesn't have anything in it.
2024-05-05 17:11:35 +01:00
Ben Harris
948ffe99d5 Add glyphs for deprecated angle brackets
Unicode 15.0 says that U+2329 LEFT-POINTING ANGLE BRACKET and U+232A
RIGHT-POINTING ANGLE BRACKET are deprecated because they're
canonically equivalent to CJK wide angle brackets.  However in a
purely narrow font like Bedstead I think it's reasonable to provide
them and they have AGLFN-assigned names ("angleleft" and "angleright")
that people might still use.  I've make them visually identical to the
more modern U+27E8 MATHEMATICAL LEFT ANGLE BRACKET and U+27E9
MATHEMATICAL RIGHT ANGLE BRACKET.
2024-05-05 10:26:41 +01:00
Ben Harris
1bbf25bf26 Fill in disunified mathematical operators and punctuation
Table 22-5 in Unicode 15.0 lists a number of mathematical operators
that have been disunified from punctuation characters because in some
fonts they might look different or because they otherwise need
different handling.  In some cases Bedstead only had a glyph for one
of the two characters.  Now we have both in all cases.  Here's what
happened in each case:

U+002D HYPHEN vs U+2122 MINUS SIGN: both already present and
different.

U+003F SOLIDUS vs U+2215 DIVISION SLASH: U+003F copied as U+2215.

U+005C REVERSE SOLIDUS vs U+2216 SET MINUS: U+005C copied as U+2216.

U+002A ASTERISK vs U+2217 ASTERISK OPERATOR: U+002A copied as U+2217.

U+25E6 WHITE BULLET vs U+2218 RING OPERATOR: new U+25E6 designed based
on U+2022 BULLET.  It's identical to U+25AB WHITE SMALL SQUARE but I
think that's reasonable.  Bullets represent a font's preference and
are likely to be identical to some geometric shape.

U+007C VERTICAL LINE vs U+2223 DIVIDES: both already present and
identical.

U+2016 DOUBLE VERTICAL LINE vs U+2225 PARALLEL TO: both already
present and identical.

U+003A COLON vs U+2236 RATIO: new U+2236 drawn one pixel higher than
U+003A.

U+007E TILDE vs U+223C TILDE OPERATOR: both already present and
different.

U+00B7 MIDDLE DOT vs U+22C5 DOT OPERATOR: U+00B7 copied as U+22C5.
2024-05-05 10:16:04 +01:00
Ben Harris
6737442dd5 Fix character code for U+2969 2024-05-04 23:23:10 +01:00
Ben Harris
9e442c62d3 Add halfwidth forms of some characters
Specifically halfwidth forms of characters where we already have
ambiguous versions.  Bedstead is intrinsically a half-width font, so
the halfwidth forms should look the same as the ambiguous ones.
2024-05-04 20:30:52 +01:00
Ben Harris
d97807a6cf Double-stroke "A" on the right not the left
This matches which stroke is conventionally thickest.
2024-05-04 14:41:52 +01:00
Ben Harris
dd35eed4ed Private use area mappings for separated 4-cell mosaic graphics 2024-05-04 14:36:34 +01:00