--- layout: post status: publish published: true title: Determining glyph availability for FOP wordpress_id: 2782 wordpress_url: https://www.martineve.com/?p=2782 date: !binary |- MjAxMy0wNy0yOCAxMjo0MDozNCArMDIwMA== date_gmt: !binary |- MjAxMy0wNy0yOCAxMTo0MDozNCArMDIwMA== categories: - Technology tags: - FOP - typesetting comments: [] ---

I've just spent the past hour grappling with getting FOP to render the Unicode glyph for a checkmark (U+2713) in PDF output from XSL:FO. I thought I'd share a few things I learnt along the way (that make me feel a bit silly for not knowing them already).

The type of errors I was getting were:

{% highlight bash %} Glyph "✓" (0x2713, checkmark) not available in font "Times-Roman". {% endhighlight %}

Some observations after messing around for far too long:

  1. Fop does not support fallback to a secondary font on a character-by-character basis. If you need a glyph to be rendered that isn't present in your font, well, bad luck. (Unless you specifically tweak your XSL:FO document, which isn't viable in my case.)
  2. There is no way, as far as I can see, that you can map a specific character to use a different font.
  3. There is a great resource at fileformat.info that will tell you what fonts support your glyphs.
  4. Just use DejaVu Sans and save yourself a lot of tweaking.