chiark / gitweb /
Ben Harris [Sat, 12 Aug 2017 08:25:56 +0000 (09:25 +0100)]
strokefont: More object-oriented approach.
Now we have one class for each broad class of stroked font. I think
this will be easier to manage.
Ben Harris [Fri, 11 Aug 2017 23:04:22 +0000 (00:04 +0100)]
Beginnings of a script to stroke fonts.
The plan is that bedstead.c will produce a single-path font and then
this script will stroke it in various ways, adapting the font metadata
appropriately.
Ben Harris [Wed, 9 Aug 2017 22:25:04 +0000 (23:25 +0100)]
A scattering of additional characters from Latin Extended-A.
Ben Harris [Wed, 9 Aug 2017 21:23:48 +0000 (22:23 +0100)]
Clip character names to boxes in glyph complement.
Ideally, I'd do something more elegant with over-long glyph names, but
at least keeping them in the boxes doesn't look terrible.
Ben Harris [Wed, 9 Aug 2017 21:03:56 +0000 (22:03 +0100)]
Add U+0149, "napostrophe".
That's the only character that Font Library says is missing for
supporting Afrikaans, so I may as well implement it even if Unicode
does say its use is strongly discouraged.
Ben Harris [Tue, 8 Aug 2017 22:23:55 +0000 (23:23 +0100)]
Emit open contours starting at the beginning.
Before this change, emit_path() would emit contours starting at
whichever point was earliest in the points array. That was fine for
closed contours, but it meant the open contours tended to be emitted
in multiple parts. Now it first searches for start points of open
contours and emits those, and then does what it used to do to emit the
remaining (closed) ones. This has no effect (other than to slow
things down a bit) for fully-closed paths like those in outline
versions of Bedstead, but it makes the stroked ones much cleaner. Now
a contour can only end at a tip or at a 3-way junction.
Ben Harris [Tue, 8 Aug 2017 21:26:58 +0000 (22:26 +0100)]
It's the future: C has a boolean type.
Ben Harris [Tue, 8 Aug 2017 21:25:05 +0000 (22:25 +0100)]
Extract code to emit a single contour from emit_path().
I want to make emit_path() more complex, so pulling out this obvious
unit seems wise.
Ben Harris [Tue, 8 Aug 2017 21:12:59 +0000 (22:12 +0100)]
Quick note on patent describing character rounding technique.
Ben Harris [Tue, 8 Aug 2017 00:33:16 +0000 (01:33 +0100)]
Additional characters for Polish.
Thanks to <http://www.twardoch.com/download/polishhowto/> for
guidance. All misinterpretations are my own. One character is
missing because I still don't have a good way to do an accented
capital S.
Ben Harris [Mon, 7 Aug 2017 23:55:54 +0000 (00:55 +0100)]
Remove explicit mention of Dwarf Fortress files from "all" target.
They're pulled in by $(DISTFILES) anyway.
Ben Harris [Mon, 7 Aug 2017 23:37:06 +0000 (00:37 +0100)]
Don't generate BDF for non-default fonts.
The other widths will generate terrible bitmaps, so just don't bother.
Ben Harris [Mon, 7 Aug 2017 23:29:47 +0000 (00:29 +0100)]
Don't generate PFA and AFM files by default, and don't ship them.
They were only built because I didn't know how to make Ghostscript
use OTF files directly. Now that I do, there's no need to keep
them, so dropping them for 002.000 makes sense.
Ben Harris [Mon, 7 Aug 2017 22:37:17 +0000 (23:37 +0100)]
Better TTF name generation.
Now more-correctly generate family/subfamily names, both the versions
for programs that can't handle much variety (IDs 1 and 2), and the
proper typographic ones (IDs 16 and 17). This should stop "Medium"
turning up in my font selector.
Ben Harris [Mon, 7 Aug 2017 00:50:47 +0000 (01:50 +0100)]
Quick notes on stroking with FontForge.
Ben Harris [Sun, 6 Aug 2017 22:12:09 +0000 (23:12 +0100)]
Fix FontForge Makefile rules to work properly.
When generating secondary targets, they still need to pass the name of
the primary target to FontForge.
Ben Harris [Sun, 6 Aug 2017 21:59:48 +0000 (22:59 +0100)]
Add *.afm to the list of things cleaned by "make clean".
Ben Harris [Sun, 6 Aug 2017 20:33:11 +0000 (21:33 +0100)]
Remove alternate arrows.
While pretty, they were inauthentic and awkward to use. This also
removes the 'salt' lookup, which was inappropriate anyway.
Ben Harris [Sun, 6 Aug 2017 20:28:26 +0000 (21:28 +0100)]
Add default suffices to ss* lookups.
They aren't used as yet, but maybe a bit of extra FontForge scripting
will enable me to avoid searching for glyphs myself.
Ben Harris [Sun, 6 Aug 2017 17:28:03 +0000 (18:28 +0100)]
Add explicit BlueValues, OtherBlues, and BlueFuzz.
BlueValues gains the upper edge of symbols and Hebrew letters.
OtherBlues gains the bottom edge of symbols. BlueFuzz is set to zero
because it's unnecessary (and this is recommended by the Type 1 spec).
Ben Harris [Sun, 6 Aug 2017 14:12:19 +0000 (15:12 +0100)]
Add an assortment of punctuation from the U+2000 block.
Ben Harris [Sun, 6 Aug 2017 12:20:26 +0000 (13:20 +0100)]
Glyph for U+2010 HYPHEN. Also non-breaking hyphen and NBSB.
All glyphs we had already, but under new names.
Ben Harris [Sun, 6 Aug 2017 12:06:12 +0000 (13:06 +0100)]
Daggers, being another embarrassing omission from StandardEncoding.
Ben Harris [Sun, 6 Aug 2017 11:57:19 +0000 (12:57 +0100)]
Glyphs for some of the pictorial control characters in ECMA-17.
Some were already present. Some are difficult.
Ben Harris [Sun, 6 Aug 2017 10:05:49 +0000 (11:05 +0100)]
Redesign alphanumeric control pictures.
They now fill the character cell, which makes them consistent with
fractions.
Ben Harris [Sat, 5 Aug 2017 23:44:18 +0000 (00:44 +0100)]
Fill in graphics for the rest of the C0 controls.
The two-character mnemonics were specified in ECMA-17 (November 1968).
Ben Harris [Sat, 5 Aug 2017 22:52:49 +0000 (23:52 +0100)]
Change design of Greek tonos over lower-case letters to a dot.
This matches ETS 300 706: May 1997, and also the photos of actual
Greek teletext at <https://www.cambus.net/teletext-in-greece/>.
Ben Harris [Sat, 5 Aug 2017 22:07:09 +0000 (23:07 +0100)]
Add "longs" (U+017F) glyph.
Based on "f" with the crossbar removed.
Ben Harris [Sat, 5 Aug 2017 16:10:03 +0000 (17:10 +0100)]
Visible space character.
It seems like the sort of thing a monospaced font should have.
Ben Harris [Sat, 5 Aug 2017 16:04:11 +0000 (17:04 +0100)]
Accented Greek lower-case.
Currently, the tonos used for these looks much like an acute accent.
ETS 300 706 shows a dot-shaped tonos instead, so maybe I should change
to that.
Ben Harris [Sat, 5 Aug 2017 14:47:58 +0000 (15:47 +0100)]
Accented Greek capitals.
Ones with tonos put the accent to the left of the letter rather than
above it, which makes for a rather squashed Omega. In real teletext,
the tonos is put in the character cell to the left, but I don't know
if that can be coded in Unicode properly. Maybe I need a silly
multiple substitution for a space followed by an capital with tonos.
Ben Harris [Tue, 1 Aug 2017 22:27:22 +0000 (23:27 +0100)]
Mechanisms to get metadata right for different weights of font.
bedstead.c can now generate Bedstead Book (and all other widths at
that weight).
Ben Harris [Tue, 1 Aug 2017 17:25:32 +0000 (18:25 +0100)]
Fix a stray global-scope variable.
Ben Harris [Tue, 1 Aug 2017 17:11:51 +0000 (18:11 +0100)]
Shuffle scaling around so we always work on 100×100 pixels.
Width variations are not catered for by scaling on output.
Ben Harris [Mon, 31 Jul 2017 22:48:00 +0000 (23:48 +0100)]
Add row and column headings to glyph complement.
Ben Harris [Mon, 31 Jul 2017 22:22:48 +0000 (23:22 +0100)]
Lay complement out more in keeping with Unicode values.
Now each column represents one column in the Unicode code charts, with
entirely empty columns suppressed. Unencoded characters are packed in
at the end.
Ben Harris [Mon, 31 Jul 2017 21:48:50 +0000 (22:48 +0100)]
Remove a spurious "0 0 moveto" from glyph complement PS.
Ben Harris [Mon, 31 Jul 2017 21:39:43 +0000 (22:39 +0100)]
Use pd2pdf in place of gs -sDEVICE=pdfwrite.
This is simpler and means that .setpdfwrite gets called automatically.
Ben Harris [Mon, 31 Jul 2017 21:26:40 +0000 (22:26 +0100)]
Turn off font subsetting when generating glyph complement.
After all, we do rather need the full font. Admittedly, we don't need
the 14 copies tht Ghostscript 9.18 puts in, but this still somehow
makes the file smaller.
Ben Harris [Mon, 31 Jul 2017 20:35:32 +0000 (21:35 +0100)]
Put minimal DSC comments into glyph complement PostScript.
Ben Harris [Mon, 31 Jul 2017 19:43:50 +0000 (20:43 +0100)]
Add single angle quotation marks.
Another easy bit of AdobeStandardEncoding that we're missing.
Ben Harris [Mon, 31 Jul 2017 19:30:07 +0000 (20:30 +0100)]
Correct name of ordfeminine.
Ben Harris [Mon, 31 Jul 2017 19:28:41 +0000 (20:28 +0100)]
Add a few missing accents from AdobeStandardEncoding.
Specifically, circumflex (U+02C6), caron (U+02C7), and tilde (U+0x2DC).
Ben Harris [Mon, 31 Jul 2017 18:27:14 +0000 (19:27 +0100)]
Feed OTF fonts to GhostScript via Fontmap rather than PFA on command-line.
This should make it practical to provide metadata in comments for (e.g.)
PDF generation.
Ben Harris [Mon, 31 Jul 2017 16:02:08 +0000 (17:02 +0100)]
Generate PostScript FontName programmatically from FullName.
This has th unfortunate effect of changing the FontName of Bedstead
Semi Condensed from Bedstead-Semicondensed to Bedstead-SemiCondensed.
The former name was an error.
Ben Harris [Mon, 31 Jul 2017 15:49:05 +0000 (16:49 +0100)]
Replace "param" in variable etc names with "width".
I think I'll want to vary different design parameters independently,
and I don't want to have to maintain the full cross product by hand.
Ben Harris [Mon, 31 Jul 2017 15:34:22 +0000 (16:34 +0100)]
Don't list "bedstead" as a prereq for "make dist".
The recipe doesn't use it.
Ben Harris [Mon, 31 Jul 2017 15:29:45 +0000 (16:29 +0100)]
Use the correct option to get a glyph complement.
It didn't matter before because bedstead.c would almost always produce
a glyph complement.
Ben Harris [Mon, 31 Jul 2017 15:21:57 +0000 (16:21 +0100)]
No more global-scoped functions or variables.
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).
Ben Harris [Mon, 31 Jul 2017 15:18:06 +0000 (16:18 +0100)]
Make nglyphs and nparams global.
nglyphs was used in two functions, and there seems no reason to
localise these.
Ben Harris [Mon, 31 Jul 2017 15:16:48 +0000 (16:16 +0100)]
Fix a stupid strcmp error in glyph-complement option processing.
Ben Harris [Tue, 25 Jul 2017 23:17:57 +0000 (00:17 +0100)]
Sort glyph complement by Unicode code point.
Ben Harris [Tue, 25 Jul 2017 22:36:10 +0000 (23:36 +0100)]
Add mechanisms (as yet unused) for varying Bedstead's weight.
There are rather tight limits to the weights it can achieve, though.
Ben Harris [Sat, 22 Jul 2017 23:24:38 +0000 (00:24 +0100)]
Further improvements to the glyph complement PDF.
Now has multiple pages and draws character cell.
Ben Harris [Sat, 22 Jul 2017 20:44:12 +0000 (21:44 +0100)]
Beginnings of mechanisms for generating a glyph complement PDF.
Ben Harris [Wed, 19 Jul 2017 21:14:49 +0000 (22:14 +0100)]
Make U+00A8 "dieresis" consistent with other diereses.
Ben Harris [Wed, 19 Jul 2017 20:46:47 +0000 (21:46 +0100)]
Gratuitous Cyrillic letters.
Now I think we have everything needed for Russian, Ukrainian,
Belarusian, and Bulgarian.
Ben Harris [Mon, 17 Jul 2017 23:14:20 +0000 (00:14 +0100)]
Further cleanup of skeleton paths.
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.
Ben Harris [Mon, 17 Jul 2017 22:23:44 +0000 (23:23 +0100)]
Another assertion.
Ben Harris [Mon, 17 Jul 2017 22:22:38 +0000 (23:22 +0100)]
Start path simplification for skeleton font.
This finds places where multiple segments can be replaced by a single
straight line and so replaces them.
Ben Harris [Mon, 17 Jul 2017 20:19:03 +0000 (21:19 +0100)]
Very rough code for a single-line skeleton font.
This uses a different dochar() function which currently emits a lot of
little path fragments in roughly the right places.
Ben Harris [Sun, 16 Jul 2017 21:11:31 +0000 (22:11 +0100)]
Version 001.003
Ben Harris [Sun, 16 Jul 2017 17:26:07 +0000 (18:26 +0100)]
New, less ugly, U+01AB.
Ben Harris [Sun, 16 Jul 2017 16:09:20 +0000 (17:09 +0100)]
New "oslash" glyph.
Prettier and doesn't include solid blocks of pixels that will work
badly in a single-line version of Bedstead.
Ben Harris [Sun, 16 Jul 2017 15:58:21 +0000 (16:58 +0100)]
Fix typo in U+025D.
Ben Harris [Sun, 16 Jul 2017 13:58:25 +0000 (14:58 +0100)]
Correct alt text for extended.png.
Ben Harris [Sun, 16 Jul 2017 13:57:39 +0000 (14:57 +0100)]
Remove sample of mosaic graphics.
I don't think I can depend on browser font support just yet.
Ben Harris [Sat, 15 Jul 2017 22:25:36 +0000 (23:25 +0100)]
Set list-style-type in CSS.
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.
Ben Harris [Sat, 15 Jul 2017 22:22:14 +0000 (23:22 +0100)]
Comprehensive rework of widths. Now there are six.
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.
Ben Harris [Tue, 11 Jul 2017 12:50:16 +0000 (13:50 +0100)]
Adjust U+02AC and U+02AD, bilabial and bidental percussive.
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.
Ben Harris [Tue, 11 Jul 2017 10:55:42 +0000 (11:55 +0100)]
Choose a canonical capital esszett (U+1E9E).
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).
Ben Harris [Mon, 10 Jul 2017 00:05:04 +0000 (01:05 +0100)]
Add "ellipsis".
Ben Harris [Sun, 9 Jul 2017 23:51:27 +0000 (00:51 +0100)]
Adjust t-based phonetic ligatures to better match "t".
I'd forgotten that it went up to the cap height and its crossbar was
at the x-height.
Ben Harris [Sat, 8 Jul 2017 20:48:20 +0000 (21:48 +0100)]
Redesign U+028E LATIN SMALL LETTER TURNED Y.
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.
Ben Harris [Sat, 8 Jul 2017 20:04:18 +0000 (21:04 +0100)]
Move knowledge of different widths out of main().
It's now contained in on place in bedstead.c (and in the Makefile).
Ben Harris [Sat, 8 Jul 2017 00:24:04 +0000 (01:24 +0100)]
Standard C hasn't been ANSI C since 1989.
If I'm going to claim "for the 21st century" then I should at least
call it "ISO C".
Ben Harris [Sat, 8 Jul 2017 00:02:41 +0000 (01:02 +0100)]
Remove "inline" from getpix().
It doesn't make any difference to the speed on my system anyway.
Ben Harris [Fri, 7 Jul 2017 23:51:44 +0000 (00:51 +0100)]
In do_palt(), mask out unused data bits.
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.
Ben Harris [Fri, 7 Jul 2017 23:02:20 +0000 (00:02 +0100)]
U+02A3 to U+02AD: Obsolete IPA ligatures and some ExtIPA.
Ben Harris [Thu, 6 Jul 2017 20:44:15 +0000 (21:44 +0100)]
Remove spurious small-caps L at wrong code point.
Ben Harris [Thu, 6 Jul 2017 20:42:52 +0000 (21:42 +0100)]
U+025D LATIN SMALL LETTER REVERSED OPEN E WITH HOOK
It fills a gap.
Ben Harris [Tue, 4 Jul 2017 22:48:09 +0000 (23:48 +0100)]
Four different versions of U+1E9E (capital esszett).
Designed following the four examples on
https://typography.guru/journal/capital-sharp-s-designs/
The Zehlendorfer form seems to be the most popular around here.
Ben Harris [Sun, 2 Jul 2017 23:43:22 +0000 (00:43 +0100)]
Web page update for condensed fonts.
Ben Harris [Sun, 2 Jul 2017 17:36:54 +0000 (18:36 +0100)]
Slightly nicer web page typography.
Ben Harris [Sun, 2 Jul 2017 16:56:24 +0000 (17:56 +0100)]
Half-width versions of fonts.
These are intended to be used as double-height characters.
Ben Harris [Sun, 2 Jul 2017 16:34:52 +0000 (17:34 +0100)]
Scale the co-ordinate system used for drawing glyphs.
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.
Ben Harris [Sat, 1 Jul 2017 00:38:03 +0000 (01:38 +0100)]
Specify more values in 'OS/2' table.
Ben Harris [Fri, 30 Jun 2017 09:37:57 +0000 (10:37 +0100)]
Change font size of heading to 100px.
Bedstead works best at pixel sizes of the form 20+40n, where n is an
integer.
Ben Harris [Fri, 30 Jun 2017 08:14:03 +0000 (09:14 +0100)]
Redraw U+0263: IPA Gamma
The new one is rather less ugly.
Ben Harris [Wed, 28 Jun 2017 22:00:42 +0000 (23:00 +0100)]
Beautification of assorted IPA characters.
Ben Harris [Wed, 28 Jun 2017 21:15:02 +0000 (22:15 +0100)]
Generate PANOSE classification.
This is a mandatory part of the 'OS/2' table, so we may as well get it
right. Gratuitously generalised across all possible character widths.
Ben Harris [Sun, 25 Jun 2017 22:39:14 +0000 (23:39 +0100)]
Merge release-branch changes into the trunk.
Ben Harris [Sun, 25 Jun 2017 22:37:15 +0000 (23:37 +0100)]
Reflect territorial extent of CDPA and make a reference more precise.
Ben Harris [Sun, 25 Jun 2017 21:49:04 +0000 (22:49 +0100)]
More HTTPS!
Particularly, don't embed CC0 button from unencrypted HTTP site.
Ben Harris [Sun, 25 Jun 2017 21:12:17 +0000 (22:12 +0100)]
... and in the text.
Ben Harris [Sun, 25 Jun 2017 21:11:33 +0000 (22:11 +0100)]
Ahem. Fix version number in Web page.
Ben Harris [Sun, 25 Jun 2017 21:07:02 +0000 (22:07 +0100)]
Version 001.002
Ben Harris [Sun, 25 Jun 2017 21:01:58 +0000 (22:01 +0100)]
Correct spelling and Web site of FontForge.
Ben Harris [Sun, 25 Jun 2017 21:00:39 +0000 (22:00 +0100)]
Web page: Add notes on copyright and some headings.
Ben Harris [Sun, 25 Jun 2017 19:59:33 +0000 (20:59 +0100)]
CSS: Add font-synthesis: none.
Otherwise, Firefox synthesises Bedstead Bold when I use <h2>.