Your rating for Tsukurimashou Font Family and IDSgrep
Project DescriptionFont meta-family, multiple styles, for Japanese, English, and Korean, made with Metafont. Full coverage of hiragana, katakana, hangul, and Latin. Partial coverage of grade-school kanji. Also includes IDSgrep, a tool for querying kanji databases...
1110 kanji; completion of Grade Three; experimental italic fonts.
The main visible content of the fonts hasn't changed much in version 0.6;
I'm simply continuing the slog through the kyouiku kanji. This version
contains the completion of Grade Three.
There's been a lot of less-visible work done, however, and that's one reason
that this version has been so long in the making. This version contains its
own bundled copy of the METAFONT-language portion of METATYPE1, and a Perl
script that replaces the Awk portion of METATYPE1 and the wrapper provided
by the mtype13 distribution. There's a story behind that.
I reinstalled the operating system on my laptop and so, in order to
continue developing Tsukurimashou there, I had to also reinstall all
Tsukurimashou's dependencies. I installed TeXLive, then tried to
install mtype13 according to its instructions. Bear in mind that
mtype13 is about ten years old and its installation process is designed
for TeX distributions of that vintage, not present-day TeXLive.
When invoked as directed, mtype13's Makefile automatically overwrote
the master configuration that allows TeX and related programs to find
their data. My entire TeX installation was rendered unusable. After
reinstalling the entirety of TeX, I dug through the directory
structure to figure out the actually correct place to put mtype13, and
that fortunately wasn't hard. Thinking that I'd rather not lead
Tsukurimashou users into making the same mistake I made, I figured I
would add detailed instructions for installing mtype13 on a modern
TeX, in this document.
But while researching that, I discovered that mtype13, although
obviously intended to be free software, did not actually contain any
license at all, making its status questionable. It also contained an
outdated version of METATYPE1, and since I've been having trouble with
METATYPE1 bugs right from the start of Tsukurimashou, it seemed like
switching to a new version might be desirable.
I contacted the author of mtype13 and he very graciously released his
decade-old code under an MIT-style free software license; but I wanted
the updated METATYPE1, and in digging through that, I discovered that
it was doing a lot of things not needed by Tsukurimashou, such as
re-compiling all fonts twice, the second pass solely to create the
*.tfm files that I was throwing out anyway. Meanwhile mtype13 was
doing things like writing output to /dev/tty, which was what drove me
in an earlier version to put the whole works inside Expect so I could
keep the build system output clean-looking. And METATYPE1 is public
domain, and the parts used by Tsukurimashou amounted to just two files
of METAFONT code plus an Awk script to process the output---the rest of
the package is all about encodings, Latin Modern, back-translation from
Postscript to METAFONT, and other things not used by Tsukurimashou.
Then the only part of mtype13 really used by Tsukurimashou was a shell
script that would run the Awk script.
All in all it seemed the logical thing to do was bundle an entire copy
of METATYPE1's METAFONT code, and a script with function similar to
mtype13 but with modifications appropriate to Tsukurimashou. That way
I eliminate the dependencies on separately installed METATYPE1 and
mtype13, and I have the opportunity to modify any features of those
packages that aren't ideal for Tsukurimashou.
I combined the two METAFONT-language files into one and ripped out the
second pass of font compilation; that alone doubles the speed of
Postscript subfont generation. I also translated the Awk script into
Perl, and removed all the hinting code from it. People who have
the other dependencies of this package almost certainly have GNU Awk
anyway, but I don't really want to try to maintain code in Awk, a
language I barely know, and have that dependency for installation when
I've already got a lot of Perl in the project. The automated
Awk-to-Perl translator didn't work, for reasons unknown. Most of the
Awk code seemed to be all about properly handling hints, which
Tsukurimashou doesn't use at that stage of processing, so by removing
all that stuff I ended up with a much shorter and cleaner Perl script
than the original Awk.
Also worth mentioning is the "t1asm" utility, another previously
unknown-to-me dependency of the mtype13/METATYPE1 complex. This is
part of the popular "t1utils" package; I could have simply declared
that package to be a new dependency, but there again, given that t1asm
is just one small thing needed out of a larger package, and distributed
under a permissive license, I decided to bundle it too. The C code for
this utility is in the t1asm/ subdirectory.
This version of Tsukurimashou is the first one designed to work with
IDSgrep. IDSgrep is a separate, new project, with its own
documentation and distribution packages, but its source code is checked
into the Tsukurimashou SVN repository and so if you're following that
respository, you should already have a copy of the IDSgrep code.
IDSgrep brings the user-friendliness of grep to kanji search. It
allows querying databases of kanji by partial descriptions of visual
structure, such as "all kanji with 月 at the right.’’ Tsukurimashou's
build system now supports a "make eids" target, which will generate a
database file suitable for querying with IDSgrep based on the visual
structure of Tsukurimashou glyphs. Note that that may explicitly not
be the same as their etymological origins; databases from other sources
may be more useful for general dictionary purposes, but I've found that
in Tsururimashou's own development a need exists for querying what
is in the font as such, and IDSgrep exists in large part to serve that