A story headlined ‘Syria seeks our help to woo US’ in Saturday’s Weekend Australian misquoted National Party senator Sandy Macdonald. The quote stated: “Syria is a country that has been a bastard state for nearly 40 years” but should have read “Syria is a country that has been a Baathist state for nearly 40 years.” The Australian regrets any embarrassment caused by the error.
— Correction in The AustralianAfter a few more epicycles (and a two-week vacation in Japan), I have about 95% compatibility with PDF::API2::Lite, covering pretty much everything I’ve used in my scripts over the years, so that they work with a two-line change. Along the way, I learned just enough about fontconfig to coax it into finding my real Adobe core fonts based on their legacy PostScript names; I’ll need to figure out the substitution crap for any system that only has free equivalents installed, of course, but that’s for when I clean it up and add a test suite before releasing to the world.
As a bonus, my most recent epicycle was calculating the exact values of ascender, descender, and xheight for non-exotic fonts, which is more useful than the font designer’s opinion when you want to precisely position the top edge of a string (as in, say, a calendar; I was able to completely rip out the unreliable hackwork from the PDF::API2::Lite version).
Currently missing: skew transformations (matrix math), elliptical arcs
(matrix math), full Cairo path support (new feature), Pango layouts
(major new feature), rendering JPG/PNG/GIF/etc (under-documented API
calls…), and a PDF::API2 compatibility method for cjkfont (requires
messy fc-match tinkering, and I’ve never used it…).
And I just thought of another epicycle! A lot of my grid-based PDF scripts make use of a little box-manipulation library I wrote years ago, that does things like ISO folds, centering, cropping, etc, and recently I started going over the API to clean it up and improve its functionality. Then I realized: I only use this for PDFs, and I’ve already copied the big paper-size library into PDF::Cairo, so why not just make it PDF::Cairo::Box? One-stop shopping, and it will make my calendar generator even cleaner!
Basic test/install done for the packages; need a lot more test code before I can release. Revised Box module really cleans up the calendar script. Played with Pango just enough to learn that it’s fragile and quirky and expensive to load, but has potential when you need real text layout; couldn’t get vertical text out of it, though, and the feature request for furigana support has been open since 2005.
If I have any working brain cells tonight, I think I’ll work on tests for the matrix transforms to get skews and arcs working correctly. Maybe take a first crack at image methods.
Well, that wasn’t so bad. Got skew
transforms
to work, and got PNG images to load, scale, and display correctly. I
may punt and use ImageMagick’s convert CLI utility to handle other
image formats. There is a Perl ImageMagick library, but I’ve never
been able to get it to work correctly with a perlbrew-built Perl on a
Mac, and just calling convert is easier.
The last item missing for full PDF::API2::Lite compatibility is the stripped-down version of the textstart/textend functionality that I’ve never used. Adding the full API2 version of this would be more complicated and less useful than integrating Pango layouts, despite the latter’s significant startup time and entertaining quirks (such as Pango’s two completely different integer units, both of which are referred to as “Pango units” in the documentation: 1/1024pt for general positioning, 1/10000em for vertical positioning of glyphs).
As a bonus, because PDF::API2 is mostly pure-Perl, PDF::Cairo is about five times faster, similar to the speedup I got the time I converted one of my scripts to use the abandoned Haru library.
Apple Maps is still pretty awful in Japan, so we never used it, but Google Maps had a habit of losing track of our position and facing just often enough to repeatedly send us a few blocks out of our way. It was also pretty terrible at recommending nearby restaurants. But it got it right once, and that’s what matters.
In Kyoto, in the basement of the Hotel Kanra, lies the home of what may be the finest meal we’ve ever eaten, Hanaroku. The menu is short, with only three courses and a handful of a la carte options, plus a separate daily special. The drinks menu is more elaborate, but both are seasonal, with the saké flights paired to the food. Preparation and presentation are exquisite, and the staff is quite friendly.

Not only will we go again, we did. We couldn’t stop thinking about the wagyu, so we went back another night and just ordered it a la carte with a full bottle of Kagura.

Classic Morning Musume clip that I had a sudden urge to find again…
Here’s a few from my sister, who made more use of her phone camera than I did. She had my old Canon G15 as well, but is used to using her iPhone 8, particularly the portrait mode. I think she took about the same number of pictures with each, where I split my time between the Sony A6500 and a new Sony WX800 compact superzoom (yes, I’m weak…).
I think if we hadn’t both been battling bad knees, I’d have spent a lot more time shooting with the A6500, and even used the longer lens that I brought along, but instead I left it in the hotel unless we were going someplace special (like Ise and Himeji), and just carried the WX800. Not the same quality or ISO range, but tiny and lightweight, with a surprisingly useful 30x optical zoom range.
(yes, my next doctor visit is going to be all about the knees)
Unrelated, while I’ve been holding off on upgrading my iPhone 6 Plus, Apple’s kind of forcing the issue by increasing the memory footprint of all their frameworks. Pretty much every time an app gets upgraded, it gets piggier, to the point that there’s not enough memory to leave something running in the background, like the Sony app that lets my cameras pull GPS from the phone. Whenever I switched between apps, they had to relaunch, which wasted a lot of time.
I’m not a fan of the notched buttonless overpriced face-scanning heavy new models with battery life no better than my 6 Plus, but switching to Android isn’t really an option if you’re tied into the Apple ecosystem (even if you avoid their shitcloud as much as possible).

First item in the release notes for Ghostscript 9.27:
Version 9.27 (2019-04-04)
IMPORTANT: It is our intention, within the next 12 months (ideally sooner, in time for the next release) to make SAFER the default mode of operation.
I only suggested this 27 freaking years ago.
Taiki only posted a handful of images on Pixiv, and stopped several years ago. Looks like he’s only active on twitter these days.
My brain’s not up to sorting through all our pictures yet, so here’s a quick assortment of things I snapped with my phone.

















