Relief SingleLine seems like the start for a laser-cut font. It's already designed as a single-line stroke for CNC engraving. We just have to replace the cutout "islands" with "cul-de-sacs". "Cul-de-sac SingleLine" might be a good font name.
Editing individual glyphs is rather easy. FontForge's UI is clunky compared to Inkscape - "panning" the view isn't a dedicated mouse button??? - but it's usable. The best part is that .glif files are XML and I can edit them in Notepad++. Too bad FontForge can't hot-reload the .glif
Load the .ufo source, set the stroke width, and zoom in the preview:



I edit the .glif XML to precisely edit the coordinates. I'm leaving a 40-unit gap in all the letters. No scientific reason, 40 just looks good. Some of that gap gets eaten by the font stroke. "R" is a simple example.


The first contour is a vertical line where X=140. I leave it as-is. The last contour is the curved shape. I change the start and end points from X=140 to X=180. If I have any issue interpreting the XML I just move a point in FontForge, export, and see which coordinates change in XML. Characters B, D, R, and P were all this simple.
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="R" format="2">
<advance width="604"/>
<unicode hex="0052"/>
<anchor x="305" y="0" name="bottom"/>
<anchor x="300" y="680" name="top"/>
<outline>
<contour>
<point x="140" y="0" type="move"/>
<point x="140" y="670" type="line"/>
</contour>
<contour>
<point x="519" y="0" type="move"/>
<point x="343" y="344" type="line"/>
</contour>
<contour>
<point x="180" y="344" type="move"/>
<point x="325" y="344" type="line" smooth="yes"/>
<point x="423" y="344"/>
<point x="506" y="404"/>
<point x="506" y="507" type="curve" smooth="yes"/>
<point x="506" y="594"/>
<point x="447" y="670"/>
<point x="313" y="670" type="curve" smooth="yes"/>
<point x="180" y="670" type="line" smooth="yes"/>
</contour>
</outline>
<lib>
<dict>
<key>com.schriftgestaltung.Glyphs.leftMetricsKey</key>
<string>H</string>
</dict>
</lib>
</glyph>
"O" was trickier. I had to split it into two contours. Moving the points significantly affected the curve shape. I used FontForge's editor to closely match the original profile, then Notepad to truncate digits.
Some letters are build as combinations of others. This is convenient for O variants like umlaut Ö. In other cases like Q or slashed-O Ø, the re-use is functional and acceptable but not cool looking enough. It looks like the lazy vertical slices used on every bland stencil font. Q's cut should go next to the tail. Ø's cuts should go near the slash. I'll revise the combo glyphs later.

I wish I could comment the XML but comments are not displayed in editors and get wiped out upon save. Aside from that, editing the font source by hand is easily doable and git is able to track it.
On a bad note, I cannot finish with open source tools at this time. FontForge can't load the .UFO source properly, there is an error in the .fea feature file that defines what letters are in the font. It doesn't load several glyphs. The utility fontmake can read the .fea but can't render the stroked open shapes. The author of Relief SingleLine recommended some paid tools but that's not open-source enough for me.
fontmake --validate-ufo Relief-SingleLine.ufo --keep-overlaps
fontmake --keep-overlaps -u Relief-SingleLine.ufo

Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.