<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[susan]]></title><description><![CDATA[susan]]></description><link>https://susansss.hashnode.dev</link><generator>RSS for Node</generator><lastBuildDate>Tue, 10 Nov 2026 11:22:52 GMT</lastBuildDate><atom:link href="https://susansss.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Fonts as Build Artifacts: A Maker's Workflow for Prompt-to-Font AI]]></title><description><![CDATA[If you build side projects, you know the moment: the game prototype or landing page needs a typeface with some personality, and nothing in the usual free…]]></description><link>https://susansss.hashnode.dev/fonts-as-build-artifacts-a-maker-s-workflow-for-prompt-to-font-ai</link><guid isPermaLink="true">https://susansss.hashnode.dev/fonts-as-build-artifacts-a-maker-s-workflow-for-prompt-to-font-ai</guid><category><![CDATA[fonts]]></category><category><![CDATA[typography]]></category><category><![CDATA[AI]]></category><category><![CDATA[Design]]></category><dc:creator><![CDATA[susan]]></dc:creator><pubDate>Wed, 04 Nov 2026 08:13:37 GMT</pubDate><content:encoded><![CDATA[<p>If you build side projects, you know the moment: the game prototype or landing page needs a typeface with some personality, and nothing in the usual free font libraries feels right. You know what you want in words. You just don't have the letters.</p>
<p>Prompt-to-font AI tools let you start from exactly that: a written spec. I find it helps to treat the result the way I treat any generated code. It is an artifact that comes out of a pipeline, and it has to pass review and tests before it ships. This post walks through that pipeline using <a href="https://makefont.app">MakeFont</a>, which accepts a text prompt, an image, or both, and exports a TTF.</p>
<h2>The pipeline at a glance</h2>
<ol>
<li><strong>Spec</strong>: write a prompt with explicit parameters.</li>
<li><strong>Generate</strong>: pick a character set and run one AI task.</li>
<li><strong>Review</strong>: inspect the output glyph by glyph.</li>
<li><strong>Patch</strong>: fix individual glyphs instead of re-running everything.</li>
<li><strong>Build and test</strong>: download the TTF and test it in your real stack.</li>
</ol>
<h2>Stage 1: Write the spec like a config file</h2>
<p>A vague prompt ("cool techy font") is like a vague ticket: you will get <em>something</em>, but not what you meant. Break the prompt into fields and fill in every one:</p>
<pre><code class="language-text">category:   monospace-feeling display sans
weight:     bold
width:      slightly condensed
details:    square terminals, low contrast, tall x-height
mood:       retro terminal, 1980s arcade
use case:   game title screen and HUD labels
</code></pre>
<p>Then flatten it into one sentence: <em>"Bold, slightly condensed display sans with square terminals, low stroke contrast and a tall x-height, retro 1980s arcade mood, for a game title screen and HUD labels."</em></p>
<p>Every concrete detail removes a guess the model would otherwise make.</p>
<p>If you have a reference, such as a sketch of a few letters, a photo of a sign you drew or a scrap of your own lettering, attach it (PNG, JPG or WEBP, up to 20 MB). Prompt plus image is usually the clearest input: the image shows shape, the text states intent ("keep these corners, but make it heavier"). Keep in mind the image is a <strong>style reference, not a tracing template</strong>: supplied letters may be redrawn.</p>
<h2>Stage 2: Generate against the right character set</h2>
<p>Choose the language before you submit, because it defines which glyphs are required. MakeFont's new AI projects currently support English, Spanish, French, German and Portuguese, all Latin script. That means accented letters like ñ, ç, ã, é, ä, ö, ü and ß are covered when you pick the right language. Chinese, Cyrillic, Arabic and other scripts are not supported for output, so if your project needs them, this is not the tool for that part.</p>
<p>Sign in with Google or an email one-time code. Budget-wise, a free account gets 50 lifetime credits. One AI font creation task costs 20 credits and language detection costs 1 credit per run. Credits are only kept after glyph correction succeeds; failed tasks release them. Editing, building and downloading cost nothing.</p>
<h2>Stage 3: Review the output like a pull request</h2>
<p>The generated sheets are traced into vector outlines and collected in a Font Profile in your browser. Don't download yet. Go through it the way you would read a diff:</p>
<ul>
<li><strong>Consistency checks:</strong> do the round letters (o, c, e, d, b) share one curve? Do the stems of n, m, h and l have the same thickness?</li>
<li><strong>Alignment:</strong> type "hamburgefonstiv" and look at the baseline and x-height.</li>
<li><strong>Known hotspots:</strong> g, a, k, R, Q, S and &amp; are where generated fonts most often go wrong.</li>
<li><strong>Locale test:</strong> type a real sentence in your chosen language with its accents.</li>
</ul>
<h2>Stage 4: Patch, don't re-run</h2>
<p>When one glyph is off, re-running everything is like rebuilding from scratch to fix a typo. Patch the glyph in the editor instead: repair a failed outline, adjust bounds and baseline, draw or erase strokes, transform the shape, and undo or redo as needed.</p>
<p>Useful guardrail: if a required glyph has no usable outline, the TTF build waits until it is fixed. Think of it as a failing check that blocks the merge.</p>
<p>Re-run only when the overall direction is wrong ("too thin", "too formal"), and change one parameter in your spec at a time so you know what caused the difference.</p>
<h2>Stage 5: Build, download and test in your stack</h2>
<p>Once every required glyph builds, type your real strings in the preview (the game title, the product name) and download the TTF. The in-browser preview uses WOFF2, but the download is a TTF.</p>
<p><strong>Install and inspect on Linux:</strong></p>
<pre><code class="language-bash">mkdir -p ~/.local/share/fonts
cp MyFont.ttf ~/.local/share/fonts/
fc-cache -f
fc-list | grep -i myfont        # confirm it registered
</code></pre>
<p><strong>On macOS</strong>, double-click the file and choose <em>Install Font</em> in Font Book. <strong>On Windows</strong>, right-click and choose <em>Install</em>.</p>
<p><strong>On the web</strong>, you can serve the TTF directly with <code>@font-face</code>, or convert it to WOFF2 yourself with your usual tooling for smaller files:</p>
<pre><code class="language-css">@font-face {
  font-family: "ArcadeTitle";
  src: url("/fonts/MyFont.ttf") format("truetype");
  font-display: swap;
}
h1 { font-family: "ArcadeTitle", system-ui, sans-serif; }
</code></pre>
<p>Then test it at your smallest size and next to your body font.</p>
<h2>Where this workflow fits, and where it doesn't</h2>
<p><strong>Good fit:</strong> prototypes, game jams, hackathon branding, personal sites, zines.</p>
<p><strong>Poor fit:</strong> brand systems that need multiple weights and licensing guarantees, long-form body text that needs careful spacing work, and non-Latin scripts.</p>
<p>And check the license before shipping. MakeFont does not promise that outputs are original, exclusive, copyrightable or cleared for commercial use, so read the terms if the font is going into a logo or a product.</p>
<h2>Takeaway</h2>
<p>Prompt-to-font AI is useful once you treat the output as a draft artifact: precise spec in, careful review, small patches, real tests before shipping. If you'd rather start from your own pen strokes than a prompt, the <a href="https://makefont.app/handwriting-to-font">handwriting-to-font workflow</a> goes through the same review-and-patch loop.</p>
]]></content:encoded></item></channel></rss>