I'm very happy to announce the release of version 0.7 of Tsukurimashou, my Japanese-language font project. That is a link to the release page for the source code package on SourceForge.JP; see also the complete list of downloadable files and the project home page. This has been almost nine months in the making, and as I said on Twitter, the yak hair is thick on the floor. Release notes below the cut.
It's a very common pattern in the Han writing system that a character will be made of two parts that are themselves characters, or at least elements resembling characters, placed one above the other or one next to the other. For instance, 音 (sound) can be split into 立 (stand up) above 日 (day); and 村 (village) can be split into 木 (tree) next to 寸 (inch). This kind of structure can be nested, as in 語 (language). One can do a sort of gematria with the meanings, (what exactly is the deep significance of "village = tree + inch"?) but that's not the direction I'm interested in going today. Here's the thing: in the Tsukurimashou project, these two ways of constructing characters each correspond to a piece of code that's invoked many times throughout the system, and I thought it would be interesting to look at how often the different parameter values are used.
I recently updated my OCR and Genjimon font packages, a process which included merging them into the Tsukurimashou Project's build system as what I'm calling "parasite" packages (IDSgrep has also become such). They now come included automatically (but not built by default) when you download the full Tsukurimashou package, or they can each be downloaded as a separate distributed package. Some bugs are fixed, and Genjimon has two new styles added, one of which is shown below.
Having the OCR package listed as a download on the Sourceforge.JP site immediately boosted Tsukurimashou's rankings, because 15 or 20 people download it every day. I'm happy to have the added visibility, but I wish that visibility could be coming from popularity of the main Tsukurimashou project instead of this minor spinoff.
I posted version 0.3 of IDSgrep last night; follow the link to download it from SourceForge.JP. As you may recall, IDSgrep is my kanji structural-query software. Some of the ideas behind it were discussed on this Web log back in December. The general idea is that this is software to answer queries about layout and visual components of Han-script (Japanese, Chinese, etc.) characters.
The main new things in version 0.3 are support for regular expression searches; the inclusion of a bundled dictionary (based on the IDS decompositions of the CHISE project); and a "cooked" output mode.
At this point I think IDSgrep as such - the search program - is basically finished. As bug reports and practical experience accumulate, there may eventually be a 0.4 or 1.0 release, but all the features I think it needs to have are now in place and it seems to serve pretty well the original purpose for which I needed to develop it.
At long last, I've completed the 0.6 release of the Tsukurimashou fonts (project home page). This one contains 1110 kanji, including all those taught in the Japanese school system through Grade Three. Also new in this release are experimental italics and integration with my IDSgrep structural-query software (which has its own, separate release series). Downloads: source code; precompiled fonts; demo PDF files.
I took the plunge and created an account on the world's worst Internet dating site. This is mostly so that I can participate in the KanjiVG project, which has decided to host there; git and thereby Github remain not my favourite systems. However, I've established a mirror of Tsukurimashou in my new Github space, so people who do like git and Github can find it there now too.
I went through a bit of a crunch to get Tsukurimashou 0.5 out the door before my year-end vacation. With that done, and at least 99 kanji to do before the next planned release, I have a chance to sit back and think about some longer-term and spin-off projects. Here are some ideas on kanji searching.
UPDATE: A prototype implementation of the system described here now exists as part of the Tsukurimashou project, and you can check it out via SVN from there. Packaged releases will be available eventually.
This is an archived old announcement, for a version of Tsukurimashou that is no longer the latest. You can find the latest version in the Tsukurimashou project on Sourceforge Japan.
I've released a new version of the Tsukurimashou fonts (project home page). This one contains 776 kanji, including all those taught in the Japanese school system through Grade Two and half of Grade Three. The bigger news, however, is that I've also added a set of fonts for the Korean hangul writing system. Those should now be beta quality - you should now be able to write the standard modern Korean language in its entirety. Downloads: source code; precompiled fonts; demo PDF files.
These fonts are far enough along now that I'd really like to create a bit of "buzz" around them; that's part of the sneaky plan behind my recent technical postings about my experiences building the fonts. I'm hoping that a lot of people will read those, and, especially, share them on systems like Twitter and the other one. In the new year, after I've posted a couple more (I'm aiming for weekly technical postings), I'll evaluate whether they are attracting third-party traffic and whether I want to continue them. They take up time I could be spending on writing code, but having people use the software is important too.
This is an announcement for an outdated version. More recent versions are available; see the Sourceforge project for the latest one.
I'm very happy to announce a new release of the Tsukurimashou font project, version 0.4. See files from this release on the Sourceforge releases page, and the summary for the project. The current glyph counts are 2021 overall, 573 kanji; this version now includes all the grade-school kanji through Grade Two. あなたもは、７歳みたく書きことができますよ！ (You, too, can write like a seven-year-old!)
Now, somebody restrain me before I add the 11172 Korean hangul syllables.
Suppose you want to draw a curve with an Etch-a-Sketch. The idea is that you can move the pointer up, down, left, or right, by a precisely controlled amount, but you aren't coordinated enough to turn both knobs at once in a precise way to create a diagonal or curved line. So you want to approximate your desired curve, with one made up of stair-steps; a piecewise linear curve made up of segments that each go in a direction chosen from a small finite set of directions (in this case, the four directions up, down, left, and right, but I'm interested in allowing any arbitrary small finite set of directions).
How can you do this so as to get the best possible approximation?
Here's a project that provides, among other things, free vector fonts of magical glyphs from the Lesser and Greater Keys of Solomon. I found it by way of sourceforge.jp's flagging it as a similar project to Tsukurimashou.
Here are a few notes on the current state of my life.
This is the announcement of a now-obsolete version. Check out the latest progress of Tsukurimashou at sourceforge.jp!
I've just posted the second release of the Tsukurimashou font family - now with 198 kanji, including the 80 Grade One jouyou kanji. You, too, can write like a six-year-old! Also new in this version is a fancy build system.
More commentary probable at some future date; for the moment I've already used up today's word quota writing the package documentation.
Some years ago I posted TrueType conversions of the venerable Metafont OCR-A and OCR-B implementations. The TrueType versions were created by autotracing from the Metafont-generated bitmaps, and they weren't really very good; there were a bunch of problems with the glyph encoding and spacing and stuff. Nonetheless, those fonts have over the years been some of the most successful things on my entire site. They've gotten multiple third-party links, including from Wikipedia, and they've generated a lot of positive feedback for me from users around the world.
Just recently I found out that the original author of one of the Metafont packages I was working from has released a new version and (which is important to some users) opened up the licensing to allow commercial use. So I've taken the opportunity to re-work both typefaces and do it properly this time, by translating the Metafont versions to work with MetaType1 and produce vectors directly. I've also put the OCR-A and OCR-B faces together into one package, and set up a new page on this site for distributing them and my other font projects. Take a look at it here.
Something else of note is that I get a lot of incoming traffic from people who are using third-party translation services to view the OCR font pages in Japanese. Well, I'd like to get more Japanese-language traffic on this site, and I can do a lot better than the translation services, so I've also posted the font page in Japanese. And for fun and to encourage prompt updating of third-party links, the old pages that had the now-obsolete fonts, have been redirected to the Japanese version of the new page.
Here's a page of Chinese fonts including a few for the Seal Script. Could come in handy...
This is the announcement of a now-obsolete version. Check out the latest progress of Tsukurimashou at sourceforge.jp!
I'm pleased to announce the first release of the Tsukurimashou font family. The user's manual and demo is available as a PDF file; so is the complete package in bzipped TAR and ZIP formats. Precompiled OpenType fonts, compatible with all currently-popular typesetting systems, are included in those packages for two styles (Tsukurimashou Kaku and Mincho). Other styles you'll have to compile yourself.
These fonts are released with source code under the GNU GPL version 3 with font-embedding clarification. The current version contains the full repertoire of ISO Latin-1, hiragana, and katakana; more characters are on the way.
Last time I checked the windchill, it was -44. That's the level where if you go outdoors, you come back encased in a three-centimetre layer of ice, like in that scene from Excel Saga. Inasmuch as I don't have a hyperactive redhead to warm me up afterward, I'm cancelling or at least postponing my plan of going grocery shopping today. If I'm lucky, it'll be a little warmer in the afternoon.
Here's a Web log article, with several links and a couple of posters for sale, on something I've wondered about before: the unique typeface used for station names and some other signage on the TTC.
It's not like I don't have enough projects to work on already. Nonetheless, I had an idea I thought was pretty cool, and I'm going to at least describe it here, whether I end up implementing it or not.
Okay, so: kerning. If you're setting type, you need to know where to put each glyph in relation to the previous one. In the old old days, it was easy because each glyph came on a little metal block and you'd just set them right next to each other and clamp them in place. But a computer (and, earlier, a phototypesetting machine) has the opportunity to make a decision. And if you just have a fixed bounding box for each glyph and set them side by side, you run into problems when you have situations like a capital A next to a capital V. "AV". Using the bounding boxes that would be correct for those letters in other contexts, you end up putting too much space between them. You need to squeeze them together so that part of the V projects into the space that the A, if it were next to something else, would reserve for itself. This squeezing together is called "kerning."
I was up until 3 this morning trying to figure out how to make OpenType glyph substitution work. That, in itself, is not news. Anyone who has tried to write substitution rules for OpenType fonts has probably gone through something similar. What is unusual, though, is that I not only succeeded, but also figured out the undocumented underlying principle so that I can predictably succeed in the future; as far as I can tell, the more usual practice is to just try things at random until one eventually either gets it working by accident, or gives up, without having learned anything useful either way.
The purpose of this entry is to provide the important information that I wasn't able to find on the Net and wish I had had. There is one important point I call the Terrible Secret, which makes all the difference to getting it to work; but rather than jump to that immediately I'm going to give the needed background first. I'll be using the terms that make sense to me, rather than the "easy" but uselessly vague simplified style used by all existing documentation I found.