Living on the (b)leading edge

Perl 6 is innovative in many ways, and sometimes we don’t fully
appreciate all the implications, for good or for bad.

There’s one I stumbled upon recently: The use of fancy Unicode
symbols for built-in stuff. In this case: the `.gist` output of Match
objects. For example

my token word { w+ }
say 'abc=def' ~~ /<word> '=' <word>/;

produces this output:

「abc=def」
 word => 「abc」
 word => 「def」

And that’s where the problems start. In my current quest to write a book on Perl 6
regexes
, I noticed that the PDF that LeanPub generates from my
Markdown sources don’t correctly display those pesky 「」 characters,
which are

$ uni -c 「」
「 - U+0FF62 - HALFWIDTH LEFT CORNER BRACKET
」 - U+0FF63 - HALFWIDTH RIGHT CORNER BRACKET

When I copied the text from the PDF and pasted into my editor, they
showed up correctly, which indicates that the characters are likely
missing from the monospace font.

The toolchain allows control over the font used for displaying code,
so I tried all the monospace fonts that were available. I tried them in
alphabetical order. Among the earlier fonts I tried was Deja Vu Sans
Mono, which I use in my terminal, and which hasn’t let me down yet. No
dice. I arrived at Noto, a font designed to
cover all Unicode codepoints. And it didn’t work either. So it turns out
these two characters are part of some Noto Sans variants, but not of the
monospace font.

My terminal, and even some font viewers, use some kind of fallback
where they use glyphs from other fonts to render missing characters. The
book generation toolchain does not.

The Google Group for Leanpub was somewhat
helpful:
if I could recommend an Open Source mono space font that
fit my needs, they’d likely include it in their toolchain.

So I searched and searched, learning more about fonts than I wanted
to know. My circle of geek friends came up with several suggestions, one
of them being Iosevka,
which actually contains those characters. So now I wait for others to
step up, either for LeanPub to include that font, or for the Noto
maintainers to create a monospace variant of those characters
(and
then LeanPub updating their version of the font).

And all of that because Perl 6 was being innovative, and used two
otherwise little-used characters as delimiters, in an attempt to avoid
collisions between delimiters and content.

(In the mean time I’ve replaced the two offending characters with
ones that look similar. It means the example output is technically
incorrect, but at least it’s readable).


Source From: perlgeek.de.
Original article title: Living on the (b)leading edge.
This full article can be read at: Living on the (b)leading edge.

Advertisement


  • Article By :

Random Article You May Like

Leave a Reply

Your email address will not be published. Required fields are marked *

*
*