๐ค Image to Hebrew Font + โ๏ธ Font Editor
February 9, 2026 ยท View on GitHub
๐ค Image to Hebrew Font + โ๏ธ Font Editor
ืกื ืืืื ืืื ืืืฆืืจื ืืขืจืืื ืฉื ืคืื ืืื ืขืืจืืื
ืฉื ื ืืืื ืืฉืืืืื:
- Font Generator โ ืืืฆืจ ืคืื ื TTF ืืชืืื ืช AI: ืืืืื ืืืืืืื ืฉื ืืืชืืืช, ืฉืืื, ืืืื ืื ืืืฆืืจืช ืงืืืฅ TTF
- Font Editor โ ืขืืจื ืืืืืืื ืืงืืฆื TTF: ืขืจืืืช ื ืงืืืืช, ืฆืืืจ ืงืื ืืืจืื, ืืืืื SVG, ืืืฆืื WOFF/WOFF2, ืขืจืืืช kerning ืืชืฆืืื ืืงืืืื ืืื
๐ ืืชืงื ื ืืืคืขืื
ืืจืืฉืืช ืืืงืืืืช
- Python 3.8 ืืืขืื
- Windows (ื ืืืง ืขื Windows 10/11)
ืืชืงื ื
# 1. ืฉืืคืื ืืจืืคื
git clone https://github.com/UberStorm/Image-To-Hebrew-Font-Generator.git
cd Image-To-Hebrew-Font-Generator
# 2. ืืชืงื ื (ืืืฆืจ venv ืืืืืืืืช ืืืชืงืื ืืืืืืช)
install.bat
ืืคืขืื
# ืืืฆืจ ืคืื ืืื ืืชืืื ื โ ื ืคืชื ื-http://127.0.0.1:5000
run.bat
# ืขืืจื ืคืื ืืื ืืืืืืื โ ื ืคืชื ื-http://127.0.0.1:5001
run_fonteditor.bat
ื ืืชื ืืืจืืฅ ืืช ืฉื ืืื ืืืงืืื.
๐ค Font Generator โ ืืฆืืจืช ืคืื ื ืืชืืื ื
๐ธ ืฆืืืืื ืืกื
| ืืขืืืช ืชืืื ื ืืืืืื | ืฉืืื ืืืชืืืช ืืืืื ืื | ืชืฆืืื ืืงืืืื ืืืฆืืจืช ืคืื ื |
|---|---|---|
![]() | ![]() | ![]() |
โจ ืชืืื ืืช
ืืืืื ืืกืงืืจื
- ืืืืื ืืืืืืื ืฉื ืืืชืืืช โ ืืขืืื ืชืืื ื ืืืืขืจืืช ืืืื ืืช ืื ืืฆืืจืืช ืื ืคืจื
- ืจืืช ืืคืจืื ืืชืืืื ืช (0โ5) โ ืืงืจื ืขื ืขืืฆืืช ืืืคืจืื ืืื ืืืชืืืช ืฆืคืืคืืช
- ืกืงืืจืช ืืืืืืื ืืืืืืืืช โ ืชืฆืืืช Canvas ืขื ืืืื ืื; ืืจืืจื ืืืืกืคืช ืืืืื ืืกืจ, ืืืืฆื ืืืืืงื
- ืืืืื ืืืืฉ โ ืืคืชืืจ re-detect ืขื ืฉืืืื ืขื ืจืืช ืืืคืจืื ืืฉืืจืืช ืืืกืงืืจื
ืฉืืื ืืืชืืืช
- ืฉืืื ืืืงืืืช โ ืืืืฆื ืขื ืืจืืืก + ืืงืืืช ืืืช = ืฉืืื ืืืืื ืขื ืืขืืจ ืืืืืืื
- ืืืืื ืืคืืฆืื โ ืืืืื ืฆืืจืืช ืฉืืืื ืื ืคืจื (ืืื ื ืงืืื + ืืืฃ ืฉื ! ืื ?) ืืคืืฆืื ืฆืืจืืช ืืืจืืืืช
ืชืฆืืื ืืงืืืื ืืืืื ืื
- ืชืฆืืื ืืงืืืื ืืื โ ืืงืืืช ืืงืกื ืืชืฆืืื ืืืืืืช ืฉื ืืื ืืคืื ื ืืืจืื
- ืืืื ืื ืืื ืืืช โ ืืืื (Scale), ืืืื ืื ืืืช/ืืืคืงืืช, ืจืืืื (Spacing)
- ืืืื ืื ืืืืืื โ ืืืืช ืืืืจืืช ืขื ืื ืืืืชืืืช ืืืืืฆื ืืืช
- ืืืืื ืคืจืืคืืจืฆืืื ืืืื โ ืืืชืืืช ืงืื ืืช ื ืฉืืจืืช ืงืื ืืช ืืืกืืช ืืืืืืืช, ืืื ืืคืื ื ืืืืชื
ืืฆืืจืช ืคืื ื
- ืขืงืืืืช Bรฉzier ืืืงืืช โ ืขืงืืืืช ืงืืืืืจืืืืช ืืชืืฆืื ืืงืฆืืขืืช
- ืชืืืื ืืืืจืื โ ืืืชืืืช ืืื ื, ื, ื, ื, ืก ืฉืืืจืืช ืขื ืืืืืื ืืคื ืืืืื
- ืืืชืืืช ืกืืคืืืช ืขื descenders โ ื, ื, ืฃ, ืฅ, ืง โ ืืจืืื ืืืืืืืืช ืืชืืช ืืงื ืืืกืืก
- ืชืืืื ื ืคืืฆืื ื-Arial โ ~46 ืชืืืื (ืกืคืจืืช, ืคืืกืืง, ืกืืืจืืื) ืืืืจืงืื ืืืืืืืืช
- ืืื-ืืืื โ ืฉื ืืืฆืจ, ืชืืืืจ, ืืจืกื, ืจืืฉืืื, ืืชืจ (ืืืคืฆืืื ืื)
ืฉืืืจื ืืืขืื ืช ืคืจืืืงื
- ืืืฆืื/ืืืืื ืคืจืืืงื (.hfm) โ ืฉืืืจืช ืื ืืฆื ืืขืืืื ืืงืืืฅ ืขืฆืืื: ืชืืื ื, ืืืืืืื, ืฉืืืืื, ืืืื ืื ืื, ืืื-ืืืื
๐ ืฉืืื ืขืืืื
| ืฉืื | ืชืืืืจ |
|---|---|
| 1 โ ืืขืืืช ืชืืื ื | ืืขืืืช ืชืืื ื ืขื ืืืชืืืช (ืื ืืขืื ืช ืคืจืืืงื .hfm). ืืืื ืื ืจืืช ืืคืจืื (0โ5) |
| 2ื โ ืกืงืืจืช ืืืืืืื | ืืืื ืื ืฆืืขืื ืืื ืขื ืื ืฆืืจื. ืืจืืจื ืืืืกืคื, ืืืืฆื ืืืืืงื, ืืืืื ืืืืฉ |
| 2ื โ ืฉืืื ืืืชืืืช | ืืืืฆื ืขื ืืจืืืก + ืืงืืืช ืืืช. ืืืืื/ืคืืฆืื ืืคื ืืฆืืจื |
| 3 โ ืชืฆืืื ืืงืืืื | ืืงืืืช ืืงืกื, ืืืื ืื ืืืื/ืืืื/ืจืืืื ืืื ืืืช, "ืืื ืขื ืืื" |
| 4 โ ืืฆืืจืช ืคืื ื | ืืืืจืช ืฉื, ืืื-ืืืื, ืืฆืืจื. ืืงืืืฅ ื ืฉืืจ ื-fonts_output/. ืืืฆืื ืคืจืืืงื |
โ๏ธ Font Editor โ ืขืืจื ืคืื ืืื ืืืืืืื
ืขืืจื ืืืืืืื ืืงืืฆื TTF โ ืขืจืืืช ื ืงืืืืช ืืงืื ืืืจืื ืืจืืช ืืืืืฃ, ืขื ืชืฆืืื ืืงืืืื ืืื.
๐ธ ืฆืืืื ืืกื
| ืขืจืืืช ื ืงืืืืช ืืงืื ืืืจืื | ืืืื ืืชืงืืืื ืืืฆืื |
|---|---|
![]() | ![]() |
โจ ืชืืื ืืช
ืขืจืืื ืืกืืกืืช
- ืืขืื ืช ืคืื ื โ ืืจืฉืืืช ืคืื ืืื ืงืืืืื ืื ืืขืืืช TTF
- ืชืฆืืืช ืืืืคืื โ ืจืฉืช ืขื ืืืคืืฉ ืืคื ืชื / ืฉื
- ืขืจืืืช ื ืงืืืืช โ ืืจืืจื, ืืฆืื (Shift=1px, ืจืืื=10px), ืฉืื ืื ืจืืื
- ืฉืืืจื / ืฉืืืจื ืืฉื โ Ctrl+S ืื ืืคืชืืจ
- ืชืฆืืื ืืงืืืื ืืื โ ืกืจืื ืชืฆืืื ืืงืืืื ืืชืืชืืช ืขื ืฉืืืื ืขื ืืืื
ืืืื ืืชืงืืืื
- ืืืืจื ืืจืืื (Multi-select) โ Ctrl+Click, Shift+Click, Ctrl+A, ืื ืืจืืจืช ืืจืงืืื (M)
- ืืจื ืกืคืืจืืฆืืืช ืืืืจื โ ืืืื, ืงื ื ืืืื, ืืืืงื ืฉื ื ืงืืืืช ื ืืืจืืช
- ืืื ืขื (Pen Tool) โ ืฆืืืจ ืงืื ืืืจืื ืืืฉืื (P), Alt+Click ืื ืงืืืืช off-curve
- ืฉืืืืช / ืงืื ืืืจืื โ ืื ืงืื ืืืจ ืืฉืืื ืขื ืฆืืข, ื ืืจืืืช, ืืืืงื
- ืขืืืื ืคืื ืืช (Smooth Corners) โ ืืืืจืช ื ืงืืืืช on-curve โ ืืคืชืืจ "ืขืื ืคืื ืืช" ืขื ืืงืจืช ืจืืืืก
- ืืืืคืช ืกืื ื ืงืืื โ ืืขืืจ ืืื on-curve ื-off-curve ืืืืืฆื
- ืืืืื/ืืืจื (Undo/Redo) โ Ctrl+Z / Ctrl+Y, ืขื 50 ืจืืืช ืืื ืืืืฃ
ืฉืื ืื ืฆืืจื (Transform)
- ืืคืืื (Flip) โ ืืืคืงื (H) ืืื ืื (Shift+H), ืื ืงืืืืช ื ืืืจืืช ืื ืืืืืฃ ืฉืื. ืื ืืคืชืืจืื ื-toolbar: โ / โ
- ืกืืืื (Rotate) โ 90ยฐ (R), -90ยฐ (Shift+R)
- ืืขืชืงื ืืืืืงื โ Ctrl+C/V ืื ืงืืืืช ื ืืืจืืช, ืืขืชืงืช ืืืืฃ ืฉืื ืืืืืฃ ืืืจ
- ืืืกืคืช ื ืงืืื ืขื ืงืืข โ ืงืืืง ืืื ื ืขื ืงื โ "ืืืกืฃ ื ืงืืื ืืื"
- ืชืคืจืื ืืงืฉืจ (Right-click) โ ืืืฉื ืืืืจื ืืืืืงื, ืืคืืื, ืกืืืื, ืืขืชืงื/ืืืืงื
ืืืืื/ืืืฆืื (v5 โ ืืืฉ โจ)
- ืืืืื SVG โ ืืืืงืช ื ืชืื SVG (ืชืืื
d) ืื ืืขืืืช ืงืืืฅ SVG โ ืืืจื ืืืืืืืืช ืื ืงืืืืช TrueType - ืืืืื ืชืืื ื (v5.1 โ ืืืฉ โจ) โ ืืขืืืช ืชืืื ื (PNG/JPG) ืฉื ืืืช/ืชื ืืืืจื ืืืืืืืืช ืืงืื ืืืจืื ืืงืจืืืช TrueType
- ืืืฆืื WOFF / WOFF2 / TTF โ ืชืคืจืื Export ืขื ืฉืืืฉื ืคืืจืืืื. WOFF2 ืืืจืฉ ืืืืืช
brotli - ืขืจืืืช ืืื-ืืืื โ ืฉื, ืืจืกื, ืืขืฆื, URL, ืจืืฉืืื, Ascender/Descender/LineGap
ืืื ืงื ืืก (v5 โ ืืืฉ โจ)
- ืืืืืช ืืืืื (Bรฉzier Handles) โ ืงืืืื ืืงืืืงืืืื ืื ืงืืืืช off-curve ืืฉืื ืืช on-curve, ื ืืชื ืื ืืืจืืจื
- ืืฆืืื ืืจืฉืช (Snap to Grid) โ ื ืงืืืืช ื ืฆืืืืช ืืจืฉืช ืืชืืืื ืช; ืจืฉืช ืืืฆืืช ืืฉืืืช-ืขื ืขื ืืงื ืืก
- ืกืจืืืื (Rulers) โ ืกืจืืืื ืืืคืงื ืืื ืื ืืกืืื ืืงื ืืก, ืืฆืืืื ืืืืืืช ืคืื ื, ืืชืขืืื ืื ืขื ืืื ืืคืื
- ืงืืื ืขืืจ ืืืชืืืื (Custom Guidelines) โ ืืืกืคืช ืงืืืื ืืืคืงืืื/ืื ืืืื ืืืืงืื ืืืคืฉื, ืืืื-ืงืืืง ืืืืืงื
ืจืืืื ืืืชืืืช (Kerning) (v5 โ ืืืฉ โจ)
- ืขืืจื kerning โ ืฆืคืืื ืืขืจืืื ืฉื ืื ืืืืืช ืืจืืืื ืืคืื ื
- ืืืกืคื ืืืืืงื ืฉื ืืืืืช โ ืืืืจืช ืฉื ื ืืืืคืื ืืงืืืขืช ืขืจื ืจืืืื (ืืืืื/ืฉืืืื)
ืืืฉืง ืืชืฆืืื (v5 โ ืืืฉ โจ)
- ืคืื ืืื ืืชืงืคืืื โ ืืืฆื ื โ/โถ ืืืืืฆืื ืืช ืคืื ื ืืืืืคืื ืืืช ืคืื ื ืืืืคืืื ืื ืืื ืืืืืื ืืช ืฉืื ืืขืจืืื
- ืชืฆืืื ืืงืืืื ืืจืืืช-ืืืืื โ ืืฆืืื ืืช ืืืงืกื ื-7 ืืืืื (12โ96px) ืืืงืืื
- ืืื ืืคืื โ ืืืืืช ืขืืืจ ืืืื, Space+ืืจืืจื ืืคืื, ืืืฆื "Fit" ืืืืคืืก
- ืชืฆืืืช ืงืืืืจืืื ืืืช โ ืจืืืืฃ ืขื ื ืงืืื ืืฆืื ืืืงืื ืืืืื (on/off curve)
ืืืฉืง ืื-ืฉืคืชื ๐ฎ๐ฑ ๐บ๐ธ
- ืขืืจืืช / ืื ืืืืช โ ืืชื ืฉืคื ืืคืื ืช ืืืืฉืง
- ื ืฉืืจ ืืืคืืคื โ ืืืืืจื ื ืืืจืช ืืื ืืคืขืืืช
- ืื ืืืืจืืืืช ืืชืืจืืืืช โ ืืืชืจ ื-130 ืืืจืืืืช ืชืืจืืื ืืฉืชื ืืฉืคืืช
โจ๏ธ ืงืืฆืืจื ืืงืืืช
| ืงืืฆืืจ | ืคืขืืื |
|---|---|
| V | ืืื ืืืืจื |
| M | ืืจืงืืื |
| P | ืขื |
| H | ืืคืื ืืืคืงื |
| Shift+H | ืืคืื ืื ืื |
| R / Shift+R | ืกืืืื 90ยฐ / -90ยฐ |
| Ctrl+Z | ืืืืื |
| Ctrl+Y / Ctrl+Shift+Z | ืืืจื |
| Ctrl+A | ืืืจ ืืื |
| Ctrl+C | ืืขืชืง ื ืงืืืืช / ืืืืฃ |
| Ctrl+V | ืืืืง |
| Ctrl+S | ืฉืืืจ |
| Delete | ืืืง ื ืงืืืืช / ืืืคืืก ืืืืฃ |
| ืืฆืื | ืืื (10px, Shift=1px) |
| +/- | ืืืื/ืืงืื |
| Space+ืืจืืจื | ืคืื ืืงื ืืก |
| ืืืืืช ืขืืืจ | ืืื |
| ? | ืืฆื ืงืืฆืืจื ืืงืืืช |
| Esc | ืืื ืืืืจื / ืืื ืขื |
๐๏ธ ืืื ื ืืคืจืืืงื
hebrew-font-maker/
โโโ backend/
โ โโโ app.py # ืฉืจืช Flask โ ืืืฆืจ ืคืื ืืื (ืคืืจื 5000)
โ โโโ image_processor.py # ืืืืื ืืืชืืืช, ืงืื ืืืจืื, separation levels
โ โโโ font_generator.py # ืืฆืืจืช TTF โ Bรฉzier, fallback glyphs, metadata
โ โโโ hebrew_support.py # ืืืืื ืืืชืืืช, ืฆืืจืืช ืกืืคืืืช, RTL
โ โโโ font_editor_server.py # ืฉืจืช Flask โ ืขืืจื ืคืื ืืื (ืคืืจื 5001), ืืืืื SVG, ืืืฆืื WOFF/WOFF2, kerning
โโโ frontend/
โ โโโ index.html # ืืืฉืง ืืืฆืจ ืืคืื ืืื (wizard 4 ืฉืืืื)
โ โโโ script.js # ืืืืืงืช UI: ืฉืืื, ืืืืื, ืชืฆืืื ืืงืืืื
โ โโโ style.css # ืขืืฆืื responsive + RTL
โโโ font_editor/
โ โโโ index.html # ืืืฉืง ืขืืจื ืืคืื ืืื
โ โโโ editor.js # ืืืืืงืช ืขืืจื: ืืืืจื, ืขื, ืฉืืืืช, undo, smooth, i18n, Bรฉzier handles, grid snap, rulers, guidelines, kerning, SVG import, multi-preview
โ โโโ editor.css # ืขืืฆืื ืืื ืืขืืจื + ืกืจืืืื, ืจืฉืช, ืงืืื ืขืืจ, ืคืื ืืื ืืชืงืคืืื
โโโ config.py # ืืืืจืืช (ืืืื ืคืื ื, ืกืื ืื, ื ืชืืืื)
โโโ requirements.txt # ืืืืืืช Python
โโโ install.bat # ืกืงืจืืคื ืืชืงื ื (venv + pip)
โโโ run.bat # ืืคืขืืช ืืืฆืจ ืืคืื ืืื
โโโ run_fonteditor.bat # ืืคืขืืช ืขืืจื ืืคืื ืืื
โโโ fonts_output/ # ืชืืงืืืช ืคืื (ื ืืฆืจืช ืืืืืืืืช)
โโโ temp/ # ืงืืฆืื ืืื ืืื (ื ืืฆืจืช ืืืืืืืืช)
๐ง ืืื ืืืืืืืช
| ืจืืื | ืืื ืืืืืื |
|---|---|
| ืฉืจืช | Flask 2.3 + Flask-CORS |
| ืขืืืื ืชืืื ื | OpenCV 4.8 (Otsu, RETR_CCOMP, morphological operations) |
| ืืฆืืจืช/ืขืจืืืช ืคืื ืืื | fontTools (FontBuilder, TTGlyphPen, GlyphCoordinates, SVGPathPen) |
| ืฆื ืืงืื | Vanilla HTML/CSS/JS, Canvas API, SVG (ืืื frameworks) |
| ืืืฆืื | WOFF, WOFF2 (ืืืจืฉ brotli), TTF |
| ืกืืืื | Python venv, Windows batch scripts |
๐ ืืขืจืืช ืืื ืืืช
ืืืฆืจ ืืคืื ืืื
- ืืืชืืืช ืกืืคืืืช:
ืฃ,ืฅ,ื,ื,ืงโ ืืืื ืืืืืืืืช ืฉื -200 ืืืืืืช ืืชืืช ืืงื ืืืกืืก - ืืืจืื ืืืืชืืืช: ืฉืืืืฉ ื-
RETR_CCOMPืืืืืื ืงืื ืืืจืื ืืืฆืื ืืื ืืคื ืืืืื ืื ืคืจื - ืขืงืืืืช ืืืงืืช:
qCurveToโ B-spline ืฉืื ืื ืื ืงืืืืช ืื off-curve, ืื ืงืืืืช ืืืืฆืข ืื on-curve - ืืืืืฅ ื ืืื: ืงืื ืืืจืื ืืืชืืื ื ืืืงืืจืืช (ืื ืืืขืืืืช) ืืฉืืืจืช ืฆืืจื
- ืจืืืช ืืคืจืื: erosion/dilation ืขื kernel ืฉืืื ืืคื ืจืื (0โ5)
- Fallback glyphs: ~46 ืชืืืื ื-Arial, ืืืชืืืื ื-unitsPerEm=1024
- ืืืฆืื ืคืจืืืงื (v2): .hfm โ ืชืืื ื + ืงืื ืืืจืื + ืฉืืืืื + ืืืื ืื ืื + ืืื-ืืืื ืืงืืืฅ ืขืฆืืื
ืขืืจื ืืคืื ืืื
- TrueType points: ื ืงืืืืช on-curve (flag=1) ืืืฆืจืืช ืงืืืื ืืฉืจืื, off-curve (flag=0) โ ืขืงืืืืช ืงืืืืืจืืืืช
- Smooth corners: ืืืืคืช ื ืงืืืช ืคืื ื ื-3 ื ืงืืืืช (on โ off โ on) ืืืฆืืจืช Bรฉzier curve
- Undo/Redo: ืืืกื ืืช snapshots ืืื ืืืืฃ (ืขื 50 ืจืืืช), ืื ืคืขืืืช ืขืจืืื ืฉืืืจืช ืืฆื ืืคื ื ืืฉืื ืื
- i18n: ืืืืื ืชืจืืื 130+ ืืืจืืืืช, ืฉืคื ื ืฉืืจืช ื-localStorage, RTL/LTR ืืืืืืื
- ืืืืื SVG: ืคืืจืืง ืืื ืฉื ื ืชืืื SVG (M/L/H/V/Q/C/S/T/A/Z) โ ืืืจืช cubicโquadratic, ืืืคืื Y ืืงืืืืจืืื ืืืช ืคืื ื, scale ืืชืืืื ื
- ืืืฆืื WOFF/WOFF2: ืฉืืืืฉ ื-fontTools flavor attribute. WOFF2 ืืืจืฉ ืืืืืช
brotli(ืืืชืงื ืช ื-requirements) - Kerning: ืงืจืืื/ืืชืืื ืฉื kern table format 0 ืืจื fontTools. ืชืฆืืืช ืืืืืช ืขื ืฉืืืช ืืืืคืื
- Bรฉzier handles: ืงืืืื ืืงืืืงืืืื ืืื ื ืงืืืืช off-curve ืืฉืื ืืชืืื โ ืืืืืืืืืฆืื ืฉื ืขืงืืืืช ืืฉืืืื
- Snap to grid: ืืฆืืื ืืืื โ snapVal() ืืขืื ืืืคืืืืช ืฉื gridSnapSize (ืืจืืจืช ืืืื 50 ืืืืืืช)
- Rulers: Canvas API ืืฆืืืจ ืกืจืืืื ืืืคืงื/ืื ืื, rulerStep() ืืืฉื ืืจืืื ืืืคืืืื ืืคื ืจืืช ืืืื
- Custom guidelines: ืงืืืื ืืืคืงืืื/ืื ืืืื ืืืคืฉืืื, ื ืฉืืจืื ื-State, ืืืื-ืงืืืง ืืืืืงื
๐ ืจืืฉืืื
MIT License




