618 Commits

Author SHA1 Message Date
Ben Harris
0cd03defca CSS: switch to monospace
Safari badly misdisplays Bedstead in proportional mode.  This is
caused by a bug in WebKit, and I haven't found an acceptable
workaround.  Thus, I think the best thing to do is to turn off
proportional spacing on the Web page entirely.  I think it looks nice,
but even I'll admit that it's a little too tight, and I know others
prefer the monospaced version.

Also, I can't think of a way that a real chip anything like the
SAA5050 could produce proportionally-spaced text.  It's fundamentally
based on getting fed character data at a constant 1 MHz.  There's no
way it can ask for a character early because the previous one was
narrow.
2024-10-04 00:30:30 +01:00
Ben Harris
d23a7c9b5c CSS: use "background" shorthand property
It's more compact and works just as well.  In fact, I think it might
work better on browsers that support background-image but not
background-size.  On such browsers the entire rule will be ignored,
which is what I want.  If the background image can't appear at
precisely the correct size, it shouldn't appear at all.

Of course, ideally on a browser that fails to display the background,
the title also wouldn't fade out to the left.  I wonder if there's a
sensible way to achieve that.
2024-10-04 00:06:49 +01:00
Ben Harris
51f37a4975 More details on WebKit bug, including link to bug tracker 2024-10-03 23:18:47 +01:00
Ben Harris
79c1606966 Light HTML modernisation
The "sizes" attribute on the icon <links> wasn't allowed by XHTML 1.0
Strict, so I've removed the DOCTYPE for that.  Meanwhile HTML 5
doesn't want you declaring a <meta http-equiv="content-type">
specifying XHTML, so I've removed that as well.  So now it's
XML-syntax HTML 5, which seems sensible to me even if other people
don't like XML.
2024-09-27 21:01:35 +01:00
Ben Harris
f243706d38 Use no-break spaces in Web page
I added them to Bedstead so I may as well use them.
2024-09-27 20:21:23 +01:00
Ben Harris
dbf936f949 Convert the fading <div> in the Web page back to a <span>
HTML doesn't allow <div> inside <h1>.  I found before that using a
<span> caused the background not to work.  That seems to be down to CSS2
section 10.6.1, describing inline, non-replaced elements: "The height of
the content area should be based on the font, but this specification
does not specify how."

Happily, we can just define this particular <span> to be a block
element, so that it behaves like a <div> even though it's a <span>.
That works fine, and because we're only using it to get a well-defined
content area it doesn't matter if it's ineffective when the stylesheet
is missing.
2024-09-27 19:07:50 +01:00
Ben Harris
3b920b8698 Use EN DASH characters directly in Web page, without entities
The W3C HTML 5 checker objects to my use of "&ndash;" and I can't see
any reason why I should use it.  The page is unashamedly in UTF-8, so
there's not much benefit to singling out this one character for special
treatment.

The page is still officially in XHTML 1.0 Strict at the moment, but I
might want to change that, which is why I'm paying attention to an
HTML 5 checker.
2024-09-27 11:58:26 +01:00
Ben Harris
fff625c720 Add the GeoGebra file that I used to sort out PANOSE 2024-09-27 10:58:15 +01:00
Ben Harris
9c346371c7 Correct PANOSE Letterform value and extend to implausible weights 2024-09-27 10:57:22 +01:00
Ben Harris
11d38bb34e Rework PANOSE generation
The code predated the introduction of bold variants, so it was
significantly incorrect.  Also it appears that some software uses the
PANOSE classification to distinguish monospaced fonts.  After careful
study of the specification, I think all the variants of Bedstead can
be classified as text fonts, so I've removed the code that described
some variants as decorative.  Then I did some calculations and a lot
of playing around with GeoGebra to work out which parts of the design
space give which values of Stroke Variation, Letterform, and Midline.
2024-09-27 10:12:56 +01:00
Ben Harris
157eece073 A few more subscript letters 2024-09-26 17:50:34 +01:00
Ben Harris
1809b33380 Generate the backward-compatibility *.sep6 glyphs correctly
They should actually be separated, but I forgot to fix some pasted
text and so they weren't.
2024-09-26 17:24:26 +01:00
Ben Harris
20e3c2b8a8 Notes on a Safari display bug 2024-09-26 16:41:28 +01:00
Ben Harris
b5b40b0ba1 Add link to gitweb
It's in a rather weird place, but it's still useful.
2024-09-26 14:57:57 +01:00
Ben Harris
74e4de5b33 Add U+2003 EM SPACE as a blank mosaic graphics character
At least Noto Sans and Noto Sans Symbols2 think that EM SPACE should
be the same width as mosaic graphics characters, and I think we could
do with a space that doesn't get changed by 'palt'.
2024-09-26 13:31:51 +01:00
Ben Harris
b8afbee0dc Update version to 002.007 bedstead-002.007 2024-09-24 14:26:49 +01:00
Ben Harris
f290a93470 Correct dependencies for all-web 2024-09-24 14:26:49 +01:00
Ben Harris
413f3839ec Improve comment to explain glyph ordering 2024-09-23 20:02:45 +01:00
Ben Harris
ac5d5697d8 Add PUA code points for extra real glyphs 2024-09-23 16:28:35 +01:00
Ben Harris
c5b858632b Add PUA mappings for separated 4-cell graphics
I'm a bit uncertain about this because I currently think these glyphs
shouldn't be in Bedstead at all.  They're not based on any real system
or standard, so they don't really have any good reason to be here.
But here they are nonetheless, at least until Bedstead 003.000.  So
while I don't really want to encourage their use, I think gratuitously
leaving them difficult to use will just annoy anyone who actually has
a use for them and they thus deserve encodings.
2024-09-23 16:22:59 +01:00
Ben Harris
9ef892af51 Assign PUA code points for new small-cap glyphs 2024-09-23 15:52:01 +01:00
Ben Harris
6478104be6 Generate *.sep6 aliases the same way as contiguous versions
That is, not generating aliases at all, becuase that's simpler and
actually makes the OTF file smaller.  Which makes me wonder if all
aliases should be done the same way, leaving FontForge to
automatically factor out common bits.
2024-09-23 15:16:36 +01:00
Ben Harris
5abc741345 Complicate the macro that generates contiguous mosaic graphics
It's now inkvoked the same way as the one that generates separated
graphics, which means those invocations can fit into eight fewer
lines.
2024-09-23 14:36:32 +01:00
Ben Harris
8c0b64ea58 Slight mosaic graphics rationalisation
All the *.sep6 glyphs are now aliases for their proper Unicode 16
names.  And the 6-cell mosaic graphics are now in the section for
glyphs from real character generators, because that's what they are.
2024-09-23 14:17:21 +01:00
Ben Harris
c837049c42 Update Web page for Unicode 16.0 separated graphics 2024-09-22 11:15:35 +01:00
Ben Harris
79d845618b Add separated mosaic graphics at Unicode 16.0 code points
That's U+1CE51 .. U+1CE8F.
2024-09-22 11:15:30 +01:00
Ben Harris
874a12b047 Put bitmap data and alias target into a union
A character can't both be an alias and have its own bitmap data, so we
may as well overlap them.  Wrapping them in a union doesn't require any
changes to the syntax of the glyphs array because C allows for
incomplete bracketing of initialisers.  Because the union doesn't have a
name, its members can be accessed as though they're members of the
containing struct, which means that accesses to them don't need to
change.

There is a new flag to mark a glyph as an alias since "alias_of == NULL"
no longer works, and a corresponding change to the ALIAS() macro.

This saves about 20K of bedstead's data segment on a 64-bit system,
which is kind of silly but it's satisfying nonetheless.
2024-08-18 14:25:10 +01:00
Ben Harris
f6a4441d41 Output glyphs in an order that FontForge won't change
FontForge has opinions about what order glyphs in an OpenType font
should appear in, at least some of them being mandated by the OpenType
spec (for instance that .notdef must by glyph 0).  When outputting an
OpenType font, FontForge re-orders it in accordance with these opinions.

I expect that this will be a problem if I want to emit a table that
FontForge doesn't understand, since it won't be able to correct the
glyph indexes in that table.  Thus I've added code to re-order the
glyphs in Bedstead such that FontForge won't re-order them.  This should
mean that bedstead.c can safely use the glyph indexes that it generates
without worrying that FontForge might change them.

I don't think FontForge minds what order unencoded glyphs appear in, but
I've defined them to be in strcmp() order of glyph name so that they're
at least somewhat stable.  Before this, they were in the same order as
in the source file.
2024-08-18 13:29:07 +01:00
Ben Harris
214c39a929 Tidy up function definitions
Consistently put a newline before each function name, and use "void"
as the parameter list of functions that take no parameters.
2024-08-18 13:18:50 +01:00
Ben Harris
8e065c9c30 Consistent apostrophes in HTML 2024-08-17 00:11:11 +01:00
Ben Harris
2a4fec6c17 Add an icon to the Web page
I generate various sizes because the 16-pixel version looks better than
the scaled-down larger versions.
2024-08-17 00:11:11 +01:00
Ben Harris
9e018799ce Generate sample images in colour to match Web page 2024-08-17 00:11:11 +01:00
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
4a515117e3 Add rom.ps to distribution zipfiles 2024-06-24 23:24:55 +01:00
Ben Harris
aef13db78d Encodings for the remaining chips in rom.ps
I have some disagreements with the SAA5057 image that I found, but I
agree with the datasheet which is good enough for now.
2024-06-24 23:24:55 +01:00
Ben Harris
5d9c889c86 Use correct SAA5051 version of 't' for ROM image 2024-06-24 23:24:55 +01:00
Ben Harris
16ef7c5b8f Allow for choosing which ROM to generate in rom.ps 2024-06-24 23:24:55 +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
20e3456c3e Add "rom.ps" for generating MAME-style font ROM images
This could be used to provide images for MAME to use, but it's also
useful for comparing against images from other sources to spot errors.
2024-06-24 13:38:32 +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
ae15b32c4c Remove section on good sizes from NOTES
It's been pretty much obsolete since 002.002 when I adjusted the
diagonal stroke thickness.
2024-06-20 00:29:58 +01:00
Ben Harris
288bde5853 Remove a spurious blank line from the NEWS file 2024-06-20 00:23:00 +01:00
Ben Harris
af2af39d27 Mention SAA5058 in NOTES 2024-06-18 23:33:03 +01:00