CSS • Chapter 26 • Foundations to Production
Web Fonts and Font Features
Every topic includes a CSS/HTML coding example, ten focused teaching examples, code explanation, expected result, practice, and responsive/translated-layout checks.
26.1 @font-face
@font-face is part of the CSS system covered in Chapter 26. The key is to understand what box, selector, cascade rule, layout algorithm, or user preference the declaration affects, then test the result at more than one viewport size. The goal is to connect the syntax to the browser's layout and cascade decisions rather than memorize a property name.
For @font-face in Chapter 26, inspect the matched selector, computed value, containing block or formatting context, intrinsic size, and any min/max constraints. When translation is enabled, also inspect whether longer text or RTL direction changes the available inline space.
Start with one small example for @font-face, resize the viewport, increase text size, translate the label, and add a competing rule. This shows whether the technique remains predictable under real content rather than only in a fixed desktop mockup. This explanation is specific to Chapter 26, topic 1.
Concept in plain language
@font-face is part of the CSS system covered in Chapter 26. The key is to understand what box, selector, cascade rule, layout algorithm, or user preference the declaration affects, then test the result at more than one viewport size.
10 teaching examples
Example 1: Smallest useful case
Build a minimal dashboard for @font-face. Keep only the declarations needed to see the behavior clearly, then inspect the computed styles. Chapter 26, topic 1, example 1.
Example 2: Change one value
Change one important CSS value in the photo gallery example for @font-face. Predict the visual difference before reloading the page. Chapter 26, topic 1, example 2.
Example 3: Narrow-screen test
Test @font-face in the pricing table at 320px, 375px, and tablet width. Watch for min-content sizing, unwrapped text, and elements that refuse to shrink. Chapter 26, topic 1, example 3.
Example 4: Translated-text test
Translate the lesson sidebar into a language with longer labels while using @font-face. Confirm buttons, headings, and navigation wrap without widening the page. Chapter 26, topic 1, example 4.
Example 5: Arabic/Persian test
Switch the contact form to Arabic or Persian. Verify logical spacing, start/end alignment, sidebar direction, and LTR code islands. Chapter 26, topic 1, example 5.
Example 6: Accessibility test
Check @font-face in the button group with keyboard focus, zoom, reduced motion, forced colors, and high text scaling where relevant. Chapter 26, topic 1, example 6.
Example 7: Cascade test
Add a competing rule to the data table and determine why the declaration for @font-face wins or loses using the browser's Styles and Computed panels. Chapter 26, topic 1, example 7.
Example 8: Content-stress test
Fill the media player with very long words, URLs, translated text, images, and nested controls. Adjust @font-face without hiding meaningful content. Chapter 26, topic 1, example 8.
Example 9: Refactoring test
Rewrite the notification so @font-face uses reusable tokens, logical properties, or a component class while preserving the same behavior. Chapter 26, topic 1, example 9.
Example 10: Production review
Review @font-face in the language selector for browser support, fallback behavior, RTL, small screens, print, motion preferences, and maintainability. Chapter 26, topic 1, example 10.
CSS/HTML coding example
<!-- HTML -->
<p class="text" lang="en">A long paragraph demonstrates the typography rule in a real content block.</p>
<style>
.text{@font-face{font-family:Demo;src:url('/fonts/demo.woff2') format('woff2')} .text{font-family:Demo,sans-serif}}
</style>Step-by-step code explanation
- Identify the selector and declaration that demonstrate @font-face.
- Read the HTML structure first so you know which box or relationship the CSS is styling.
- The declaration demonstrates @font-face on paragraph text.
- Resize the viewport and test long translated content. Confirm that flex/grid items use min-width:0 where needed and that only code or genuinely wide content scrolls locally.
- Switch to Arabic or Persian and verify logical start/end spacing, text alignment, sidebar direction, and LTR isolation for code.
Expected result: The browser visibly demonstrates @font-face without requiring the page to exceed the viewport width. If the example contains wide code, only the code block scrolls horizontally. This expected result belongs to Chapter 26, topic 1.
Practice exercise
Build a fresh example for @font-face from Chapter 26. Change one value, inspect the computed styles, test at 320px and tablet width, translate the visible text, switch the page to RTL, and explain why the final declaration or layout behavior occurs.
26.2 font-display
font-display is part of the CSS system covered in Chapter 26. The key is to understand what box, selector, cascade rule, layout algorithm, or user preference the declaration affects, then test the result at more than one viewport size. The goal is to connect the syntax to the browser's layout and cascade decisions rather than memorize a property name.
For font-display in Chapter 26, inspect the matched selector, computed value, containing block or formatting context, intrinsic size, and any min/max constraints. When translation is enabled, also inspect whether longer text or RTL direction changes the available inline space.
Start with one small example for font-display, resize the viewport, increase text size, translate the label, and add a competing rule. This shows whether the technique remains predictable under real content rather than only in a fixed desktop mockup. This explanation is specific to Chapter 26, topic 2.
Concept in plain language
font-display is part of the CSS system covered in Chapter 26. The key is to understand what box, selector, cascade rule, layout algorithm, or user preference the declaration affects, then test the result at more than one viewport size.
10 teaching examples
Example 1: Smallest useful case
Build a minimal lesson sidebar for font-display. Keep only the declarations needed to see the behavior clearly, then inspect the computed styles. Chapter 26, topic 2, example 1.
Example 2: Change one value
Change one important CSS value in the contact form example for font-display. Predict the visual difference before reloading the page. Chapter 26, topic 2, example 2.
Example 3: Narrow-screen test
Test font-display in the button group at 320px, 375px, and tablet width. Watch for min-content sizing, unwrapped text, and elements that refuse to shrink. Chapter 26, topic 2, example 3.
Example 4: Translated-text test
Translate the data table into a language with longer labels while using font-display. Confirm buttons, headings, and navigation wrap without widening the page. Chapter 26, topic 2, example 4.
Example 5: Arabic/Persian test
Switch the media player to Arabic or Persian. Verify logical spacing, start/end alignment, sidebar direction, and LTR code islands. Chapter 26, topic 2, example 5.
Example 6: Accessibility test
Check font-display in the notification with keyboard focus, zoom, reduced motion, forced colors, and high text scaling where relevant. Chapter 26, topic 2, example 6.
Example 7: Cascade test
Add a competing rule to the language selector and determine why the declaration for font-display wins or loses using the browser's Styles and Computed panels. Chapter 26, topic 2, example 7.
Example 8: Content-stress test
Fill the course card with very long words, URLs, translated text, images, and nested controls. Adjust font-display without hiding meaningful content. Chapter 26, topic 2, example 8.
Example 9: Refactoring test
Rewrite the navigation bar so font-display uses reusable tokens, logical properties, or a component class while preserving the same behavior. Chapter 26, topic 2, example 9.
Example 10: Production review
Review font-display in the article for browser support, fallback behavior, RTL, small screens, print, motion preferences, and maintainability. Chapter 26, topic 2, example 10.
CSS/HTML coding example
<!-- HTML -->
<h2>Balanced heading</h2>
<style>
:is(h1,h2,h3) { text-wrap: balance; }
</style>Step-by-step code explanation
- Identify the selector and declaration that demonstrate font-display.
- Read the HTML structure first so you know which box or relationship the CSS is styling.
- :is() groups selector alternatives without repeating the rest of the selector.
- Resize the viewport and test long translated content. Confirm that flex/grid items use min-width:0 where needed and that only code or genuinely wide content scrolls locally.
- Switch to Arabic or Persian and verify logical start/end spacing, text alignment, sidebar direction, and LTR isolation for code.
Expected result: The browser visibly demonstrates font-display without requiring the page to exceed the viewport width. If the example contains wide code, only the code block scrolls horizontally. This expected result belongs to Chapter 26, topic 2.
Practice exercise
Build a fresh example for font-display from Chapter 26. Change one value, inspect the computed styles, test at 320px and tablet width, translate the visible text, switch the page to RTL, and explain why the final declaration or layout behavior occurs.
26.3 Variable Fonts
Variable Fonts is part of the CSS system covered in Chapter 26. The key is to understand what box, selector, cascade rule, layout algorithm, or user preference the declaration affects, then test the result at more than one viewport size. The goal is to connect the syntax to the browser's layout and cascade decisions rather than memorize a property name.
For Variable Fonts in Chapter 26, inspect the matched selector, computed value, containing block or formatting context, intrinsic size, and any min/max constraints. When translation is enabled, also inspect whether longer text or RTL direction changes the available inline space.
Start with one small example for Variable Fonts, resize the viewport, increase text size, translate the label, and add a competing rule. This shows whether the technique remains predictable under real content rather than only in a fixed desktop mockup. This explanation is specific to Chapter 26, topic 3.
Concept in plain language
Variable Fonts is part of the CSS system covered in Chapter 26. The key is to understand what box, selector, cascade rule, layout algorithm, or user preference the declaration affects, then test the result at more than one viewport size.
10 teaching examples
Example 1: Smallest useful case
Build a minimal data table for Variable Fonts. Keep only the declarations needed to see the behavior clearly, then inspect the computed styles. Chapter 26, topic 3, example 1.
Example 2: Change one value
Change one important CSS value in the media player example for Variable Fonts. Predict the visual difference before reloading the page. Chapter 26, topic 3, example 2.
Example 3: Narrow-screen test
Test Variable Fonts in the notification at 320px, 375px, and tablet width. Watch for min-content sizing, unwrapped text, and elements that refuse to shrink. Chapter 26, topic 3, example 3.
Example 4: Translated-text test
Translate the language selector into a language with longer labels while using Variable Fonts. Confirm buttons, headings, and navigation wrap without widening the page. Chapter 26, topic 3, example 4.
Example 5: Arabic/Persian test
Switch the course card to Arabic or Persian. Verify logical spacing, start/end alignment, sidebar direction, and LTR code islands. Chapter 26, topic 3, example 5.
Example 6: Accessibility test
Check Variable Fonts in the navigation bar with keyboard focus, zoom, reduced motion, forced colors, and high text scaling where relevant. Chapter 26, topic 3, example 6.
Example 7: Cascade test
Add a competing rule to the article and determine why the declaration for Variable Fonts wins or loses using the browser's Styles and Computed panels. Chapter 26, topic 3, example 7.
Example 8: Content-stress test
Fill the profile panel with very long words, URLs, translated text, images, and nested controls. Adjust Variable Fonts without hiding meaningful content. Chapter 26, topic 3, example 8.
Example 9: Refactoring test
Rewrite the search form so Variable Fonts uses reusable tokens, logical properties, or a component class while preserving the same behavior. Chapter 26, topic 3, example 9.
Example 10: Production review
Review Variable Fonts in the dashboard for browser support, fallback behavior, RTL, small screens, print, motion preferences, and maintainability. Chapter 26, topic 3, example 10.
CSS/HTML coding example
<!-- HTML -->
<p class="text" lang="en">A long paragraph demonstrates the typography rule in a real content block.</p>
<style>
.text{@font-face{font-family:Demo;src:url('/fonts/demo-var.woff2');font-weight:100 900}.text{font-weight:650}}
</style>Step-by-step code explanation
- Identify the selector and declaration that demonstrate Variable Fonts.
- Read the HTML structure first so you know which box or relationship the CSS is styling.
- The declaration demonstrates Variable Fonts on paragraph text.
- Resize the viewport and test long translated content. Confirm that flex/grid items use min-width:0 where needed and that only code or genuinely wide content scrolls locally.
- Switch to Arabic or Persian and verify logical start/end spacing, text alignment, sidebar direction, and LTR isolation for code.
Expected result: The browser visibly demonstrates Variable Fonts without requiring the page to exceed the viewport width. If the example contains wide code, only the code block scrolls horizontally. This expected result belongs to Chapter 26, topic 3.
Practice exercise
Build a fresh example for Variable Fonts from Chapter 26. Change one value, inspect the computed styles, test at 320px and tablet width, translate the visible text, switch the page to RTL, and explain why the final declaration or layout behavior occurs.
26.4 font-feature-settings
font-feature-settings is part of the CSS system covered in Chapter 26. The key is to understand what box, selector, cascade rule, layout algorithm, or user preference the declaration affects, then test the result at more than one viewport size. The goal is to connect the syntax to the browser's layout and cascade decisions rather than memorize a property name.
For font-feature-settings in Chapter 26, inspect the matched selector, computed value, containing block or formatting context, intrinsic size, and any min/max constraints. When translation is enabled, also inspect whether longer text or RTL direction changes the available inline space.
Start with one small example for font-feature-settings, resize the viewport, increase text size, translate the label, and add a competing rule. This shows whether the technique remains predictable under real content rather than only in a fixed desktop mockup. This explanation is specific to Chapter 26, topic 4.
Concept in plain language
font-feature-settings is part of the CSS system covered in Chapter 26. The key is to understand what box, selector, cascade rule, layout algorithm, or user preference the declaration affects, then test the result at more than one viewport size.
10 teaching examples
Example 1: Smallest useful case
Build a minimal language selector for font-feature-settings. Keep only the declarations needed to see the behavior clearly, then inspect the computed styles. Chapter 26, topic 4, example 1.
Example 2: Change one value
Change one important CSS value in the course card example for font-feature-settings. Predict the visual difference before reloading the page. Chapter 26, topic 4, example 2.
Example 3: Narrow-screen test
Test font-feature-settings in the navigation bar at 320px, 375px, and tablet width. Watch for min-content sizing, unwrapped text, and elements that refuse to shrink. Chapter 26, topic 4, example 3.
Example 4: Translated-text test
Translate the article into a language with longer labels while using font-feature-settings. Confirm buttons, headings, and navigation wrap without widening the page. Chapter 26, topic 4, example 4.
Example 5: Arabic/Persian test
Switch the profile panel to Arabic or Persian. Verify logical spacing, start/end alignment, sidebar direction, and LTR code islands. Chapter 26, topic 4, example 5.
Example 6: Accessibility test
Check font-feature-settings in the search form with keyboard focus, zoom, reduced motion, forced colors, and high text scaling where relevant. Chapter 26, topic 4, example 6.
Example 7: Cascade test
Add a competing rule to the dashboard and determine why the declaration for font-feature-settings wins or loses using the browser's Styles and Computed panels. Chapter 26, topic 4, example 7.
Example 8: Content-stress test
Fill the photo gallery with very long words, URLs, translated text, images, and nested controls. Adjust font-feature-settings without hiding meaningful content. Chapter 26, topic 4, example 8.
Example 9: Refactoring test
Rewrite the pricing table so font-feature-settings uses reusable tokens, logical properties, or a component class while preserving the same behavior. Chapter 26, topic 4, example 9.
Example 10: Production review
Review font-feature-settings in the lesson sidebar for browser support, fallback behavior, RTL, small screens, print, motion preferences, and maintainability. Chapter 26, topic 4, example 10.
CSS/HTML coding example
<!-- HTML -->
<p class="text" lang="en">A long paragraph demonstrates the typography rule in a real content block.</p>
<style>
.text{.text{font-feature-settings:"liga" 1,"kern" 1}}
</style>Step-by-step code explanation
- Identify the selector and declaration that demonstrate font-feature-settings.
- Read the HTML structure first so you know which box or relationship the CSS is styling.
- The declaration demonstrates font-feature-settings on paragraph text.
- Resize the viewport and test long translated content. Confirm that flex/grid items use min-width:0 where needed and that only code or genuinely wide content scrolls locally.
- Switch to Arabic or Persian and verify logical start/end spacing, text alignment, sidebar direction, and LTR isolation for code.
Expected result: The browser visibly demonstrates font-feature-settings without requiring the page to exceed the viewport width. If the example contains wide code, only the code block scrolls horizontally. This expected result belongs to Chapter 26, topic 4.
Practice exercise
Build a fresh example for font-feature-settings from Chapter 26. Change one value, inspect the computed styles, test at 320px and tablet width, translate the visible text, switch the page to RTL, and explain why the final declaration or layout behavior occurs.
26.5 font-variation-settings
font-variation-settings is part of the CSS system covered in Chapter 26. The key is to understand what box, selector, cascade rule, layout algorithm, or user preference the declaration affects, then test the result at more than one viewport size. The goal is to connect the syntax to the browser's layout and cascade decisions rather than memorize a property name.
For font-variation-settings in Chapter 26, inspect the matched selector, computed value, containing block or formatting context, intrinsic size, and any min/max constraints. When translation is enabled, also inspect whether longer text or RTL direction changes the available inline space.
Start with one small example for font-variation-settings, resize the viewport, increase text size, translate the label, and add a competing rule. This shows whether the technique remains predictable under real content rather than only in a fixed desktop mockup. This explanation is specific to Chapter 26, topic 5.
Concept in plain language
font-variation-settings is part of the CSS system covered in Chapter 26. The key is to understand what box, selector, cascade rule, layout algorithm, or user preference the declaration affects, then test the result at more than one viewport size.
10 teaching examples
Example 1: Smallest useful case
Build a minimal article for font-variation-settings. Keep only the declarations needed to see the behavior clearly, then inspect the computed styles. Chapter 26, topic 5, example 1.
Example 2: Change one value
Change one important CSS value in the profile panel example for font-variation-settings. Predict the visual difference before reloading the page. Chapter 26, topic 5, example 2.
Example 3: Narrow-screen test
Test font-variation-settings in the search form at 320px, 375px, and tablet width. Watch for min-content sizing, unwrapped text, and elements that refuse to shrink. Chapter 26, topic 5, example 3.
Example 4: Translated-text test
Translate the dashboard into a language with longer labels while using font-variation-settings. Confirm buttons, headings, and navigation wrap without widening the page. Chapter 26, topic 5, example 4.
Example 5: Arabic/Persian test
Switch the photo gallery to Arabic or Persian. Verify logical spacing, start/end alignment, sidebar direction, and LTR code islands. Chapter 26, topic 5, example 5.
Example 6: Accessibility test
Check font-variation-settings in the pricing table with keyboard focus, zoom, reduced motion, forced colors, and high text scaling where relevant. Chapter 26, topic 5, example 6.
Example 7: Cascade test
Add a competing rule to the lesson sidebar and determine why the declaration for font-variation-settings wins or loses using the browser's Styles and Computed panels. Chapter 26, topic 5, example 7.
Example 8: Content-stress test
Fill the contact form with very long words, URLs, translated text, images, and nested controls. Adjust font-variation-settings without hiding meaningful content. Chapter 26, topic 5, example 8.
Example 9: Refactoring test
Rewrite the button group so font-variation-settings uses reusable tokens, logical properties, or a component class while preserving the same behavior. Chapter 26, topic 5, example 9.
Example 10: Production review
Review font-variation-settings in the data table for browser support, fallback behavior, RTL, small screens, print, motion preferences, and maintainability. Chapter 26, topic 5, example 10.
CSS/HTML coding example
<!-- HTML -->
<p class="text" lang="en">A long paragraph demonstrates the typography rule in a real content block.</p>
<style>
.text{.text{font-variation-settings:"wght" 650}}
</style>Step-by-step code explanation
- Identify the selector and declaration that demonstrate font-variation-settings.
- Read the HTML structure first so you know which box or relationship the CSS is styling.
- The declaration demonstrates font-variation-settings on paragraph text.
- Resize the viewport and test long translated content. Confirm that flex/grid items use min-width:0 where needed and that only code or genuinely wide content scrolls locally.
- Switch to Arabic or Persian and verify logical start/end spacing, text alignment, sidebar direction, and LTR isolation for code.
Expected result: The browser visibly demonstrates font-variation-settings without requiring the page to exceed the viewport width. If the example contains wide code, only the code block scrolls horizontally. This expected result belongs to Chapter 26, topic 5.
Practice exercise
Build a fresh example for font-variation-settings from Chapter 26. Change one value, inspect the computed styles, test at 320px and tablet width, translate the visible text, switch the page to RTL, and explain why the final declaration or layout behavior occurs.
Chapter 26 review — 10 questions and answers
1. What should you inspect first when @font-face does not work as expected?
Answer: Inspect the matched rules, computed value, box size, layout context, and inherited values for @font-face. Then reduce the example until the winning declaration is clear.
2. How should @font-face be checked before publishing?
Answer: Test @font-face on narrow and wide screens, with long translated text, at increased zoom, and in RTL where direction can affect layout. Add a fallback if browser support or user preferences require one.
3. What should you inspect first when font-display does not work as expected?
Answer: Inspect the matched rules, computed value, box size, layout context, and inherited values for font-display. Then reduce the example until the winning declaration is clear.
4. How should font-display be checked before publishing?
Answer: Test font-display on narrow and wide screens, with long translated text, at increased zoom, and in RTL where direction can affect layout. Add a fallback if browser support or user preferences require one.
5. What should you inspect first when Variable Fonts does not work as expected?
Answer: Inspect the matched rules, computed value, box size, layout context, and inherited values for Variable Fonts. Then reduce the example until the winning declaration is clear.
6. How should Variable Fonts be checked before publishing?
Answer: Test Variable Fonts on narrow and wide screens, with long translated text, at increased zoom, and in RTL where direction can affect layout. Add a fallback if browser support or user preferences require one.
7. What should you inspect first when font-feature-settings does not work as expected?
Answer: Inspect the matched rules, computed value, box size, layout context, and inherited values for font-feature-settings. Then reduce the example until the winning declaration is clear.
8. How should font-feature-settings be checked before publishing?
Answer: Test font-feature-settings on narrow and wide screens, with long translated text, at increased zoom, and in RTL where direction can affect layout. Add a fallback if browser support or user preferences require one.
9. What should you inspect first when font-variation-settings does not work as expected?
Answer: Inspect the matched rules, computed value, box size, layout context, and inherited values for font-variation-settings. Then reduce the example until the winning declaration is clear.
10. How should font-variation-settings be checked before publishing?
Answer: Test font-variation-settings on narrow and wide screens, with long translated text, at increased zoom, and in RTL where direction can affect layout. Add a fallback if browser support or user preferences require one.