Typography extensions in Inkscape 0.49

We’ve been prototyping typography features for better integrating Inkscape with FontForge. Today I have published on YouTube a screencast of the current version of these extensions. The extensions are scheduled for release in the upcoming Inkscape version 0.49.

The basic workflow is split in 3 steps (with one Inkscape extension for each step):

1) Setup Typography Canvas
Using this extension you can define the general metrics of the font you’re designing and have the Inkscape canvas properly setup: the paper size is adjusted to 1024×1024 units and guidelines for baseline, x-height, caps-height, ascender and descender are created.

2) Add glyph layer
Now you can design your first glyph. Each time you are satisfied with a glyph you can use the second extension to create a “glyph layer”, move the selection to the newly created layer and auto-hide it so that you have a clean canvas to work on your next glyph. You can, of course, at any moment toggle the visibility of any of your previous glyphs at the layers dialog so that you can either tweak it or use it as a reference while you are designing other glyphs.

3) Converting to SVG Font
Once you’ve designed all of your desired glyphs, you’ll have to use this third extension to convert the glyph layers to the SVGFont format, which is what FontForge is capable of dealing with.

After these 3 steps you can save your SVG document and load it in FontForge to continue the typography work.

Please leave a comment on this blog post with suggestions about how this could work better for you, or if you have any questions about what you can do to help move development of this tool forwards!

This entry was posted in Inkscape, News. Bookmark the permalink. Post a comment or leave a trackback: Trackback URL.


  1. Posted 17 November, 2011 at 12:37 am | Permalink

    that sounds great. I like the idea of having glyphs placed on different layers. Whereas i think that x-height and other guides just can be placed on canvas. Anyway, my real definite question is why not use Inkscape current SVG font editor ? I’m afraid that having a depedency to forntforge will make your script unusable for many people. Could you explain the benefits you see in it ?

    • Posted 17 November, 2011 at 3:57 am | Permalink

      I am myself the developer of the SVG Fonts editor in Inkscape. But me and Dave have decided that its user interface and workflow are not yet ideal for the typical type designers and so we want to work on some prototypes and then gather feedback from users so that we can further improve it. These typography extensions are a quick way to experiment with some ideas before perhaps actually implementing them as core features in Inkscape.

      • Posted 17 November, 2011 at 10:05 am | Permalink

        yep of course some things could be improved. The main problem is that actually very few people know SVGfont editor in Inkscape (even the type designer i know). I’m not it has to be completely redone. I guess having a complete template with main glyphs already included might be nice. May be there could one layer per glyph and that to have a best workflow. Actually the designer has to create the font and the glyphs manually. A default template should be provided so that the designer should just fill the cases. I guess this is a simple thing to begin with. During our Font Booksprint two weeks ago, i’ve written the part about Inkscape, so i quite understand why you thing needs to be changed (http://fr.flossmanuals.net/fontes-libres/ch025_svg-fonts-dans-inkscape) 🙂 So let’s go one thing after the other : it would be a nice thing would to have some kind of page tool to manually change the page size on convas, or some layer size (i.e. each glyph). We could then be more precise in Inkscape before importing into fontforge.

  2. ac
    Posted 28 November, 2011 at 3:35 pm | Permalink

    I see no reason why the Font Editor in inkscape called SVG font editor. Why cannot it be a general purpose font editor?

    The libfontforge provides all the functions to group splineline glyphs into whatever kind of font you want. And setting properties with the libfontforge should not be any problem.

    Actually, in fontforge, the difference between different font formats only show up when generating font. Therefore, the “Generate Font” dialog is the only important area where a SVG Font Editor differ from a general purpose Font Editor.

    • Posted 28 November, 2011 at 4:55 pm | Permalink

      It is called SVG Font Editor because it is focused in supporting the font features described in the SVG spec. We don’t plan to completely substitute FontForge, but instead to complement it with the nice drawing tools of Inkscape. The intended workflow would be to design glyphs in Inkscape and then import the SVGFont into FontForge to finish the work.

  3. Posted 26 February, 2012 at 11:49 am | Permalink

    I think that it would be good when creating TrueType fonts for there to be a tool that put all Bezier points and Bezier handles on pixel boundaries for you.

    The first thing I always do after importing an SVG of a glyph from Inkscape is “Find Errors” and then Fix all the non-integer points and point handles, which is a boring job.

    Working with pixel boundaries is very useful when creating TrueType fonts, which is still the most common thing I’m asked for despite things like OpenType.

  4. Posted 23 July, 2012 at 8:28 am | Permalink

    I am happy to have found this video.

    It is nice to know that Inkscape can be used to create personalised fonts.

    Thank you

  5. Moini
    Posted 4 March, 2015 at 11:25 pm | Permalink

    I’ve been playing around with the typography extension, and couldn’t find a way to add a German ‘Ă€’.

    I tried to enter the letter directly, resulting in

    Traceback (most recent call last):
    File “new_glyph_layer.py”, line 54, in
    File “/usr/share/inkscape/extensions/inkex.py”, line 268, in affect
    File “new_glyph_layer.py”, line 43, in effect
    layer.set(inkex.addNS(‘label’, ‘inkscape’), ‘GlyphLayer-‘+char)
    File “lxml.etree.pyx”, line 746, in lxml.etree._Element.set (src/lxml/lxml.etree.c:42955)
    File “apihelpers.pxi”, line 547, in lxml.etree._setAttributeValue (src/lxml/lxml.etree.c:19025)
    File “apihelpers.pxi”, line 1395, in lxml.etree._utf8 (src/lxml/lxml.etree.c:26485)
    ValueError: All strings must be XML compatible: Unicode or ASCII, no NULL bytes or control characters

    and I tried the Unicode-Code for À, which is U+00E4, with and without the U+ prefix, and also 228, but all this does is create several layers named GlyphLayer-U, GlyphLayer-+, GlyphLayer-0, GlyphLayer-0, etc.

    So how does this work?

    Could you post the answer here, too: https://answers.launchpad.net/inkscape/+question/263246 ?

One Trackback

  1. […] começar a desenvolver fontes (usando apenas Software Livre Open Source), pode recorrer ao workflow Inkscape + Fontforge + Spiro que descreve no site dele. Separador do vĂ­deo do […]

Post a Comment

Your email is never published nor shared. Required fields are marked *

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>


  • What we do

    Understanding Fonts is a type design training business. If you'd like an event in your college or city, let Dave know: dave@understandingfonts.com