- זוג פונטים (display + body) לפרויקט אישי — עם הסבר למה בחרתם, והתאמה לעברית ולאנגלית
- Typographic scale שלם עם CSS custom properties — display / h1 / h2 / h3 / h4 / body / caption עם clamp() responsive, מוכן להעתיק-הדבק
- Typography Spec Template — פרומפט ל-AI — מסמך מובנה שמגדיר טיפוגרפיה, משקלים, line-height ו-spacing, שתוכלו להעתיק לתחילת כל פרויקט
- Hebrew Font Decision Matrix — טבלה של 5 פונטים עבריים מובילים (Heebo, Assistant, Rubik, Secular One, Noto Sans Hebrew) עם התאמה לכל use-case
- קובץ @import מאופטם — טעינה של Google Fonts עם רק המשקלים שצריך, font-display: swap, ו-preconnect — ללא FOIT
- 5 זיווגי פונטים עבריים+אנגלית מוכחים — Heebo+Inter, Assistant+IBM Plex Mono ועוד — כולל מתי להשתמש בכל אחד
- מילון של 15 מונחי טיפוגרפיה — font pairing, variable fonts, clamp(), letter-spacing, FOUT/FOIT ועוד
- תוכלו לבחור זוג פונטים (display + body) שעובדים ביחד ומתאימים לאופי האתר, על סמך 4 כללי pairing
- תוכלו להגדיר typographic hierarchy שלם — h1 עד h6 ו-body — עם גדלים, משקלים, line-height ו-letter-spacing מדויקים ב-CSS custom properties
- תוכלו לטעון Google Fonts ו-variable fonts בצורה יעילה — עם preconnect, font-display: swap, ובחירת משקלים בלבד — בלי לפגוע ב-LCP
- תוכלו להתמודד עם טיפוגרפיה עברית — לבחור מתוך 5 הפונטים המובילים, לטפל ב-RTL, ב-mixed content (עברית+אנגלית), ולנסח פרומפט שמנחה AI לעשות זאת נכון
- פרקים קודמים: אין — הפרק עצמאי. מומלץ (אך לא חובה) לקרוא את פרק 3 (תורת הצבע) כי הוא מציג את CSS custom properties שנשתמש בהם כאן
- מושגים שיחזרו: visual hierarchy (מפרק 1), CSS custom properties ו-design tokens (מפרק 3)
- כלים: גישה ל-Google Fonts (חינם, ללא הרשמה), דפדפן Chrome/Edge עם DevTools, וכלי AI לבניית אתרים (Bolt / Lovable / v0 / Claude)
- אופציונלי: חשבון ב-Fontshare לגישה לפונטים פרימיום, או חשבון ב-HebrewFonts.co.il לפונטים עבריים מסחריים
- זמן משוער: 100-120 דקות (כולל התרגילים והרצת פרומפטים)
לאורך הקורס אתם בונים את היכולת להפוך אתר גנרי שAI בנה לאתר שנראה כמו עבודת סטודיו — ה-capstone בפרק 13. בפרק הקודם (פרק 3) בניתם פלטת צבעים שלמה עם design tokens. בפרק הזה אתם מוסיפים שכבה שנייה: הטיפוגרפיה — אולי ההחלטה הוויזואלית החשובה ביותר באתר. שני הפרקים (3 + 4) ביחד נותנים לכם את שתי השכבות הראשונות של design system: צבע וטקסט. בפרק הבא (פרק 5) נעבור ל-Layout — Grid, Flexbox, ואמנות הרווח הלבן — שבו תראו איך צבע + טיפוגרפיה + spacing הופכים לאתר שלם.
| מונח (English) | תרגום | הגדרה בשורה אחת |
|---|---|---|
| Font Pairing | זיווג פונטים | השילוב של 2 פונטים (display + body) שעובדים ביחד — יוצרים קונטרסט בלי להתנגש |
| Display Font | פונט לכותרות | הפונט לכותרות גדולות (H1, H2) — בולט, דקורטיבי, בעל אישיות |
| Body Font | פונט לטקסט | הפונט לגוף הטקסט — נוח לקריאה בגדלים קטנים, ניטרלי ויזואלית |
| Typographic Hierarchy | היררכיה טיפוגרפית | מערכת של גדלים ומשקלים (H1 גדול וכבד, H2 בינוני, body קטן) שמנחה את העין |
| Google Fonts | גוגל פונטס | שירות חינמי של Google עם 1,500+ פונטים שאפשר לטעון דרך @import או link |
| Variable Fonts | פונטים משתנים | קובץ פונט יחיד שכולל את כל המשקלים והרוחבים — חוסך bandwidth בצורה משמעותית |
| font-display: swap | החלפת פונט | CSS property שגורם לדפדפן להציג fallback מיד, ואז להחליף לפונט האמיתי כשהוא נטען |
| FOUT | הבהוב טקסט | Flash of Unstyled Text — הטקסט מופיע בפונט fallback ואז "קופץ" לפונט האמיתי |
| FOIT | טקסט בלתי נראה | Flash of Invisible Text — הטקסט בכלל לא מופיע עד שהפונט נטען (הבעיה של font-display: block) |
| line-height | גובה שורה | המרחק האנכי בין שורות טקסט — 1.5 ל-body, 1.1 ל-headings |
| letter-spacing | מרווח אותיות | המרחק האופקי בין אותיות — שלילי לכותרות גדולות, חיובי ל-UPPERCASE |
| clamp() | הגבלת ערך | CSS function שמגדירה גודל מינימום/אידאלי/מקסימום — responsive בלי breakpoints |
| Hebrew Fonts | פונטים עבריים | פונטים שעוצבו בשביל הא"ב העברי — מצומצמים בכמות אבל איכותיים בעשור האחרון |
| RTL Typography | טיפוגרפיה ימין-לשמאל | טיפוגרפיה בכיוון ימין-לשמאל — כולל אתגרים של alignment, פיסוק, ותוכן מעורב |
| Mixed Content | תוכן מעורב | כשעברית ואנגלית מופיעות באותו משפט — דורש ניהול bidi (bidirectional) |
4.1 למה טיפוגרפיה לבד משנה את הכל
יש ניסוי שאני מבקש מכל לומד לעשות לפני הפרק הזה: קחו את האתר הגנרי שבניתם עם AI (מ-Do Now #1 בפרק 1), ותחליפו רק את הפונט. לא את הצבעים, לא את ה-layout, לא את התוכן — רק את הפונט. החליפו את Inter ב-זוג Fraunces (לכותרות) + Inter (לטקסט). תעדכנו את הגדלים: H1 יעבור ל-56px, body ל-17px, line-height ל-1.6.
מה שיקרה אתם תראו בעיניכם. האתר "מתנער" מהרושם של "AI בנה אותי" תוך שינוי של 3 שורות CSS. אותו layout, אותם צבעים, אותו תוכן — ופתאום הוא מרגיש מעוצב. זו עוצמת הטיפוגרפיה: היא המשתנה היחיד שכמעט תמיד הופך אתר ממשעמם למרשים.
למה דווקא טיפוגרפיה?
שלוש סיבות עיקריות:
- 95% מהאתר הוא טקסט. הסתכלו על כל אתר — Stripe, Linear, Apple, monday.com. מה אתם רואים יותר מהכל? טקסט. טקסט בגדלים שונים, משקלים שונים, מיקומים שונים. אם הטקסט מעוצב טוב, האתר מעוצב טוב. אם הטקסט גנרי, האתר גנרי.
- הפונט הוא האישיות של המותג. Fraunces משדר editorial ומכובד. Space Grotesk משדר startup עכשווי. Playfair Display משדר יוקרה קלאסית. Rubik משדר friendly ונגיש. ברגע שבחרתם פונט, בחרתם אישיות. Inter לבד = אין אישיות (וזה בדיוק הבעיה של AI slop).
- היררכיה טיפוגרפית מחליפה 80% מהעיצוב. אתר עם H1 בגודל 56px ו-body בגודל 17px, עם line-height 1.6 ו-spacing נדיב, נראה "מעוצב" גם בלי איורים, בלי תמונות גדולות, בלי אנימציות. היררכיה נכונה היא העיצוב.
טיפוגרפיה היא השקעה עם התמורה הגבוהה ביותר לדקה בכל הקורס. 15 דקות של הגדרת font pairing + scale + line-height משפרות את האתר יותר מ-3 שעות של שינויי layout ואנימציות. זה המקום להתחיל כשאתם משדרגים אתר גנרי.
למה AI לא עושה את זה לבד
כבר ראינו בפרק 1 ש-AI ברירת-מחדל משתמש ב-Inter לכל דבר. אבל הבעיה עמוקה יותר:
- AI לא יודע להחליט על אישיות. בלי הנחיה על tone (editorial / playful / luxury / technical), הוא בוחר את הפונט "הבטוח ביותר" — וזה Inter.
- AI לא בונה scale אמיתי. הוא יעדיף H1=36px, H2=28px, H3=22px, body=16px — ההפרש הקטן הזה יוצר אתר בלי היררכיה ויזואלית ברורה.
- AI מתעלם מ-line-height. ברוב המקרים הוא ישאיר default (1.5 לכל דבר), בלי להבדיל בין headings (1.1) ל-body (1.6).
- AI בעברית — קטסטרופה. בלי הנחיה ספציפית, הוא יטען Rubik או Heebo וישאיר את הטקסט באנגלית באותו פונט — אם זה בכלל ירונדר נכון.
התפקיד שלכם בפרק הזה: ללמוד מה לבקש, ובאיזה פורמט, כדי שAI יעשה את כל זה נכון מהרגע הראשון.
פתחו את האתר הגנרי שבניתם עם AI. לחצו F12, בחרו את הכותרת הראשית. בדקו ב-Computed tab: מה ה-font-family? מה ה-font-size? מה ה-font-weight? מה ה-line-height? רשמו. עכשיו בדקו את גוף הטקסט. סבירות גבוהה שתמצאו Inter בכל מקום, עם הפרשי גודל קטנים, ו-line-height זהה. רשמו את הערכים — נשווה בסוף הפרק.
פתחו 3 אתרים שאתם מכירים: Stripe.com, Linear.app, ו-monday.com. על כל אחד — הפעילו F12 על הכותרת הראשית. בדקו את ה-font-family שלה, ואז של body. רשמו את 3 הזוגות. תראו שלכל אחד יש font pairing ברור — לא פונט יחיד.
4.2 סוגי פונטים — serif, sans-serif, display, monospace
לפני שבוחרים פונט, צריך להכיר את 4 המשפחות. כל משפחה משדרת משהו שונה, ומתאימה ל-use-case שונה.
1. Serif — המשפחה הקלאסית
מה זה: פונטים עם "רגליות" קטנות בקצוות האותיות (Times New Roman, Georgia, Playfair Display, Fraunces). מקורם בכתב יד ובדפוס הקלאסי.
מה הם משדרים: editorial, מכובד, מסורתי, אמין. השימוש הקלאסי: עיתונים, ספרים, מגזינים. בעולם ה-web המודרני: landing pages של מותגים שרוצים להיראות "פרימיום" או "מבוגרים" (Apollo, Medium, The New York Times).
מתי להשתמש: כותרות שצריכות לשדר מכובדות — עיתונאי, משפטי, פיננסי, יוקרה, rwb3 editorial. לא מתאים ל-body בגדלים קטנים (האותיות נהרסות מתחת ל-16px).
דוגמאות בולטות: Fraunces (modern serif, variable), Playfair Display (high-contrast, elegant), Lora (soft, readable), Source Serif 4 (professional).
2. Sans-serif — המשפחה המודרנית
מה זה: פונטים ללא רגליות, עם אותיות "נקיות" (Arial, Helvetica, Inter, Roboto, Space Grotesk). Sans = בלי בצרפתית.
מה הם משדרים: modern, neutral, נקי, טכנולוגי. השימוש הקלאסי: UI של אפליקציות, SaaS, startups, כל דבר digital-first.
מתי להשתמש: body text כמעט תמיד (קריא גם בגדלים קטנים), ו-UI components. לכותרות אם ה-tone טכנולוגי/startup.
דוגמאות בולטות: Inter (neutral, דיפולט ל-UI), Space Grotesk (geometric, startup vibes), Manrope (soft, friendly), IBM Plex Sans (corporate modern), Geist (Vercel's house font, 2024-2026 trending).
3. Display — המשפחה הדקורטיבית
מה זה: פונטים בעלי אישיות חזקה שעוצבו ספציפית לכותרות גדולות (Abril Fatface, Rubik Mono One, Bebas Neue, Clash Display). הם לא מיועדים לטקסט רגיל — רק ל-hero או ל-callouts.
מה הם משדרים: אישיות חזקה, תלוי בפונט הספציפי — fashion, creative, bold, playful, retro.
מתי להשתמש: רק ל-hero headline, או לכותרות גדולות במיוחד (80px+). לעולם לא ל-body ולא ל-H3 ומטה.
דוגמאות בולטות: Abril Fatface (editorial fashion), Bebas Neue (condensed bold), Clash Display (modern bold), Rubik Mono One (playful-tech).
4. Monospace — המשפחה הטכנית
מה זה: פונטים שכל אות בהם תופסת את אותו רוחב (JetBrains Mono, IBM Plex Mono, Fira Code, Space Mono). מקורם ממכונות כתיבה.
מה הם משדרים: טכנולוגי, precise, code, terminal. בעולם ה-SaaS המודרני: משתמשים בזה בתור accent font ל-labels, numbers, code snippets, ו-badge text.
מתי להשתמש: קוד, גרסאות, מספרים, labels ב-UI טכנולוגי. לא לטקסט רציף.
דוגמאות בולטות: JetBrains Mono (developer-first), IBM Plex Mono (elegant technical), Fira Code (ligatures), Space Mono (retro-futuristic).
פתחו fonts.google.com. בצד שמאל יש סינון — בחרו "Serif". סקרו 5 פונטים. עכשיו החליפו ל-"Sans Serif" וסקרו 5 פונטים. עכשיו "Display". תשימו לב להבדל — Serif מרגיש "ספרותי", Sans-serif "טכני", Display "מייצג". זה ה-תחושה שתעבירו למבקר באתר.
4.3 Font Pairing — כללי הזיווג שעובדים
אתר פרימיום כמעט תמיד משתמש ב-2 פונטים: display font לכותרות ו-body font לטקסט. לפעמים מוסיפים גם monospace כ-accent (ל-labels וקוד). אבל אף פעם לא יותר מ-3 פונטים — זו הדרך המהירה לכאוס ויזואלי.
השאלה: איך בוחרים 2 פונטים שעובדים ביחד? יש 4 כללים שמסדרים 95% מההחלטות.
כלל 1: קונטרסט — לא דמיון
שני פונטים שנראים דומים מדי "מתנגשים" — העין לא יודעת אם הם אותו פונט עם bug או שניים שונים. בחרו 2 פונטים ברורים בהבדל. הדרכים הנפוצות:
- Serif + Sans-serif — הצמד הקלאסי. Fraunces + Inter, Playfair Display + Source Sans 3.
- Display + Sans-serif — פונט דקורטיבי לכותרת + נקי ל-body. Abril Fatface + Manrope.
- Sans-serif כבד + Sans-serif קל — אם שניהם sans-serif, שיהיו במשקלים שונים מאוד. Space Grotesk 700 + Inter 400.
כלל 2: היררכיה ברורה — תפקיד לכל אחד
לפני שבוחרים, תחליטו מי המלך ומי המשרת:
- Display (המלך): כותרות H1, H2, hero. אישיות חזקה, weight 600-800.
- Body (המשרת): כל השאר — פסקאות, UI, labels, buttons. ניטרלי, weight 400-500.
אל תחליפו ביניהם. display שרץ באופן body יהיה מעייף לקריאה. body ב-H1 יהיה חסר אישיות.
כלל 3: אותה "תקופה"
Fraunces (מודרני-קלאסי) + Space Mono (retro) = קונפליקט סגנוני. Playfair Display (אלגנטי) + Rubik Mono One (playful) = כאוס. בחרו 2 פונטים מאותה אווירה:
- Modern-clean (Space Grotesk + Inter)
- Editorial-premium (Fraunces + Inter)
- Playful-friendly (Rubik + Manrope)
- Luxury-classic (Playfair + Source Sans)
כלל 4: קריאות קודם לכל
לא משנה כמה Display יפה, אם ה-body לא קריא, האתר נכשל. בחרו body שהוא:
- קריא ב-14-17px על מסך
- מאוזן ב-x-height (גובה האותיות הקטנות ביחס לגדולות)
- יש לו משקלים 400 + 500 + 600 לפחות
- יש לו תמיכה מלאה בעברית (אם רלוונטי)
5 זיווגי פונטים מוכחים — העתיקו את הזוג שמתאים ל-tone שלכם:
| # | Tone | Display (כותרות) | Body (טקסט) | Accent (monospace) | מתאים ל |
|---|---|---|---|---|---|
| 1 | Modern Tech | Space Grotesk 700 | Inter 400-500 | JetBrains Mono 400 | SaaS, Developer tools, Startups |
| 2 | Editorial Premium | Fraunces 600 | Inter 400 | — | Blogs, Agency, Thought leadership |
| 3 | Luxury Classic | Playfair Display 700 | Source Sans 3 400 | — | Fashion, Hospitality, Jewelry |
| 4 | Playful Friendly | Rubik 700 | Manrope 400 | — | Consumer apps, Gaming, Education |
| 5 | Corporate Modern | IBM Plex Sans 600 | IBM Plex Sans 400 | IBM Plex Mono 400 | Enterprise, B2B, Fintech |
הכלל: אם אתם לא בטוחים — לכו עם #1 (Modern Tech). זה הזוג שעובד על 70% מה-SaaS באינטרנט ותמיד נראה מקצועי.
מה קורה: מתחיל בונה אתר ומחליט "רוצה פונט מיוחד לכותרות, פונט אחר ל-body, פונט שלישי ל-buttons, פונט רביעי ל-footer". התוצאה: כאוס ויזואלי שנראה כמו אתר מ-2005.
למה זה מפתה: פונטים חדשים נראים מעניינים — האינסטינקט הוא לנסות כמה שיותר.
מה לעשות במקום: כלל 2-3: לא יותר מ-2 פונטים (display + body), ואם חייבים — 3 (+ monospace כ-accent). אם מרגיש שחסר גיוון, משחקים עם משקלים של אותו פונט (400, 600, 800) ולא מוסיפים פונט חדש.
מתוך 5 הזיווגים בטבלה, בחרו אחד שמתאים לפרויקט שלכם (אפילו פרויקט היפותטי). כתבו בלוק הערה לעצמכם: "הפרויקט שלי הוא [X], ה-tone [Y], ולכן אני בוחר זוג פונטים [display: Z + body: W] כי [סיבה]". שמירה של ההחלטה הזו מעבר לשנייה חוסכת 20 דקות של היסוס בעתיד.
4.4 Google Fonts — איך לבחור ולטעון נכון
Google Fonts הוא המקור החינמי הטוב ביותר לפונטים ל-web. למעלה מ-1,500 פונטים, תמיכה ב-100+ שפות (כולל עברית), ו-CDN מהיר. אבל יש 3 טעויות נפוצות בטעינה שהורגות performance. נעבור על השיטה הנכונה.
שלב 1: בחירה ב-fonts.google.com
ב-fonts.google.com:
- חפשו את הפונט (למשל "Heebo" או "Fraunces")
- לחצו על הפונט — תיכנסו לעמוד הפונט
- בצד — תסמנו רק את המשקלים שאתם באמת צריכים (לא את כולם!)
- בחרו את ה-subsets הרלוונטיים: latin (אנגלית) + hebrew אם רלוונטי
- קבלו את קוד ה-
<link>או@import
שלב 2: טעינה נכונה ב-HTML
הקוד הנכון לטעינת 2 פונטים, רק המשקלים שצריך, עם preconnect ו-font-display: swap:
<!-- 1. preconnect לפתיחת חיבור מוקדם -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<!-- 2. טעינת הפונטים — רק המשקלים שצריך -->
<link href="https://fonts.googleapis.com/css2?family=Heebo:wght@400;600;800&family=Assistant:wght@400;500&display=swap" rel="stylesheet">
שימו לב ל-4 דברים חשובים:
- 2 שורות preconnect — פותחות חיבור ל-Google לפני הורדת הפונט. חוסכות 100-300ms.
- שילוב 2 פונטים בקריאה אחת —
family=Heebo...&family=Assistant...במקום 2 שורות נפרדות. חוסך HTTP request. - רק משקלים ספציפיים —
wght@400;600;800, לא כל המשקלים. משקל אחד = ~30KB. - display=swap — בסוף ה-URL. חובה (נסביר בסעיף הבא).
שלב 3: שימוש ב-CSS
:root {
--font-display: 'Heebo', system-ui, sans-serif;
--font-body: 'Assistant', system-ui, sans-serif;
}
h1, h2, h3 {
font-family: var(--font-display);
font-weight: 800;
}
body, p {
font-family: var(--font-body);
font-weight: 400;
}
שימו לב: ה-system-ui, sans-serif בסוף הוא ה-fallback. אם הפונט לא נטען (או לא נטען עדיין), הדפדפן יציג את פונט המערכת. זה מה שמונע טקסט בלתי-נראה.
מה קורה: מתחיל מעתיק מ-Google Fonts את ברירת המחדל ללא סינון משקלים, ומקבל family=Heebo:wght@100;200;300;400;500;600;700;800;900. התוצאה: 9 קבצים, ~270KB של פונטים, זמן טעינה כבד.
למה זה מפתה: "אני לא יודע איזה משקלים אצטרך, אקח הכל ליתר ביטחון".
מה לעשות במקום: ברוב האתרים מספיקים 3 משקלים: 400 (regular), 600 (semibold), 800 (bold). זה חוסך ~180KB — זה ההבדל בין LCP של 2.3 שניות ל-3.5 שניות. אם אתם משתמשים רק ב-600 ו-800 לכותרות, אפשר לחסוך עוד יותר.
פתחו את fonts.google.com. בחרו את 2 הפונטים מה-Do Now הקודם (הזוג שבחרתם). סננו ל-3 משקלים: 400, 600, 800. ב-display bar למטה — לחצו "Get embed code". העתיקו את שורת ה-<link>. שמרו בקובץ טקסט בצד — נשתמש בזה בתרגיל.
4.5 Variable Fonts — פונט אחד, עשרות משקלים
Variable fonts הם טכנולוגיה מ-2018 שב-2026 כבר תומכת ב-97% מהדפדפנים. הרעיון: במקום לטעון 5 קבצים נפרדים (Heebo-Regular, Heebo-Medium, Heebo-Bold, Heebo-ExtraBold, Heebo-Black), טוענים קובץ יחיד שמכיל את כל הטווח של המשקלים. אחר כך אפשר להשתמש בכל משקל — 400, 523, 687, 812 — בלי לטעון קובץ נוסף.
היתרונות
- חיסכון משמעותי ב-bandwidth — קובץ אחד של ~80KB במקום 5 קבצים של 30KB כל אחד.
- גמישות מלאה — אפשר להשתמש במשקל 523 (שלא קיים ב-static fonts) ליצירת אפקטים עדינים.
- ציר נוסף של התאמה — חלק מה-variable fonts תומכים גם ב-width (condensed עד expanded) וב-slant (italic בדרגות).
- אנימציה חלקה — אפשר להאניים את המשקל ב-CSS (transition על font-weight).
איך זה עובד — טעינה ו-syntax
ב-Google Fonts, רוב הפונטים הפופולריים כבר זמינים כ-variable. Heebo הוא דוגמה — תראו בעמוד שלו אפשרות "Style" עם slider.
טעינת variable font:
<!-- הטווח wght@300..900 טוען את כל הטווח כקובץ אחד -->
<link href="https://fonts.googleapis.com/css2?family=Heebo:wght@300..900&display=swap" rel="stylesheet">
שימוש ב-CSS — כל משקל שרוצים:
h1 { font-weight: 800; }
h2 { font-weight: 700; }
.medium-bold { font-weight: 550; } /* משקל שלא קיים ב-static */
/* שליטה מדויקת יותר עם font-variation-settings */
.hero-title {
font-variation-settings: 'wght' 825;
}
variable fonts + animation — טריק עוצמתי
מאחר שאפשר להשתמש בכל משקל, אפשר גם להאניים ביניהם:
.button {
font-weight: 500;
transition: font-weight 200ms ease-out;
}
.button:hover {
font-weight: 700; /* מעבר חלק, לא קפיצה */
}
זה נראה מקצועי, עדין, ומגניב — והוא בלתי אפשרי עם static fonts.
רשימת variable fonts מומלצים (Google Fonts)
| פונט | Axis | טווח | הערה |
|---|---|---|---|
| Inter | wght, slnt | 100-900, 0-10deg | הכי פופולרי, תמיכה בעברית |
| Heebo | wght | 100-900 | עברית — variable |
| Assistant | wght | 200-800 | עברית — variable |
| Fraunces | wght, opsz, SOFT, WONK | 100-900 | Serif, עם 4 axes |
| Space Grotesk | wght | 300-700 | Sans modern |
| Manrope | wght | 200-800 | Sans friendly |
בדפדפן — פתחו את DevTools (F12). Elements → Styles. מצאו element עם כותרת. שנו את font-weight מ-400 ל-450, 500, 550, 600, 650, 700. אם הפונט variable — תראו את השינוי החלק. אם הוא static — תראו "קפיצה" בכל 100 יחידות. זה ההבדל.
4.6 font-display: swap — למה זה חובה
יש property אחד ב-CSS שמבדיל בין אתר פרימיום לאתר חובבני בעיני Google, ובעיני כל גולש שגלש במובייל ברשת 4G חלשה: font-display. 3 שורות שצריך להבין.
הבעיה: FOIT ו-FOUT
כשהדפדפן טוען דף, הוא מגלה ב-CSS שיש צורך בפונט חיצוני (Heebo מ-Google). הדפדפן מתחיל להוריד את הפונט — זה לוקח 200-800ms ברשת טובה, ו-2-3 שניות ברשת חלשה במובייל. בינתיים, מה הוא מציג?
יש 5 ערכים אפשריים ל-font-display:
| ערך | מה קורה עד שהפונט נטען | תוצאה למשתמש |
|---|---|---|
auto (default ישן) | ברוב הדפדפנים — טקסט בלתי נראה | FOIT — משתמש רואה לבן עד 3 שניות |
block | טקסט בלתי נראה 3 שניות, אז fallback | FOIT — אסון, אל תשתמשו |
swap ✅ | fallback מופיע מיד, מוחלף כשהפונט נטען | FOUT — טקסט מהבהב פעם אחת, אבל קריא מיד |
fallback | fallback 100ms, אז swap לשנייה, אחרת fallback לנצח | פשרה — אם הפונט איטי מאוד, לא יחליף |
optional | הפונט ייטען רק אם מהיר מאוד, אחרת fallback לנצח | מקצוען — לאתרים עם performance קריטי |
הבחירה המעשית: swap
ברוב המקרים — השתמשו ב-swap. הסיבה: טקסט לא נראה הוא יותר גרוע מטקסט שקופץ. אם משתמש לא רואה טקסט ב-2 שניות הראשונות, הוא נוטש. אם הוא רואה טקסט ב-fallback ואז רואה "קפיצה" לפונט האמיתי — זה מרגיש מהיר ומקצועי.
איך ליישם: ב-URL של Google Fonts, הוסיפו &display=swap:
<link href="https://fonts.googleapis.com/css2?family=Heebo:wght@400;700&display=swap" rel="stylesheet">
אם אתם טוענים פונט דרך @font-face (פונט מסחרי שקניתם), הוסיפו את השורה:
@font-face {
font-family: 'Ploni';
src: url('/fonts/Ploni.woff2') format('woff2');
font-display: swap;
}
טריק מתקדם: size-adjust ו-ascent-override
ה-FOUT (ההבהוב) מציק אם ה-fallback font שונה מאוד בגודל מהפונט האמיתי — אז הטקסט "קופץ" בגודל. הפתרון ב-2024-2026: size-adjust ב-@font-face fallback:
@font-face {
font-family: 'Heebo-Fallback';
src: local('Arial');
size-adjust: 97%; /* לגרום ל-Arial להיראות כמו Heebo בגודל */
ascent-override: 92%;
descent-override: 28%;
}
זה טריק מתקדם — לא חובה לרוב האתרים. אבל אם אתם בונים אתר שמתמקד ב-LCP מתחת ל-2 שניות, זה מחזיר 10-15 נקודות ב-Lighthouse.
באתר שלכם — בדקו את ה-<link> של Google Fonts. האם יש &display=swap בסוף? אם לא — הוסיפו. אם טוענים פונט דרך @font-face — וודאו שיש font-display: swap בתוך. זה 10 שניות של תיקון שחוסך 500ms-2s לכל משתמש במובייל.
4.7 Typographic Hierarchy — מ-display ל-caption
Typographic hierarchy היא ההבחנה הויזואלית בין 6 רמות של טקסט באתר. זו המערכת שמנחה את העין של הקורא: "קודם תסתכל על זה, אחר כך על זה, בסוף על זה". בלי hierarchy — הכל בעל אותה חשיבות, והעין לא יודעת לאן להסתכל.
7 הרמות של typographic scale מקצועי
| רמה | תפקיד | Desktop | Mobile | Weight | Line-height | Letter-spacing |
|---|---|---|---|---|---|---|
| Display | Hero headline | 72-96px | 44-56px | 800 | 1.0-1.1 | -0.03em |
| H1 | עמוד headline | 48-64px | 36-44px | 700 | 1.1 | -0.02em |
| H2 | Section headline | 36-48px | 28-32px | 700 | 1.2 | -0.01em |
| H3 | תת-כותרת | 24-32px | 20-24px | 600 | 1.3 | 0 |
| H4 | Card title | 18-20px | 16-18px | 600 | 1.4 | 0 |
| Body | פסקה רגילה | 16-18px | 15-16px | 400 | 1.6 | 0 |
| Caption | תיאור קטן, hint | 12-14px | 12-13px | 400-500 | 1.4 | 0.01em |
המספרים קודם לכל — Scale Ratio
איך קובעים את ה-ratio בין הרמות? יש שיטות מתמטיות מוכחות:
- Minor Third (1.2x) — עדין, קלאסי. 16 → 19 → 23 → 28 → 33. מתאים ל-editorial, blog.
- Major Third (1.25x) — מאוזן. 16 → 20 → 25 → 31 → 39. מתאים לרוב ה-SaaS.
- Perfect Fourth (1.333x) — דרמטי. 16 → 21 → 28 → 37 → 50. מתאים ל-hero פרימיום.
- Golden Ratio (1.618x) — דרמטי במיוחד. 16 → 26 → 42 → 68 → 110. מתאים לאתרים מעוצבים מאוד.
כלי אונליין: typescale.com — בחרו ratio, תקבלו את כל המספרים.
Typographic scale שלם עם CSS custom properties
זה הקוד שאני מציע להעתיק-להדביק לכל פרויקט חדש:
:root {
/* Fonts */
--font-display: 'Fraunces', 'Heebo', Georgia, serif;
--font-body: 'Inter', 'Assistant', system-ui, sans-serif;
--font-mono: 'JetBrains Mono', 'Courier New', monospace;
/* Type scale — Perfect Fourth ratio */
--text-xs: 0.75rem; /* 12px - caption */
--text-sm: 0.875rem; /* 14px - small body */
--text-base: 1rem; /* 16px - body */
--text-lg: 1.125rem; /* 18px - large body */
--text-xl: 1.25rem; /* 20px - h4 */
--text-2xl: 1.5rem; /* 24px - h3 */
--text-3xl: 2rem; /* 32px - h2 */
--text-4xl: 2.5rem; /* 40px - h1 */
--text-5xl: 3.5rem; /* 56px - display mobile */
--text-6xl: 5rem; /* 80px - display desktop */
/* Line-heights */
--leading-tight: 1.1; /* headings */
--leading-snug: 1.3; /* h3-h4 */
--leading-normal: 1.6; /* body */
--leading-relaxed: 1.75; /* long-form content */
/* Letter-spacing */
--tracking-tight: -0.03em; /* display */
--tracking-snug: -0.02em; /* h1-h2 */
--tracking-normal: 0; /* body */
--tracking-wide: 0.025em; /* UPPERCASE */
}
h1 {
font-family: var(--font-display);
font-size: var(--text-4xl);
font-weight: 700;
line-height: var(--leading-tight);
letter-spacing: var(--tracking-snug);
}
body {
font-family: var(--font-body);
font-size: var(--text-base);
line-height: var(--leading-normal);
font-weight: 400;
}
מה שהמערכת הזו נותנת: כל החלטה טיפוגרפית במקום אחד. שינוי של --text-4xl משפיע על כל ה-H1s באתר. זה הבסיס של design tokens לטיפוגרפיה.
העתיקו את בלוק ה-CSS Custom Properties למעלה לקובץ חדש. שנו רק את ה---font-display וה---font-body ל-2 הפונטים שבחרתם (מ-Do Now 4). שמרו בשם typography-tokens.css. זה ה-scale שלכם — נשתמש בו בתרגילים.
4.8 Line-height ו-Letter-spacing — החוקים שאף אחד לא מספר
אפשר לבחור את הפונטים הכי יפים בעולם ולהגדיר scale מושלם — אם ה-line-height שגוי, הטקסט ייראה חובבני. זה הפרמטר שעין מאומנת רואה תוך שנייה, ומתחילים לא שמים לב אליו בכלל.
Line-height — הכלל המרכזי
Line-height (רווח בין שורות) תלוי בגודל הטקסט:
| סוג טקסט | Line-height | למה |
|---|---|---|
| Display (72px+) | 1.0-1.1 | אותיות גדולות — מרווח קטן יוצר density דרמטי |
| H1-H2 (32-56px) | 1.1-1.2 | עדיין כותרות — ה-impact מהקומפקטיות |
| H3-H4 (18-28px) | 1.3-1.4 | בגבול בין כותרת לטקסט |
| Body (14-18px) | 1.5-1.7 | קריאות של פסקאות ארוכות |
| Long-form (blog, article) | 1.7-1.8 | בטקסט ארוך, יותר מרווח = פחות עייפות |
| Code blocks | 1.4-1.5 | טקסט monospace צריך פחות רווח |
הכלל המסכם: כמה שהטקסט גדול יותר, line-height קטן יותר. כמה שהטקסט קטן יותר, line-height גדול יותר.
Letter-spacing — מתי להרחיב, מתי לצמצם
Letter-spacing (tracking) הוא המרחק האופקי בין אותיות. יש 3 חוקים:
- כותרות גדולות (32px+) → letter-spacing שלילי (-0.02em עד -0.04em). למה: בגדלים גדולים, האותיות "מפוזרות" ונראות רחוקות. סגירה קלה יוצרת compactness מקצועית. זו אחת הנגיעות החזקות ביותר של מעצבים מקצועיים.
- Body (14-18px) → letter-spacing 0. אף פעם אל תשנו את ברירת המחדל של body. זה מקלקל קריאות.
- UPPERCASE → letter-spacing חיובי (0.05em עד 0.1em). למה: אותיות גדולות באנגלית צפופות מטבען — רווח קל מציל אותן.
דוגמה מלאה
.hero-title {
font-size: 5rem; /* 80px */
line-height: 1.05;
letter-spacing: -0.03em; /* שלילי — compactness */
font-weight: 800;
}
.body-paragraph {
font-size: 1rem; /* 16px */
line-height: 1.6;
letter-spacing: 0; /* default */
}
.label-uppercase {
font-size: 0.75rem; /* 12px */
line-height: 1.2;
letter-spacing: 0.08em; /* חיובי — UPPERCASE needs air */
text-transform: uppercase;
font-weight: 600;
}
מה קורה: מפתח לא מגדיר line-height. הדפדפן משתמש ב-normal — ~1.2 — לכל הטקסטים. התוצאה: body טקסט צפוף מדי (קשה לקריאה), headings מרווחים מדי (חסרי impact).
למה זה מפתה: לא חושבים על line-height בכלל — הוא "פועל".
מה לעשות במקום: הגדירו מפורשות line-height לכל רמה: headings 1.1-1.2, body 1.5-1.7. מי שמדלג על זה — האתר שלו נראה "Word 95" בעיני מעצב מקצועי. זה ההבדל הכי מובהק בין אתר חובבני לאתר מעוצב.
4.9 clamp() — גדלים responsive בלי breakpoints
עד 2020, הדרך להתמודד עם גדלי טקסט שונים במובייל/desktop היתה media queries: כותבים h1 { font-size: 32px; }, ואז @media (min-width: 768px) { h1 { font-size: 48px; } }, ואז עוד breakpoint, ועוד. זה מסורבל ולא תמיד עובד טוב בין מסכים.
ב-2021 הגיע clamp() — ופתר את הבעיה הזו מהיסוד.
מה זה clamp()
clamp() היא פונקציית CSS שמקבלת 3 ערכים:
font-size: clamp(MIN, IDEAL, MAX);
- MIN — הגודל המינימלי. במסכים קטנים, הטקסט לא ירד מזה.
- IDEAL — הגודל המועדף. ערך בעל יחידת
vw(viewport width) שמתרחב ומצטמק עם המסך. - MAX — הגודל המקסימלי. במסכים גדולים, הטקסט לא יעלה מעל זה.
דוגמה פרקטית:
h1 {
font-size: clamp(2rem, 5vw + 1rem, 4.5rem);
}
מה שיקרה:
- במסך רוחב 360px (מובייל קטן) — הגודל יהיה 2rem (32px), המינימום
- במסך 768px (טאבלט) — הגודל יגדל הדרגתית בערך 3rem (48px)
- במסך 1280px (desktop) — הגודל יגיע למקסימום 4.5rem (72px)
- במסך 2560px (ultra-wide) — הגודל עדיין 4.5rem (לא גדול יותר)
Responsive type scale שלם — מוכן להעתיק-להדביק
הנה ה-scale שאני מציע לכל פרויקט חדש. הוא משתמש ב-clamp() לכל רמה, ומונע את הצורך ב-breakpoints לטיפוגרפיה:
:root {
/* Display — hero-size */
--text-display: clamp(2.5rem, 5vw + 2rem, 6rem);
/* Headings */
--text-h1: clamp(2rem, 3vw + 1.5rem, 4rem);
--text-h2: clamp(1.75rem, 2.5vw + 1rem, 3rem);
--text-h3: clamp(1.375rem, 1.5vw + 0.75rem, 2rem);
--text-h4: clamp(1.125rem, 1vw + 0.75rem, 1.5rem);
/* Body */
--text-lg: clamp(1.0625rem, 0.5vw + 0.9rem, 1.25rem);
--text-base: clamp(1rem, 0.3vw + 0.9rem, 1.125rem);
--text-sm: clamp(0.875rem, 0.2vw + 0.8rem, 1rem);
/* Caption */
--text-xs: clamp(0.75rem, 0.1vw + 0.7rem, 0.875rem);
}
.hero h1 { font-size: var(--text-display); }
h1 { font-size: var(--text-h1); }
h2 { font-size: var(--text-h2); }
h3 { font-size: var(--text-h3); }
h4 { font-size: var(--text-h4); }
body { font-size: var(--text-base); }
.caption { font-size: var(--text-xs); }
זה החלק היפה: קובץ אחד, 10 שורות — ו-0 media queries לטיפוגרפיה. הטקסט יתאים בצורה חלקה לכל מסך מ-320px עד 2560px.
חישוב ה-IDEAL value
איך בוחרים את הערך האמצעי? יש סוד: Utopia.fyi calculator. אתם נותנים לו את הגודל שאתם רוצים ב-mobile ו-desktop, והוא מחשב את ה-clamp המדויק. URL: utopia.fyi/type/calculator.
פתחו את utopia.fyi/type/calculator. הזינו: Min viewport 360, Max viewport 1440, Min font-size 16, Max font-size 18. ראו את ה-clamp() שנוצר. עכשיו שנו ל-Min 32, Max 56 — זה ה-H1. העתיקו 4 ערכי clamp (display, h1, h2, body) לקובץ typography-tokens.css שלכם. תרגישו כמה זה חלק מול media queries.
4.10 פונטים עבריים — 5 ההמלצות המלאות
זה הסעיף החשוב ביותר בפרק למי שבונה אתרים בעברית. העולם של פונטים עבריים מצומצם מאוד לעומת אנגלית (10s של פונטים איכותיים vs 1,500+ באנגלית), אבל בעשור האחרון — בזכות עבודה מרשימה של מעצבים ישראליים — יש לנו 5 פונטים שהם ברמת עולם ומתאימים לכל use-case.
לכל פונט נעבור על: יתרונות, חסרונות, best use-case, איפה להשיג, ואיך לטעון.
1. Heebo — הגרסה העברית ה-universal
על הפונט: Heebo הוא פונט sans-serif שנועד להיות "Roboto בעברית". מעוצב על ידי Oded Ezer Type Foundry. Variable font עם טווח 100-900.
- יתרונות: 9 משקלים, variable font זמין, תמיכה מלאה באנגלית (מיושב על Roboto), קריא בכל הגדלים, מאוזן.
- חסרונות: "הפונט הדיפולטי" של עברית — אם כולם משתמשים בו, האתר שלכם לא בולט.
- Use-case: SaaS, startups, dashboards, כל אתר ש"פונט כללי-נייטרלי" מתאים לו. ברירת המחדל הבטוחה.
- איפה להשיג: Google Fonts (חינם)
- איך לטעון:
<link href="https://fonts.googleapis.com/css2?family=Heebo:wght@400;600;800&display=swap" rel="stylesheet">
2. Assistant — נקי, מודרני, עדכני
על הפונט: מעוצב על ידי Barak Chamo. פונט geometric sans-serif שנתפס כיום כ-"הפונט הרציני" של עברית מודרנית. Variable font.
- יתרונות: גיאומטרי ונקי, נראה מקצועי ב-body text, x-height נעים, טווח משקלים 200-800.
- חסרונות: פחות אישיות ב-headings — טוב יותר כ-body.
- Use-case: Body font — מושלם לטקסט רציף. גם לכותרות אם ה-tone מודרני-טכנולוגי.
- איפה להשיג: Google Fonts (חינם)
- איך לטעון:
<link href="https://fonts.googleapis.com/css2?family=Assistant:wght@400;500;700&display=swap" rel="stylesheet">
3. Rubik — ידידותי, עגול, playful
על הפונט: מעוצב על ידי Meir Sadan ו-Cyreal. פונט sans-serif עם פינות מעוגלות. משתמשים בו אתרים רבים בישראל (מ-Waze ועד אתרי סטארטאפים).
- יתרונות: ידידותי, נגיש, 9 משקלים, תמיכה באנגלית טובה.
- חסרונות: בגלל שהוא היה פופולרי מאוד ב-2018-2022 — יכול להרגיש "ישראלי סטנדרטי". לא מתאים ל-tone רציני/פיננסי.
- Use-case: Consumer apps, startups ידידותיים, education, lifestyle.
- איפה להשיג: Google Fonts (חינם)
- איך לטעון:
<link href="https://fonts.googleapis.com/css2?family=Rubik:wght@400;600;800&display=swap" rel="stylesheet">
4. Secular One — Display חזק לכותרות בלבד
על הפונט: פונט display עברי בעל weight יחיד (800). מעוצב על ידי Oren Watkins. "פונט הפוסטר" של עברית.
- יתרונות: bold, מאופק, מודרני, אותיות עבות ברורות. יוצר impact מיידי.
- חסרונות: משקל יחיד בלבד (800). לא מתאים ל-body — רק לכותרות גדולות.
- Use-case: Hero headlines בלבד. להשתמש בזוג עם Heebo או Assistant ל-body.
- איפה להשיג: Google Fonts (חינם)
- איך לטעון:
<link href="https://fonts.googleapis.com/css2?family=Secular+One&display=swap" rel="stylesheet">
5. Noto Sans Hebrew — ה-fallback הבטוח
על הפונט: חלק מפרויקט Noto של Google — פונט שנועד לכסות את כל שפות העולם. Variable font.
- יתרונות: תמיכה מלאה ב-Unicode, קריא מאוד, תואם לכל הדפדפנים, variable.
- חסרונות: אין לו הרבה אישיות — הוא "הפונט הבטוח".
- Use-case: Fallback font, אתרי ממשלה, אתרים רב-שפתיים, אתרים שדורשים תמיכה מקסימלית. או כמעט כל פרויקט שרוצה "פונט בטוח אפס פשרות".
- איפה להשיג: Google Fonts (חינם)
- איך לטעון:
<link href="https://fonts.googleapis.com/css2?family=Noto+Sans+Hebrew:wght@400;600;800&display=swap" rel="stylesheet">
פונטים עבריים פרימיום (בתשלום) — אם יש תקציב
אם יש לכם תקציב (50-500 ₪), אפשר לצאת מהסט של 5 ה-Google Fonts ולקבל משהו באמת יחיד:
- Ploni (HaTypography) — פונט פרימיום עם אישיות ייחודית. מתאים לעסקים פרימיום.
- Alef (HaTypography) — קלאסי עברי, משמש בעיתונים ו-editorial.
- Narkiss (Michal Sahar) — הקלאסיקה של עברית — אם אתם בונים משהו "יודעי-ספר".
- Shuneet (Ismar David) — serif עברי מסורתי אבל עדכני.
מקומות לרכישה: HebrewFonts.co.il, Fonts.co.il, ו-Yanone (לפונטים בינלאומיים עם תמיכה בעברית).
| סוג פרויקט | Display (H1) | Body | Accent |
|---|---|---|---|
| SaaS / Startup | Secular One 800 | Heebo 400 | Heebo 600 |
| Enterprise / B2B | Assistant 700 | Assistant 400 | Heebo 500 |
| Consumer App | Rubik 800 | Rubik 400 | — |
| Blog / Editorial | Heebo 800 | Assistant 400 | — |
| E-commerce | Heebo 700 | Heebo 400 | Assistant 500 |
| ממשלה / מוסד | Noto Sans Hebrew 700 | Noto Sans Hebrew 400 | — |
| Agency / Portfolio | Ploni (פרימיום) / Secular One | Assistant 400 | — |
הכלל המסכם: אם אתם מהססים — Secular One (Display) + Heebo (Body). זה הזוג הבטוח שתמיד נראה מקצועי בעברית. גרסה שנייה בטוחה: Assistant (Display + Body) במשקלים שונים.
5 זיווגי פונטים עברית + אנגלית מוכחים
הרוב מהאתרים בישראל הם דו-לשוניים (עברית + מונחים באנגלית). הנה 5 זיווגים שעובדים:
| # | עברית Display | אנגלית Display | עברית Body | אנגלית Body | אווירה |
|---|---|---|---|---|---|
| 1 | Heebo 800 | Inter 800 | Heebo 400 | Inter 400 | Safe modern — לרוב הפרויקטים |
| 2 | Assistant 700 | IBM Plex Sans 700 | Assistant 400 | IBM Plex Sans 400 | Tech SaaS מקצועי |
| 3 | Secular One 800 | Space Grotesk 700 | Heebo 400 | Inter 400 | Editorial startup |
| 4 | Rubik 800 | Rubik 800 | Rubik 400 | Rubik 400 | Friendly consumer (Rubik אחד לשתי השפות!) |
| 5 | Ploni (פרימיום) | Fraunces 700 | Assistant 400 | Inter 400 | Premium luxury |
דוגמה ליישום של זיווג #1 — הגישה הנכונה:
:root {
/* הגדרה אחת שמטפלת בשתי השפות */
--font-display: 'Inter', 'Heebo', system-ui, sans-serif;
--font-body: 'Inter', 'Assistant', system-ui, sans-serif;
}
/* הדפדפן אוטומטית בוחר את הפונט שמתאים לשפת האות */
/* עברית → Heebo/Assistant, אנגלית → Inter */
h1 { font-family: var(--font-display); }
body { font-family: var(--font-body); }
הסוד: הדפדפן סורק מימין לשמאל את רשימת הפונטים בכל font-family. כשהוא מגיע לתו שלא קיים בפונט הראשון (למשל עברית ב-Inter אנגלי-בלבד), הוא מדלג לפונט הבא. זה "בחירה אוטומטית".
חזרו לאתר שאתם בונים. אם יש בו תוכן בעברית — בדקו ב-DevTools איזה פונט משמש לעברית (F12 → בחרו טקסט עברי → Computed → font-family). אם זה Rubik — תשקלו להחליף. אם זה system font (Arial / David) — דחוף להוסיף פונט עברי אמיתי. בחרו זוג #1 מהטבלה (Heebo + Inter) והחליפו.
4.11 RTL Typography — האתגרים הייחודיים
עברית נכתבת מימין לשמאל (RTL — Right-To-Left). האתגר הוא לא רק "הפוך הכל" — יש סט שלם של פרטים טיפוגרפיים שצריך לטפל בהם.
האתגרים המובהקים
1. direction: rtl ו-dir="rtl"
הכרחי מ-HTML הראשון:
<!-- בשורש הדף -->
<html lang="he" dir="rtl">
/* או דרך CSS */
:root { direction: rtl; }
זה גורם לטקסט לזרום מימין לשמאל, ול-layouts לתמוך במירור אוטומטי.
2. פיסוק שמשתנה
סימני פיסוק בעברית מופיעים בסוף שמאלי של משפט (שהוא "אחרי" בעברית), לא בצד ימין. הדפדפן עושה את זה אוטומטית בזכות Unicode BiDi algorithm — אבל לפעמים יש שגיאות. בדקו בדפדפן:
- נקודה בסוף משפט עברי — בצד שמאל (נכון)
- פסיק בעברית — צד שמאל
- סוגריים —
)טקסט בעברית(נראה הפוך בעין, אבל נכון מבחינה סמנטית — הסוגר "פותח" מימין ו"סוגר" משמאל
3. גרשיים
בעברית יש שימוש כבד בגרשיים (למשל "צה"ל", "ארה"ב"). בדקו שהפונט מרנדר אותם נכון — לפעמים הם "נופלים" לגובה לא נכון.
4. Alignment
בעברית, ברירת המחדל היא text-align: right (כי זו "תחילת" הטקסט). אבל ל-hero בכל זאת תרצו לפעמים text-align: center. אל תשכחו להגדיר מפורשות.
5. Justify — זהירות
text-align: justify בעברית יוצר לפעמים "נהרות" לבנים (רווחים גדולים בין מילים). אם מוכרחים — השתמשו ב-hyphens: auto או עדיף להישאר עם text-align: right.
RTL Typography Checklist
| # | מה לבדוק | ערך מומלץ |
|---|---|---|
| 1 | <html dir="rtl" lang="he"> | חובה |
| 2 | פונט עברי כ-fallback ב-font-family | Heebo / Assistant / Noto Sans Hebrew |
| 3 | Line-height ל-body עברי | 1.6-1.75 (עברית צריכה קצת יותר מאנגלית) |
| 4 | Letter-spacing בעברית | 0 (לעולם לא שלילי — עברית רגישה) |
| 5 | Text-align | right ל-body, center ל-hero |
| 6 | גרשיים ומרכאות | לבדוק רינדור של " " ( ) |
| 7 | Justify | להימנע (או hyphens: auto) |
| 8 | Numbers באמצע טקסט | נבדק בסעיף הבא |
4.12 Mixed Content — עברית עם אנגלית באותו משפט
אחד האתגרים הגדולים של אתרים עבריים ב-2026: המשפטים שלנו מלאים באנגלית. "השתמש ב-React לבניית האתר", "קנה עכשיו ב-₪99", "הצטרף ל-newsletter". איך מטפלים בזה נכון?
הבעיה הטכנית
Unicode Bidirectional Algorithm (BiDi) מטפל אוטומטית ברוב המקרים. אבל יש 3 מצבים שבהם מופיעה שגיאה:
- מספרים באמצע משפט עברי — לפעמים נכתבים מימין לשמאל במקום משמאל לימין.
- סוגריים שמכילים אנגלית — לפעמים "עפים" למקום הלא נכון.
- מקפים וסימני פיסוק בין עברית לאנגלית — לפעמים "נתקעים" במקום לא נכון.
דוגמה בעייתית מהחיים
הטקסט הבא נכון סמנטית: "השתמש ב-React (גרסה 18.2.0) לבניית האתר". אבל בדפדפן, ללא טיפול:
- ה-"React" — אנגלית — זורם שמאל-לימין
- ה-"(גרסה 18.2.0)" — יש סוגריים + מספר — יכול "להתבלבל"
- תוצאה: ייתכן שהסוגר הימני יופיע לפני הסוגר השמאלי בעין
הפתרונות
1. unicode-bidi: plaintext
ב-CSS, על אלמנטים שמכילים תוכן מעורב:
p, h1, h2, h3, li {
unicode-bidi: plaintext;
}
זה אומר לדפדפן: "תסמוך על ה-BiDi algorithm, תן לו לעבוד". פותר 90% מהבעיות.
2. ‎ ו-‏ — Unicode markers
במקרים נדירים שבהם BiDi מתבלבל, אפשר להוסיף markers ב-HTML:
‎— Left-to-Right Mark (דוחף את התוכן לכיוון שמאל-לימין)‏— Right-to-Left Mark (דוחף ימין-לשמאל)
דוגמה: קנה עכשיו ב-‎$99.99 — ה-mark מבטיח שהמחיר יופיע נכון משמאל לימין.
3. פונט עם תמיכה בשני הכיוונים
Inter (בגרסה האחרונה), Heebo, ו-Assistant — כולם כוללים אותיות אנגליות ועבריות. הפונט יודע לרנדר שניהם באותה רמה. לעומת זאת, פונט "עברי-בלבד" או "אנגלי-בלבד" ידרוש החלפה — ותקבלו הבדלי גודל בין השפות.
הכלל המסכם לתוכן מעורב
- בחרו פונט שתומך בשתי השפות (Heebo, Assistant, Noto Sans Hebrew)
- הוסיפו
unicode-bidi: plaintextעל אלמנטים עם טקסט - השתמשו ב-
‎כשיש מחירים/מספרים/URLs בתוך משפט עברי - בדקו בדפדפן אמיתי, לא רק ב-DevTools (לפעמים יש הבדלים ברינדור)
איך לבנות typographic scale מאפס — 5 שלבים:
| שלב | החלטה | איך מחליטים |
|---|---|---|
| 1 | Body size | 16px הוא הסטנדרט. 17-18px לאתרי long-form. לא לרדת מ-15px. |
| 2 | Scale ratio | 1.25x לרוב, 1.333x לאתרים "מעוצבים", 1.2x ל-editorial |
| 3 | Scale טבלה | חישוב: base × ratio^n. כלי: typescale.com |
| 4 | Line-heights | Headings 1.1-1.2, Body 1.5-1.7, Long-form 1.7-1.8 |
| 5 | Letter-spacing | Display -0.03em, H1 -0.02em, body 0, UPPERCASE +0.05em |
4.13 Performance — לטעון רק מה שצריך
פונטים הם הפקטור #1 שהורג LCP (Largest Contentful Paint) באתרים. 4 פונטים × 5 משקלים × 30KB = 600KB של פונטים. ברשת 4G חלשה — 2-3 שניות של ייבוא. הנה איך להפחית את זה ל-80KB.
5 עקרונות ה-performance של פונטים
1. רק המשקלים שצריך
כבר דיברנו על זה. ברוב האתרים — 3 משקלים מספיקים (400, 600, 800). לפעמים אפילו 2 (400 + 700).
2. רק ה-subsets שצריך
ב-Google Fonts, אפשר לציין subsets — תמיכה בשפות ספציפיות. אם האתר בעברית בלבד עם קצת אנגלית:
<link href="https://fonts.googleapis.com/css2?family=Heebo:wght@400;700&subset=hebrew,latin&display=swap" rel="stylesheet">
זה חוסך ~40% על הפונט (כי לא טוענים cyrillic, arabic, japanese וכו' שלא צריך).
3. Subsetting מתקדם — רק התווים שצריך
אם יש לכם טקסט ספציפי (למשל לוגו או heading קבוע), אפשר לטעון רק את התווים שצריך:
<!-- טוען רק את התווים A-Z a-z + חלק מעברית -->
<link href="https://fonts.googleapis.com/css2?family=Heebo&text=נויגנחתאבדהוזעמקלכטרפצש&display=swap">
זה מקטין פונט מ-80KB ל-8KB. קיצוני — משמש רק ל-hero אקסטרמי.
4. preconnect + dns-prefetch
לפני טעינת הפונטים, תגידו לדפדפן "אני אטען מ-fonts.googleapis.com":
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
זה חוסך 100-300ms של DNS lookup.
5. Preload לפונט הקריטי
לפונט ה-hero (H1) — תגידו לדפדפן לטעון אותו מוקדם, עם עדיפות גבוהה:
<link rel="preload" href="https://fonts.gstatic.com/s/heebo/v26/NGS6v5_NC0k9P_v6ZUCbLRAHxK1E.woff2" as="font" type="font/woff2" crossorigin>
זה טריק מתקדם — משתמשים בו רק כשה-LCP חשוב מאוד.
Checklist לטעינת פונטים מאופטמת
- ✓ רק 2-3 משקלים לכל פונט
- ✓ רק 2 פונטים (מקסימום 3)
- ✓
display=swapבסוף ה-URL - ✓
preconnectל-googleapis ו-gstatic - ✓
subset=hebrew,latinאם רלוונטי - ✓ fallback fonts ב-font-family (system-ui, sans-serif)
- ✓
font-display: swapב-@font-face (אם משתמשים) - ✓ Variable fonts לחיסכון באקסטרה (אם זמינים)
4.14 Typography Spec Template — פרומפט ל-AI
זה ה-deliverable המרכזי השני של הפרק: פרומפט מובנה שתוכלו להעתיק-להדביק לתחילת כל פרויקט AI, שמנחה את הכלי לבנות טיפוגרפיה מקצועית מהרגע הראשון.
Typography Spec Template v1.0 (English for AI tools)
TYPOGRAPHY SPEC — Use these exactly, do not substitute:
Font Pairing:
- Display font (H1, H2, hero): [FRAUNCES 700 / SPACE GROTESK 700 / PLAYFAIR DISPLAY 700]
- Body font (paragraphs, UI): [INTER 400 / SOURCE SANS 3 400 / MANROPE 400]
- Accent font (code, labels): [JETBRAINS MONO 400 / IBM PLEX MONO 400] — optional
- Hebrew Display: [HEEBO 800 / SECULAR ONE / ASSISTANT 700]
- Hebrew Body: [HEEBO 400 / ASSISTANT 400]
Loading (MUST):
- Use Google Fonts withfont-display: swap
- Add preconnect to fonts.googleapis.com and fonts.gstatic.com
- Load ONLY weights 400, 600, 800 (not all weights)
- Use subset=latin,hebrew if site is Hebrew
Type Scale (use CSS custom properties):
- --text-display: clamp(2.5rem, 5vw + 2rem, 6rem)
- --text-h1: clamp(2rem, 3vw + 1.5rem, 4rem)
- --text-h2: clamp(1.75rem, 2.5vw + 1rem, 3rem)
- --text-h3: clamp(1.375rem, 1.5vw + 0.75rem, 2rem)
- --text-h4: clamp(1.125rem, 1vw + 0.75rem, 1.5rem)
- --text-base: clamp(1rem, 0.3vw + 0.9rem, 1.125rem)
- --text-xs: clamp(0.75rem, 0.1vw + 0.7rem, 0.875rem)
Line-heights:
- Headings (H1-H2): 1.1
- Subheadings (H3-H4): 1.3
- Body paragraphs: 1.6
- Long-form content: 1.75
Letter-spacing:
- Display (72px+): -0.03em
- H1-H2 (32-56px): -0.02em
- H3-H4, body: 0
- UPPERCASE labels: +0.05em
DO NOT (anti-patterns):
- Do NOT use Inter alone for everything
- Do NOT load all font weights — only 400, 600, 800
- Do NOT use default line-height (1.5) for headings — use 1.1
- Do NOT use 3+ different fonts — maximum 2 (display + body)
- Do NOT forget font-display: swap
Hebrew/RTL specific (if Hebrew content):
- Setdir="rtl"andlang="he"on html element
- Hebrew body line-height: 1.6-1.75 (slightly more than English)
- Hebrew letter-spacing: 0 always (never negative — Hebrew is sensitive)
- Addunicode-bidi: plaintexton paragraphs with mixed content
- Font-family must list Hebrew font as fallback for English-first fonts
QUALITY GATE:
Before delivery, audit: (1) Is font-display: swap present? (2) Are only 2 fonts used? (3) Are only 2-3 weights loaded? (4) Do headings have line-height 1.1-1.2? (5) Does the body have line-height 1.5-1.7? (6) For Hebrew: is the Hebrew font listed in font-family stack?
גרסת הפרומפט בעברית + התאמה לפרויקט
לפני השימוש — החליפו את הערכים בסוגריים עם הבחירה שלכם. 4 השלבים:
- Font pairing: בחרו 1 מ-5 הזיווגים מטבלת Font Pairing Framework (סעיף 4.3), או מ-5 הזיווגים העבריים-אנגליים (סעיף 4.10).
- Scale ratio: אם אתם לא יודעים — השאירו את ערכי ה-clamp כמו שהם (Perfect Fourth ratio). אם אתם רוצים ממוזער — שנו ל-Minor Third.
- Hebrew section: מחקו אם האתר לא בעברית. השאירו אם יש תוכן עברי.
- Quality gate: תמיד להשאיר — זה מה שמאלץ את ה-AI לבדוק את עצמו.
איפה לשלב את הפרומפט הזה
קחו את ה-Anti-AI Starter Prompt מפרק 1, והחליפו את סעיף ה-"Fonts" שבו בפרומפט הטיפוגרפיה המלא מכאן. התוצאה: פרומפט שלם עם צבעים (פרק 3) + טיפוגרפיה (פרק 4) + anti-AI (פרק 1), שזה כבר 70% מה-design brief של אתר פרימיום.
העתיקו את ה-Typography Spec Template. התאימו אותו לפרויקט שלכם: בחרו zoo פונטים ספציפי, הוסיפו/הסירו את ה-Hebrew section לפי הצורך. שמרו בקובץ בצד. זה הפרומפט האישי שלכם — תשתמשו בו בתרגיל האחרון.
- בחרו פרויקט אישי (אתר קיים או פרויקט היפותטי — "מאפייה בתל אביב", "סטארטאפ AI", "portfolio של מעצב")
- הגדירו במשפט: "ה-tone של הפרויקט הוא ___" (editorial / modern-tech / luxury / playful / corporate)
- מתוך Font Pairing Framework (5 זיווגים) — בחרו את הזיווג המתאים. נמקו במשפט.
- אם הפרויקט כולל תוכן עברי — מתוך Hebrew Font Decision Matrix, בחרו את הזיווג העברי.
- מתוך 5 זיווגי עברית+אנגלית — בחרו את הזוג הכולל.
- פתחו fonts.google.com, הקלידו טקסט עברי ואנגלי לדוגמה, וראו את הזיווג בפועל.
מה צריך להיות בסוף: מסמך של חצי עמוד שכולל: (א) שם פרויקט, (ב) tone, (ג) זיווג פונטים מלא (display + body + Hebrew display + Hebrew body), (ד) נימוק של 2 משפטים, (ה) screenshot מ-Google Fonts specimen.
- פתחו את utopia.fyi calculator. הזינו: Min viewport 360, Max viewport 1440.
- הזינו Min body 16, Max body 18, ratio Perfect Fourth (1.333).
- העתיקו את 7 ה-clamp() שנוצרו (display, h1, h2, h3, h4, base, small).
- הדביקו בתוך בלוק
:root { }כ-CSS custom properties (--text-display,--text-h1וכו'). - הוסיפו line-height tokens (headings 1.1, body 1.6) ו-letter-spacing tokens (display -0.03em, body 0).
- החילו על אלמנטים: h1, h2, h3, body, .caption.
- פתחו בדפדפן, וחללו לראות את ההתאמה עם window resize.
מה צריך להיות בסוף: קובץ typography-tokens.css עם scale מלא + יישום על אלמנטים, וסרטון/סקרינשוט של הטקסט מתאים את עצמו לגודלי חלונות שונים.
- קחו את 2 הפונטים מתרגיל 1. ב-fonts.google.com — בחרו רק 3 משקלים (400, 600, 800).
- אם יש תוכן עברי — הוסיפו
&subset=hebrew,latin. - וודאו שהוספתם
&display=swapבסוף. - הוסיפו ל-
<head>של ה-HTML:- 2 שורות
preconnect - שורת ה-
<link>של הפונטים
- 2 שורות
- פתחו DevTools → Network → Disable cache → Refresh. מדדו את זמן הורדת הפונטים.
- הריצו Lighthouse. בדקו ש-LCP < 2.5s וש"Ensure text remains visible during webfont load" הוא green.
- השוו לאתר קיים בלי האופטימיזציות — תראו את ההבדל ב-Lighthouse score.
מה צריך להיות בסוף: 2 Lighthouse reports (לפני/אחרי), רשימת השינויים שעשיתם, ובלוק HTML מוכן להעתקה לפרויקטים עתידיים.
- קחו את Typography Spec Template מהפרק. התאימו אישית לפרויקט שלכם (מתרגיל 1).
- שילבו אותו עם Anti-AI Starter Prompt מפרק 1 ועם פלטת הצבעים מפרק 3. התוצאה: פרומפט מלא.
- הריצו את הפרומפט בכלי AI (Bolt / Lovable / v0 / Claude).
- שמרו screenshot של התוצאה.
- הריצו בדיקה: (א) האם font-display: swap נטען? (ב) האם יש 2 פונטים בלבד? (ג) האם יש רק 2-3 משקלים? (ד) האם line-height על headings 1.1-1.2? (ה) האם יש clamp() על font-sizes? (ו) אם תוכן עברי — האם הפונט העברי מופיע ב-font-family?
- השוו לתוצאה של Do Now #1 (האתר הגנרי). כתבו 5 הבדלים טיפוגרפיים בולטים.
- אם שאלה אחת לא עברה — זהו את החלק בפרומפט שצריך חיזוק והוסיפו.
מה צריך להיות בסוף: 2 screenshots (לפני/אחרי), רשימת 5 הבדלים, 6 תשובות לשאלות האודיט, ופרומפט מעודכן v1.1 אישי שלכם.
| תדירות | מה לעשות | כמה זמן |
|---|---|---|
| יומי | גלשו ל-3 אתרים (חדשות, SaaS, חנות). על כל אחד — F12 על הכותרת ועל body. רשמו את font-family, size, weight, line-height. נסו לנחש מה Ratio ה-scale. 5 דקות. | 5 דקות |
| שבועי | בחרו אתר שבניתם עם AI בשבוע האחרון. הריצו את Typography Audit (6 שאלות מהתרגיל 4). תקנו את 3 הנקודות הגרועות ביותר. | 20 דקות |
| חודשי | עדכנו את Typography Spec Template האישי שלכם. הוסיפו zoo פונטים חדש שגיליתם. בחנו על 2 פרויקטים שונים. | 30 דקות |
הוסיפו ל-CSS של הפרויקט שלכם 2 שורות בלבד: h1, h2, h3 { line-height: 1.1; letter-spacing: -0.02em; } ו-body { line-height: 1.6; }. זה המינימום המוחלט שיהפוך אתר "בסדר" לאתר "מעוצב". זה 10 שניות של עבודה שנראה יותר השפעה על "professional feel" מאשר 3 שעות של בחירת פונטים. אם תיישמו את זה בכל פרויקט מעכשיו — זכיתם.
- למה כלל 2-3 פונטים ולא יותר? ומה עושים כשמרגישים שחסר גיוון? (רמז: משקלים)
- מה ההבדל בין line-height של headings ל-body, ולמה? (רמז: 1.1 vs 1.6 — גודל הטקסט)
- למה font-display: swap קריטי? מה הבעיה של FOIT? (רמז: טקסט בלתי נראה vs FOUT)
- איך clamp() מחליף media queries לטיפוגרפיה? מה 3 הערכים שלו? (רמז: MIN, IDEAL, MAX)
- למה בעברית letter-spacing תמיד 0 ולא שלילי כמו באנגלית? (רמז: מבנה האותיות שונה; עברית רגישה ל-tracking)
בפרק הזה בניתם את אחת היכולות העם-ההשפעה הגבוהה ביותר של Vibe Coder: הבנה מעמיקה של טיפוגרפיה מקצועית. עברתם על 4 משפחות הפונטים (serif, sans-serif, display, monospace), 5 זיווגי font pairing מוכחים, בניית typographic scale שלם עם clamp(), וניהול מלא של פונטים עבריים עם 5 ההמלצות המפורטות (Heebo, Assistant, Rubik, Secular One, Noto Sans Hebrew).
התובנה המרכזית: טיפוגרפיה היא המשתנה עם התמורה הגבוהה ביותר. 15 דקות של font pairing + scale + line-height נכון משפרות את האתר יותר מ-3 שעות של שינויי layout. לכן היא אחת השכבות הראשונות של design system — מיד אחרי צבע.
יש לכם עכשיו 3 deliverables מוחשיים: (1) זוג פונטים מותאם לפרויקט האישי עם נימוק מפורט, (2) typographic scale שלם עם 7 רמות ב-CSS custom properties עם clamp() responsive, ו-(3) Typography Spec Template באנגלית + עברית שתוכלו להעתיק לתחילת כל פרויקט AI.
למדתם גם איך להימנע מ-3 טעויות קטסטרופליות: טעינת כל המשקלים (הורגת performance), שימוש ב-3+ פונטים (כאוס ויזואלי), והזנחה של line-height (הסימן המובהק ביותר של אתר חובבני בעיני מעצב).
הגשר לפרק הבא: בפרק 4 למדתם איך להפוך טקסט ממשעמם למרשים. בפרק 5 — "Layout Mastery — Grid, Flexbox ואמנות הרווח הלבן" — תלמדו איך להפוך המבנה של האתר ממשעמם למרשים. תכירו את ההבדל בין CSS Grid ל-Flexbox, תבנו bento grid בסגנון Apple, תשלטו ב-8px grid system, ותלמדו איך whitespace הוא כלי עיצוב ולא "מקום ריק". צבע (פרק 3) + טיפוגרפיה (פרק 4) + layout (פרק 5) = השלישייה שקובעת 80% מהפרימיום של האתר.
- קראתי את 4 משפחות הפונטים והבנתי מתי כל אחת מתאימה (serif, sans-serif, display, monospace)
- בחרתי זוג פונטים (display + body) לפרויקט אישי — מתוך 5 זיווגי Font Pairing Framework
- אם יש תוכן עברי — בחרתי זיווג עברי מתוך Hebrew Font Decision Matrix, והתאמתי לזוג אנגלי
- השלמתי את תרגיל 1 — בחירת פונטים עם נימוק
- בניתי typographic scale שלם עם 7 רמות (display עד caption) עם clamp() ב-CSS custom properties
- השלמתי את תרגיל 2 — scale מלא עובד responsive
- הגדרתי line-height tokens (headings 1.1, body 1.6) ו-letter-spacing tokens (display -0.03em, body 0)
- טעתי Google Fonts נכון — עם preconnect, display=swap, ורק 2-3 משקלים
- השלמתי את תרגיל 3 — Lighthouse report עם LCP תקין
- הכרתי variable fonts ומתי להשתמש בהם
- אם האתר בעברית — הוספתי
dir="rtl"ו-unicode-bidi: plaintextעל paragraphs - יצרתי Typography Spec Template אישי שאוכל להעתיק לכל פרויקט חדש
- השלמתי את תרגיל 4 — הרצה של פרומפט מלא והשוואה before/after
- יודע/ת לענות על 5 שאלות "בדקו את עצמכם"
- יישמתי לפחות פעם אחת את "Just One Thing" — 2 שורות ה-CSS של line-height