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 מ״מ הוא חצי.

פייה של 0.4 מ״מ צריכה לפחות 0.8 מ״מ כדי להניח שני קווי היקף. מתחת לזה הסלייסר עלול לדלג על הקיר.

גופןמשקלהקו הדק ביותר ב־60 מ״מבאותהגובה המינימלי לקו של 0.8 מ״מ
Fredoka70012.10 מ״מג3.97 מ״מ
Rubik70010.54 מ״מג4.55 מ״מ
Karantina7009.43 מ״מז5.09 מ״מ
Suez One4009.36 מ״מש5.13 מ״מ
Miriam Libre7009.01 מ״מז5.33 מ״מ
Secular One4009.01 מ״מש5.33 מ״מ
Gveret Levin4008.43 מ״מד5.69 מ״מ
Alef7008.12 מ״ממ5.91 מ״מ
Noto Sans Hebrew7006.78 מ״מז7.08 מ״מ
Varela Round4005.99 מ״מג8.02 מ״מ
Heebo7005.91 מ״מא8.13 מ״מ
IBM Plex Sans Hebrew7005.65 מ״מז8.49 מ״מ
David Libre7004.64 מ״מי10.34 מ״מ
Noto Serif Hebrew7004.28 מ״מצ11.20 מ״מ
Bellefair4002.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

שלום עולם

Hubert and Fischer, Meir Sadan, Cyreal, Daniel Grumer, Omaima Dajani · SIL Open Font License 1.1 · recommendedniqqudLatin too

Geometric sans with true Hebrew design, not a Latin face with Hebrew bolted on. The safest default for a sign.

Minimum stroke: 700 → 0.123em, 900 → 0.130em · recommended weight 700

Fredoka

שלום עולם

Milena Brandão, Hafontia · SIL Open Font License 1.1 · recommendedniqqudLatin too

Rounded and very heavy. The thickest strokes in the catalogue, so the most forgiving to print.

Minimum stroke: 700 → 0.141em · recommended weight 700

Varela Round

שלום עולם

Joe Prince · SIL Open Font License 1.1 · recommendedniqqudLatin too

Single weight, softly rounded terminals. Reads as friendly at door-sign size.

Minimum stroke: 400 → 0.070em · recommended weight 400

Heebo

שלום עולם

Oded Ezer · SIL Open Font License 1.1 · recommendedniqqudLatin too

Hebrew companion to Roboto: neutral, tall x-height, pairs cleanly with Latin.

Minimum stroke: 700 → 0.070em, 900 → 0.090em · recommended weight 700

Miriam Libre

שלום עולם

Michal Sahar · SIL Open Font License 1.1 · recommendedniqqudLatin too

A Hebrew workhorse. Squarer than Rubik, with strong horizontals that print well.

Minimum stroke: 700 → 0.104em · recommended weight 700

Suez One

שלום עולם

Michal Sahar · SIL Open Font License 1.1 · recommendedniqqudLatin too

Display slab with heavy weight built in -- no bold needed, because there is only one weight.

Minimum stroke: 400 → 0.105em · recommended weight 400

The rest of the catalogue

Karantina

שלום עולם

Rony Koch · SIL Open Font License 1.1 · niqqudLatin too

Condensed. The one to pick when the text is long and the plate is not.

Minimum stroke: 700 → 0.110em · recommended weight 700

Gveret Levin

שלום עולם

AlefAlefAlef · SIL Open Font License 1.1 · niqqudLatin too

Brush lettering with an uneven, hand-drawn edge.

Minimum stroke: 400 → 0.096em · recommended weight 400

IBM Plex Sans Hebrew

שלום עולם

Mike Abbink, Bold Monday · SIL Open Font License 1.1 · niqqudLatin too

Corporate-neutral and very evenly weighted. Good for office and room signs.

Minimum stroke: 700 → 0.066em · recommended weight 700

Secular One

שלום עולם

Michal Sahar · SIL Open Font License 1.1 · niqqudLatin too

Single-weight display sans, a little narrower than Suez One.

Minimum stroke: 400 → 0.100em · recommended weight 400

Alef

שלום עולם

Hagilda, Mushon Zer-Aviv · SIL Open Font License 1.1 · niqqudLatin too

Plain, quiet Hebrew sans. The one the app shipped with before this catalogue existed.

Minimum stroke: 700 → 0.095em · recommended weight 700

Noto Sans Hebrew

שלום עולם

Google · SIL Open Font License 1.1 · niqqudcantillationLatin too

The only family here that combines a printable weight with full niqqud AND cantillation marks. Pick it for pointed or liturgical text.

Minimum stroke: 700 → 0.081em · recommended weight 700

David Libre

שלום עולם

Monotype Imaging Inc., SIL International, Meir Sadan · SIL Open Font License 1.1 · niqqudLatin too

The classic Israeli serif, in its libre revival. Calligraphic, with real thick/thin contrast.

Minimum stroke: 700 → 0.051em · recommended weight 700

Noto Serif Hebrew

שלום עולם

Google · SIL Open Font License 1.1 · niqqudcantillationLatin too

Serif counterpart to Noto Sans Hebrew, with the same wide mark coverage.

Minimum stroke: 700 → 0.051em · recommended weight 700

Bellefair

שלום עולם

Nick Shinn, Liron Lavi Turkenic · SIL Open Font License 1.1 · decorative — thinniqqudLatin too

Decorative and deliberately thin -- an elegant single weight, not a printable one. Use it large, on a backplate, and expect fragile letters.

Minimum stroke: 400 → 0.029em — no printable weight

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.

FamilyWhy not
Frank Ruhl LibreHairline 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)
LunasimaCarries 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)
HandjetAn element font: each glyph is drawn from dozens of separate shapes, so one letter extrudes to dozens of disconnected bodies.
SolitreoJoined cursive. The strokes self-intersect at the joins, which a 2D boolean heals into a shape that no longer looks like the letter.
Amatic SCCondensed hand-drawn face with hairline strokes. Nothing to print at any weight.
TinosA metric clone of a Latin serif; its Hebrew is thin and secondary to the Latin design.
Bona NovaRevival serif with hairline strokes and high contrast.
CardoScholarly serif; the Hebrew is a thin secondary script inside a Latin face.
Rubik 80sfadeA 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 BeastlyA 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 BrokenfaxA 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 BubblesA 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 BurnedA 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 DirtA 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 DistressedA 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 DoodleshadowA 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 DoodletrianglesA 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 GemstonesA 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 GlitchA 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 GlitchpopA 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 IsoA 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 LinesA 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 MapsA 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 MarkerhatchA 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 MazeA 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 MicrobeA 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 MonooneA 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 MoonrocksA 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 OneA 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 PixelsA 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 PuddlesA 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 ScribbleA 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 SpraypaintA 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 StormA 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 VinylA 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 WetpaintA 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.