Making a Font : Resident Alien

Here are my first steps in order to make a font. I tried to replicate a simple but very nice font. The one from resident Alien.

It was designed by Neil Westlake.

In order to duplicate it, I used the picture from the above link. Then I just draw the principal curves that are the offseted both side

Then I used CurveBoolean, then FitCrv to lower the number of points. Then PlanarSrf then I exported all the curves in a SVG file using my tool. So I used Rhino 6!!!
https://www.food4rhino.com/en/app/save-scalable-vector-graphics

I don’t find simple to use Rhino legacy tool to export SVG. It is oriented for printing on paper.

Then on Inkscape the curves are ungrouped and thickness is set to 0 and a fill is added


Then each character is copied and pasted in FontForge.

You can copy directly from Rhino to FontForge but it is not useful as FontForge surely use SVG output and in Rhino Clipboard there is always a thickness so Font Forge generate 2 curves.

3 Likes

many moons ago before studying architecture i made an old school apprentice that is now basically extinct since it only lives in those further that were educated in it, it combined 3 even older professions, which one of was typographer., so every once in a blue moon i start a set of fonts that i plan to make into a working set and never finish :grinning_face_with_smiling_eyes::man_shrugging:t3:

anyway did you set up kerning tables or just fonts and autokerning? i must admit i never came that far but i am still curious about this topic. but i also guess that kerning tables might not make much sense in an alien language anyway :upside_down_face:

At the moment everything is very simple, the first aim is just to have some nice characters. It is not simple as I use Rhino and Inkscape. I still have to find the good way to have same curves in Rhino and FontForge. There are surely some conversion between one type to another type. Perhaps the best could be to make special command to have a Rhino clipboard with something really useful for FontForge.

To use Rhino generated SVG you should after exporting to SVG edit the file and remove the <defs/> tag remove the stroke related attributes from the path tag. Looking at another font it looks like fill attribute is set to currentColor.

So essentially one character SVG becomes:

<?xml version="1.0" standalone="no">
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg version="1.1" viewBox="0 0 141.6 141.6" xmlns="http://www.w3.org/2000/svg">
    <path d="your path coords here" fill="currentColor">
</svg>
</xml>

You probably should ensure the viewbox is correct for one character as well, didn’t look into that much yet. I should read the FontForge documentation for that I suppose :slight_smile:

Anyway, Rhino exports a curve with several stroke-related attributes as part of the path tag. Removing those ensures only the curve itself gets imported instead of a double curve.

You probably could write a script that does the SVG export, then directly edits the file to adjust the SVG, removing stuff that isn’t necessary.

edit: after some reading, looks like a 1000mmx1000mm setup with horizontal base line at 200mm is something to start with. Draw your glyph in that area, then during export set to 1000mmx1000mm and 1:1 scale

Exporting with these settings

generates the SVG file

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" width="2835pt" height="2835pt" viewBox="0 0 2834.64 2834.64" xmlns="http://www.w3.org/2000/svg">
  <defs />
  <g id="Default">
    <path d="M1995.575,714.6525 C1436.2021,691.50604 1026.317,854.4956 765.9194,1203.6213 C505.5218,1552.7471 497.80627,1819.8958 742.77295,2005.0674 C987.73956,2190.239 1203.7732,2242.3186 1390.8737,2161.306 C1577.9742,2080.2932 1751.5726,1855.5798 1911.669,1487.1654 C2071.7654,1118.751 2158.5645,877.6421 2172.0667,763.83875 C2185.5686,650.03534 2206.7861,612.4223 2235.7192,650.99976 C2264.6523,689.5772 2275.2612,1177.5815 2267.5457,2115.013" stroke="#000000" stroke-width="0.24" stroke-linecap="round" stroke-linejoin="round" fill="none" />
  </g>
</svg>

I edit this to be

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" viewBox="0 0 2834.64 2834.64" xmlns="http://www.w3.org/2000/svg">
  <path d="M1995.575,714.6525 C1436.2021,691.50604 1026.317,854.4956 765.9194,1203.6213 C505.5218,1552.7471 497.80627,1819.8958 742.77295,2005.0674 C987.73956,2190.239 1203.7732,2242.3186 1390.8737,2161.306 C1577.9742,2080.2932 1751.5726,1855.5798 1911.669,1487.1654 C2071.7654,1118.751 2158.5645,877.6421 2172.0667,763.83875 C2185.5686,650.03534 2206.7861,612.4223 2235.7192,650.99976 C2264.6523,689.5772 2275.2612,1177.5815 2267.5457,2115.013" fill="currentColor" />
</svg>

This imports as

edit2: actually, better to export with Window, then you can select the 1000x1000 area as the export window. That will ensure the character is correctly in its glyph box

1 Like

Thanks Nathan for all these tips. I will test them after my little trip to London for the Rhino Development Day.

1 Like

I noticed that for closed polycurves the direction isn’t always maintained by FontForge during import. I did an o-character. In Rhino and the SVG export the outer contour curve is clockwise, the inner one counter-clockwise (as per FontForge manual), but FontForge imported the inner curve also clockwise. I double-checked the exported SVG in nvim before imported into FontForge (and of course make the edits as I mentioned in my previous reply.

Anyway, have fun with creating fonts. Conscripting is a fun part of conlanging!

I used my own tool to export to svg and as I used brep to make the path I didn’t have this problem. But it seems a common problem also when drawing in Fontforge. You have to reverse holes.

Nathan
I made some progress, I follow your advice for the sizing. So now I made my curves in Rhino in a square of 1000 units. Like that


I put curves on Y negative because I made a tool to copy SVG to clipboard and it works well in FontForge.
Also 1000 units could surely better replaced by 1024 or 2048 because it is asked by the tool.
For 1000 Default Ascent =800 Descent = 200
For 1024 Default Ascent =819 Descent = 205

So I made a little tool that reuse some of my older SVG tool
https://www.food4rhino.com/en/app/save-scalable-vector-graphics

Now I make a single command that takes geometries selected and copy then to clipboard.


If you use a Brep, curves are put in FontForge with the good direction

But if there is a problem of winding, it is easy to fix in FontForge.
I didn’t make kerning but made a Ligature, the 10 is an unique symbol.

The next step could be to really automate the transfert from Rhino/Grasshopper to FontForge, like seen here

There are still many errors reported by the tool but it seems usable.
ResidentAlien.zip (176.4 KB)

1 Like

Easter starting now so some time to check your work out. Looks promising!