Hebrew fonts for 3D printing
15 families, 17 weights, every one of them measured rather than eyeballed. The number that matters for a printed sign is the minimum stroke width: the narrowest wall in the letters, in em. To get millimetres, divide it by the font's cap height in em and multiply by your cap height — the table below has done that for a 60 mm cap height.
הקו הדק ביותר בגובה אות של 60 מ״מ
כל גופן כאן נמדד בפועל, אות אות: עובי הקו הדק ביותר שלו, במילימטרים, כשגובה האותיות 60 מ״מ — גודל טיפוסי למספר בית או לשלט כניסה. זה עובי הגופן עצמו, לפני ש־Easy3D מעבה כל קו ב־0.3 מ״מ (0.15 מ״מ מכל צד). בגובה אחר, המספר משתנה באותו יחס: בגובה 30 מ״מ הוא חצי.
| גופן | משקל | הקו הדק ביותר ב־60 מ״מ | באות | הגובה המינימלי לקו של 0.8 מ״מ |
|---|---|---|---|---|
| Fredoka | 700 | 12.10 מ״מ | ג | 3.97 מ״מ |
| Rubik | 700 | 10.54 מ״מ | ג | 4.55 מ״מ |
| Karantina | 700 | 9.43 מ״מ | ז | 5.09 מ״מ |
| Suez One | 400 | 9.36 מ״מ | ש | 5.13 מ״מ |
| Miriam Libre | 700 | 9.01 מ״מ | ז | 5.33 מ״מ |
| Secular One | 400 | 9.01 מ״מ | ש | 5.33 מ״מ |
| Gveret Levin | 400 | 8.43 מ״מ | ד | 5.69 מ״מ |
| Alef | 700 | 8.12 מ״מ | מ | 5.91 מ״מ |
| Noto Sans Hebrew | 700 | 6.78 מ״מ | ז | 7.08 מ״מ |
| Varela Round | 400 | 5.99 מ״מ | ג | 8.02 מ״מ |
| Heebo | 700 | 5.91 מ״מ | א | 8.13 מ״מ |
| IBM Plex Sans Hebrew | 700 | 5.65 מ״מ | ז | 8.49 מ״מ |
| David Libre | 700 | 4.64 מ״מ | י | 10.34 מ״מ |
| Noto Serif Hebrew | 700 | 4.28 מ״מ | צ | 11.20 מ״מ |
| Bellefair | 400 | 2.54 מ״מ | ז | 18.88 מ״מ |
How the measurement works
Rasterise the 22 Hebrew consonants at 400px/em, skeletonise (Zhang-Suen), exact Euclidean distance transform, then 2x the 15th percentile of each glyph's skeleton distances; the family figure is the thinnest glyph's. Measured on the shipped subset of each static instance. The floor for shipping is 0.045em; a family's recommended weight is the lightest one at or above 0.05em.
Fonts come from google/fonts
at commit e44c4b011a, pinned so a measurement cannot change
under us. Variable families are instanced at an explicit weight before anything is measured —
Noto Sans Hebrew, for instance, measures only 0.0255em at its file default, because that default is the lightest weight in the family.
Recommended
Rubik
שלום עולם
Geometric sans with true Hebrew design, not a Latin face with Hebrew bolted on. The safest default for a sign.
Fredoka
שלום עולם
Rounded and very heavy. The thickest strokes in the catalogue, so the most forgiving to print.
Varela Round
שלום עולם
Single weight, softly rounded terminals. Reads as friendly at door-sign size.
Heebo
שלום עולם
Hebrew companion to Roboto: neutral, tall x-height, pairs cleanly with Latin.
Miriam Libre
שלום עולם
A Hebrew workhorse. Squarer than Rubik, with strong horizontals that print well.
Suez One
שלום עולם
Display slab with heavy weight built in -- no bold needed, because there is only one weight.
The rest of the catalogue
Karantina
שלום עולם
Condensed. The one to pick when the text is long and the plate is not.
Gveret Levin
שלום עולם
Brush lettering with an uneven, hand-drawn edge.
IBM Plex Sans Hebrew
שלום עולם
Corporate-neutral and very evenly weighted. Good for office and room signs.
Secular One
שלום עולם
Single-weight display sans, a little narrower than Suez One.
Alef
שלום עולם
Plain, quiet Hebrew sans. The one the app shipped with before this catalogue existed.
Noto Sans Hebrew
שלום עולם
The only family here that combines a printable weight with full niqqud AND cantillation marks. Pick it for pointed or liturgical text.
David Libre
שלום עולם
The classic Israeli serif, in its libre revival. Calligraphic, with real thick/thin contrast.
Noto Serif Hebrew
שלום עולם
Serif counterpart to Noto Sans Hebrew, with the same wide mark coverage.
Bellefair
שלום עולם
Decorative and deliberately thin -- an elegant single weight, not a printable one. Use it large, on a backplate, and expect fragile letters.
Fonts we do not ship, and why
A Hebrew font can be beautiful on screen and impossible to print. These are the families people ask for most often, with the reason each one is not in the list above.
| Family | Why not |
|---|---|
| Frank Ruhl Libre | Hairline horizontals by design. Measured at the pinned commit: 0.0316em at the file default and still only 0.0354em at Black -- below the 0.045em floor at every weight, so there is no weight to ship. The thinnest letter is yod in both cases. (re-measured on every build) |
| Lunasima | Carries niqqud glyphs with no mark positioning behind them, so every vowel point stacks on the letter origin. Verified with the same GPOS probe the shaping engine uses (src/shaping/niqqud.ts). (re-measured on every build) |
| Handjet | An element font: each glyph is drawn from dozens of separate shapes, so one letter extrudes to dozens of disconnected bodies. |
| Solitreo | Joined cursive. The strokes self-intersect at the joins, which a 2D boolean heals into a shape that no longer looks like the letter. |
| Amatic SC | Condensed hand-drawn face with hairline strokes. Nothing to print at any weight. |
| Tinos | A metric clone of a Latin serif; its Hebrew is thin and secondary to the Latin design. |
| Bona Nova | Revival serif with hairline strokes and high contrast. |
| Cardo | Scholarly serif; the Hebrew is a thin secondary script inside a Latin face. |
| Rubik 80sfade | A decorative Rubik sibling, not a weight of Rubik. Built from overlapping or disconnected elements that read as texture on screen and as a broken mesh in a slicer. |
| Rubik Beastly | A decorative Rubik sibling, not a weight of Rubik. Built from overlapping or disconnected elements that read as texture on screen and as a broken mesh in a slicer. |
| Rubik Brokenfax | A decorative Rubik sibling, not a weight of Rubik. Built from overlapping or disconnected elements that read as texture on screen and as a broken mesh in a slicer. |
| Rubik Bubbles | A decorative Rubik sibling, not a weight of Rubik. Built from overlapping or disconnected elements that read as texture on screen and as a broken mesh in a slicer. |
| Rubik Burned | A decorative Rubik sibling, not a weight of Rubik. Built from overlapping or disconnected elements that read as texture on screen and as a broken mesh in a slicer. |
| Rubik Dirt | A decorative Rubik sibling, not a weight of Rubik. Built from overlapping or disconnected elements that read as texture on screen and as a broken mesh in a slicer. |
| Rubik Distressed | A decorative Rubik sibling, not a weight of Rubik. Built from overlapping or disconnected elements that read as texture on screen and as a broken mesh in a slicer. |
| Rubik Doodleshadow | A decorative Rubik sibling, not a weight of Rubik. Built from overlapping or disconnected elements that read as texture on screen and as a broken mesh in a slicer. |
| Rubik Doodletriangles | A decorative Rubik sibling, not a weight of Rubik. Built from overlapping or disconnected elements that read as texture on screen and as a broken mesh in a slicer. |
| Rubik Gemstones | A decorative Rubik sibling, not a weight of Rubik. Built from overlapping or disconnected elements that read as texture on screen and as a broken mesh in a slicer. |
| Rubik Glitch | A decorative Rubik sibling, not a weight of Rubik. Built from overlapping or disconnected elements that read as texture on screen and as a broken mesh in a slicer. |
| Rubik Glitchpop | A decorative Rubik sibling, not a weight of Rubik. Built from overlapping or disconnected elements that read as texture on screen and as a broken mesh in a slicer. |
| Rubik Iso | A decorative Rubik sibling, not a weight of Rubik. Built from overlapping or disconnected elements that read as texture on screen and as a broken mesh in a slicer. |
| Rubik Lines | A decorative Rubik sibling, not a weight of Rubik. Built from overlapping or disconnected elements that read as texture on screen and as a broken mesh in a slicer. |
| Rubik Maps | A decorative Rubik sibling, not a weight of Rubik. Built from overlapping or disconnected elements that read as texture on screen and as a broken mesh in a slicer. |
| Rubik Markerhatch | A decorative Rubik sibling, not a weight of Rubik. Built from overlapping or disconnected elements that read as texture on screen and as a broken mesh in a slicer. |
| Rubik Maze | A decorative Rubik sibling, not a weight of Rubik. Built from overlapping or disconnected elements that read as texture on screen and as a broken mesh in a slicer. |
| Rubik Microbe | A decorative Rubik sibling, not a weight of Rubik. Built from overlapping or disconnected elements that read as texture on screen and as a broken mesh in a slicer. |
| Rubik Monoone | A decorative Rubik sibling, not a weight of Rubik. Built from overlapping or disconnected elements that read as texture on screen and as a broken mesh in a slicer. |
| Rubik Moonrocks | A decorative Rubik sibling, not a weight of Rubik. Built from overlapping or disconnected elements that read as texture on screen and as a broken mesh in a slicer. |
| Rubik One | A decorative Rubik sibling, not a weight of Rubik. Built from overlapping or disconnected elements that read as texture on screen and as a broken mesh in a slicer. |
| Rubik Pixels | A decorative Rubik sibling, not a weight of Rubik. Built from overlapping or disconnected elements that read as texture on screen and as a broken mesh in a slicer. |
| Rubik Puddles | A decorative Rubik sibling, not a weight of Rubik. Built from overlapping or disconnected elements that read as texture on screen and as a broken mesh in a slicer. |
| Rubik Scribble | A decorative Rubik sibling, not a weight of Rubik. Built from overlapping or disconnected elements that read as texture on screen and as a broken mesh in a slicer. |
| Rubik Spraypaint | A decorative Rubik sibling, not a weight of Rubik. Built from overlapping or disconnected elements that read as texture on screen and as a broken mesh in a slicer. |
| Rubik Storm | A decorative Rubik sibling, not a weight of Rubik. Built from overlapping or disconnected elements that read as texture on screen and as a broken mesh in a slicer. |
| Rubik Vinyl | A decorative Rubik sibling, not a weight of Rubik. Built from overlapping or disconnected elements that read as texture on screen and as a broken mesh in a slicer. |
| Rubik Wetpaint | A decorative Rubik sibling, not a weight of Rubik. Built from overlapping or disconnected elements that read as texture on screen and as a broken mesh in a slicer. |