Typography
Working guidance for English and Arabic font families, type hierarchy, responsive metrics and readable implementation.
A script-aware typography system
JR Dream uses Inter for English and IBM Plex Sans Arabic for Arabic. The shared sans-serif approach supports a consistent information hierarchy while each script keeps its own sizes, rhythm and line heights.
Use these working specifications across digital interfaces, documentation and future corporate experiences. Presentation and document recipes use the same families at their own point sizes. Do not stretch either typeface or replace the lettering inside the supplied logo.
The specification is internally accepted, pending implementation validation, competent Arabic review and final company approval. No linguistically approved Arabic specimen copy is available for this page. Arabic-font specimens use technical digits only; they are not translations or a choice of business numeral convention.
Source: Typography System Exploration & Validation v1.0, pages 1–2, 5 and 12.
Font families and local files
Inter: English
Clear information, consistently presented.
Local variable TTF, version 4.001 (git-66647c0bb). The file offers a weight axis of 100–900 and optical-size axis of 14–32; this project uses only 400, 500 and 600 with automatic optical sizing.
public/fonts/inter/Inter-Variable.ttfIBM Plex Sans Arabic: Arabic
0123456789
Technical digit specimen from the Arabic font, not Arabic-language sample copy. Approved Arabic content and native-reader validation remain pending.
Local static TTF files, version 1.101: Regular (400), Medium (500) and SemiBold (600). The wider family offers upright weights 100–700; this project declares only the three working weights.
public/fonts/ibm-plex-sans-arabic/IBMPlexSansArabic-Regular.ttfpublic/fonts/ibm-plex-sans-arabic/IBMPlexSansArabic-Medium.ttfpublic/fonts/ibm-plex-sans-arabic/IBMPlexSansArabic-SemiBold.ttf
Both families are locally hosted, unmodified files obtained through the official Google Fonts repository. The checked-in files and hashes in public/fonts/README.md fix the deployed versions. styles/fonts.css uses real faces and font-display: swap; the typography stylesheet disables synthetic faces and enables automatic optical sizing.
Both fonts declare SIL Open Font License 1.1. The source records permission for commercial use and document embedding. Retain copyright and licence notices with redistributed fonts, do not sell fonts alone, and respect Reserved Font Names when modifying. The Plex licence reserves “Plex”. This task does not modify, convert or redistribute font files outside the project.
The source prefers official WOFF2 for future web production and static TTF/OTF for desktop editing. This implementation retains the existing full TTF files and Arabic coverage; no conversion or subsetting is performed. Fallbacks are availability fallbacks, not visually equivalent substitutes.
Source: Typography System Exploration & Validation v1.0, pages 2, 8, 11 and 12; local font metadata, font declarations, provenance record and retained OFL licences.
Working font weights
Use actual 400, 500 and 600 faces. The hierarchy requires no weight above 600. English and Arabic examples below demonstrate those same three weights without synthesised bold or italic.
Regular: 400
Clear information
0123456789
Inter phrase and Plex Arabic technical digits. Approved Arabic words remain pending. Variable: --weight-regular.
Medium: 500
Clear information
0123456789
Inter phrase and Plex Arabic technical digits. Approved Arabic words remain pending. Variable: --weight-medium.
SemiBold: 600
Clear information
0123456789
Inter phrase and Plex Arabic technical digits. Approved Arabic words remain pending. Variable: --weight-semibold.
Source: Typography System Exploration & Validation v1.0, pages 1–4 and 11.
Digital type hierarchy
Sizes are source CSS-pixel references at a 16px root. The implementation uses equivalent rem units. D / T / M means desktop / tablet / mobile; line height is a unitless multiplier and tracking is in em. Values below resolve from the existing CSS, including its responsive overrides.
English: Inter
| Style / weight | Size D / T / M (px) | Line height | Tracking (em) | Existing size variable |
|---|---|---|---|---|
| Display / 600 | 64 / 52 / 40 | 1.1 | -.02em | --type-display-size |
| H1 / 600 | 48 / 40 / 32 | 1.15 | -.02em | --type-h1-size |
| H2 / 600 | 36 / 32 / 28 | 1.25 | -.01em | --type-h2-size |
| H3 / 600 | 28 / 26 / 24 | 1.3 | 0 | --type-h3-size |
| H4 / 600 | 24 / 22 / 22 | 1.35 | 0 | --type-h4-size |
| H5 / 500 | 20 / 20 / 20 | 1.4 | 0 | --type-h5-size |
| H6 / 500 | 18 / 18 / 18 | 1.4 | 0 | --type-h6-size |
| Body large / 400 | 18 / 18 / 18 | 1.6 | 0 | --type-body-large-size |
| Body regular / 400 | 16 / 16 / 16 | 1.6 | 0 | --type-body-size |
| Body small / 400 | 14 / 14 / 14 | 1.5 | 0 | --type-body-small-size |
Arabic: IBM Plex Sans Arabic
| Style / weight | Size D / T / M (px) | Line height | Tracking (em) | Existing size variable |
|---|---|---|---|---|
| Display / 600 | 60 / 48 / 38 | 1.35 | 0 | --type-display-size |
| H1 / 600 | 48 / 40 / 34 | 1.4 | 0 | --type-h1-size |
| H2 / 600 | 36 / 32 / 28 | 1.4 | 0 | --type-h2-size |
| H3 / 600 | 28 / 26 / 24 | 1.45 | 0 | --type-h3-size |
| H4 / 600 | 24 / 22 / 22 | 1.45 | 0 | --type-h4-size |
| H5 / 500 | 22 / 22 / 22 | 1.5 | 0 | --type-h5-size |
| H6 / 500 | 20 / 20 / 20 | 1.5 | 0 | --type-h6-size |
| Body large / 400 | 20 / 20 / 20 | 1.7 | 0 | --type-body-large-size |
| Body regular / 400 | 18 / 18 / 18 | 1.7 | 0 | --type-body-size |
| Body small / 400 | 16 / 16 / 16 | 1.65 | 0 | --type-body-small-size |
Generic size variables resolve through language aliases, such as --type-h1-size to --type-en-h1-size or --type-ar-h1-size. Heading leading uses --type-h1-leading through --type-h6-leading; large and regular body share --type-body-leading. Small body uses --type-body-small-leading.
Live specimens at the current viewport
Each sample uses the existing responsive variables. Style names are labels, not extra document headings. Arabic-font samples contain technical digits only; actual Arabic wording is pending.
Display
Clear information
0123456789
H1
Clear information
0123456789
H2
Clear information
0123456789
H3
Clear information
0123456789
H4
Clear information
0123456789
H5
Clear information
0123456789
H6
Clear information
0123456789
Body large
Clear information
0123456789
Body regular
Clear information
0123456789
Body small
Clear information
0123456789
Use one H1 per page as the source’s editorial convention, with meaningful heading levels below it. A display style can decorate the page H1; do not use all heading levels merely to create visual variety.
Source: Typography System Exploration & Validation v1.0, page 3; implementation: styles/tokens.css and styles/typography.css.
Contextual typography
| Role / weight | EN size / LH | AR size / LH | Application |
|---|---|---|---|
| Navigation / UI / 500 | 16 / 1.4 | 18 / 1.5 | Sentence case; allow wrapping and growing targets. |
| Form label / 500 | 16 / 1.4 | 18 / 1.5 | Use a visible label, not placeholder-only instruction. |
| Field value / 400 | 16 / 1.5 | 18 / 1.7 | Retain body size; validate long values and input scrolling. |
| Table body / 400 | 14 / 1.5 | 16 / 1.65 | Scroll the table region; preserve accessible headings. |
| Table header / 500 | 14 / 1.5 | 16 / 1.65 | For content-heavy tables, use body size: 16px EN / 18px AR. |
| Metric label / 500 | 14 / 1.5 | 16 / 1.65 | Retain context alongside the value. |
| Metric value / 600 | 32 / 1.2 | 32 / 1.4 | Use tabular figures for comparable numeric columns; identifiers are not quantities. |
| Caption / metadata / 400 | 12 / 1.5 | 14 / 1.6 | Optional secondary information only; never essential instructions. |
Documentation demonstrations
These examples illustrate type roles, not production-ready navigation, forms or product records.
View implementation guidanceRead-only documentation field with a visible label. Its width follows its container and its text stays at body size.
This synthetic number demonstrates a metric style, not JR Dream operational data.
Optional specimen note: caption typography is not for essential instructions.
Specification tables on this page demonstrate existing 14px / 1.5 English table text and medium-weight headers. Use 16px English / 18px Arabic for content-heavy tables, keeping the same readable leading. Use tabular figures only for comparable numeric columns; do not treat reference codes as quantities.
Presentation and document reference
These are source-defined point values for physical/document contexts, not new CSS tokens or a print redesign of this website. Nominal sizes still require actual-size and recipient-software testing.
| Role / weight | English pt / LH | Arabic pt / LH |
|---|---|---|
| Slide title / 600 | 44 / 1.15 | 44 / 1.4 |
| Slide heading / 600 | 32 / 1.25 | 32 / 1.4 |
| Slide body / 400 | 22 / 1.5 | 24 / 1.65 |
| Slide footnote | 14; optional only | 16; optional only |
| Document title / 600 | 30 / 1.2 | 30 / 1.4 |
| Document H1 / 600 | 22 / 1.3 | 24 / 1.45 |
| Document H2 / 600 | 16 / 1.35 | 18 / 1.5 |
| Document H3 / 500 | 13 / 1.4 | 15 / 1.5 |
| Document body / 400 | 11 / 1.5 | 12.5 / 1.7 |
| Document caption / 400 | 9 / 1.5 | 10 / 1.6 |
Reduce slide wording before reducing type size. Confirm exact installed font names, embed where supported, export PDF and compare Arabic joins and line breaks. Recipient substitution, projector distance and physical proofs remain unverified.
Source: Typography System Exploration & Validation v1.0, pages 4, 8–10.
Responsive typography
| Band | Viewport width | English H1 / Arabic H1 | English body / Arabic body |
|---|---|---|---|
| Mobile | Below 600px | 32px / 34px | 16px / 18px |
| Tablet | 600–1023px | 40px / 40px | 16px / 18px |
| Desktop | 1024px and above | 48px / 48px | 16px / 18px |
Headlines step down across these existing bands. Body sizes remain stable on mobile. The live specimens above follow the current viewport, while the hierarchy tables retain all three reference sizes. No separate typography breakpoint system is introduced.
Keep the root at 100%, allow text to wrap and containers to grow, and do not disable zoom or cap text to fit fixed heights. Wide tables scroll inside their own keyboard-accessible regions while the article remains in normal document flow.
Source: Typography System Exploration & Validation v1.0, pages 6, 11 and 12.
Arabic and bilingual layout
- Set both
lang="ar"anddir="rtl"on Arabic sections. Keep English sections LTR and use start alignment, not a forced shared left edge. - Use IBM Plex Sans Arabic at section level, with Arabic-specific heading and body metrics. Arabic regular body is 18px / 1.7; changing only the font family or body size is insufficient.
- Keep Arabic letter spacing at zero, normal word spacing and no uppercase transformation. Do not justify paragraphs, insert manual kashida, add spaces to stretch lines, synthesize italic or horizontally scale either font.
- Isolate codes, dates, URLs and Latin names with
bdi, giving an explicit direction when known. Do not reverse strings manually. Use an explicit English font span only when necessary; isolated identifiers can retain the section font. - Choose Western or Arabic-Indic business numerals with the business and Arabic reviewer. Do not mix conventions in a data column; preserve machine identifiers in their original form.
Arabic content placeholder
Approved Arabic heading, paragraph and mixed-direction specimen text will be added after competent review. No PDF sample sentences are reused, and no translations are invented.
Technical identifiers only: explicit LTR isolation inside an RTL container using the Arabic section font. This verifies layout settings, not Arabic reading order, shaping quality or linguistic accuracy.
Source: Typography System Exploration & Validation v1.0, pages 3, 5, 6, 11 and 12.
Accessibility, readability and writing
- Retain the script-specific unitless leading in the tables. Arabic needs room for connected forms, dots and diacritics; equal English and Arabic sizes/leading are not a reliable recipe.
- English paragraph guidance is 45–75 characters, about 65ch maximum. The Arabic measure near 55ch is provisional and needs visual review: ch is not a count of Arabic characters.
- Allow user text enlargement and spacing overrides without clipped labels or fixed-height text boxes. The source leaves a full text-spacing override test pending; it does not define new letter or word spacing values for this purpose.
- Keep meaningful heading order, correct language attributes and visible field labels. Essential guidance must remain above optional caption size.
- Use paragraph spacing instead of blank-line characters or manual text boxes that disrupt reading order. Prefer start alignment and avoid justified paragraphs.
- Use charcoal or muted text on tested light surfaces and white on charcoal. Small white action labels stay on accessible action orange. A heading style does not exempt ordinary text from contrast checks.
Use the Colour foundation’s tested pairings and restrictions when applying these text roles. Font scaling, spacing, focus, language and assistive-technology behaviour need validation beyond a small contrast sample.
Project writing standard
Do not use Unicode U+2014 in authored JR Dream content. Use a comma, colon, full stop or grammatically appropriate standard hyphen according to the sentence. This applies to documentation, UI copy, accessibility descriptions, developer explanations and future corporate website content. The persistent rule is recorded in AGENTS.md.
Source: Typography System Exploration & Validation v1.0, pages 3–6, 9–12; punctuation convention is a project instruction, not a typography PDF specification.
Developer implementation
Reuse the existing font declarations, central tokens and language-aware aliases. Do not duplicate the type scale in components. A genuinely English subsection inside Arabic must declare its language and direction so English metrics are restored.
/* Load the existing fonts.css, tokens.css and typography.css.
Language aliases already select the script and responsive band. */
.feature-title {
font-family: var(--font-content);
font-size: var(--type-h1-size);
font-weight: var(--weight-semibold);
line-height: var(--type-h1-leading);
letter-spacing: var(--tracking-h1);
text-align: start;
}
.reading-text {
font-family: var(--font-content);
font-size: var(--type-body-size);
font-weight: var(--weight-regular);
line-height: var(--type-body-leading);
max-inline-size: var(--measure);
}
.comparable-number { font-variant-numeric: tabular-nums; }
/* Headings remain semantic HTML. Do not create another breakpoint scale.
Keep html at 100%, font-synthesis: none and optical sizing: auto,
as the existing stylesheets do. */<section lang="en" dir="ltr">
<h2>Implementation example</h2>
<p class="reading-text">English documentation content.</p>
</section>
<!-- Template only: approved Arabic text has not been supplied. -->
<section lang="ar" dir="rtl">
<!-- Insert approved Arabic heading and paragraph here. -->
<!-- Isolate Latin identifiers and dates without reversing strings: -->
<bdi dir="ltr">JR-024</bdi>
<bdi dir="ltr">2026-10-20</bdi>
<!-- Add lang="en" dir="ltr" to a genuinely English subsection.
Leave isolated identifiers in the section font unless needed. -->
</section>The HTML is a technical template with no Arabic sample prose. Font fallback line breaks, diacritics, long labels and mixed punctuation require later testing with approved content. Never apply font CSS to reconstruct or replace the supplied logo lettering.
Source: Typography System Exploration & Validation v1.0, pages 5, 10–12; snippets are documentation implementation guidance.
Validation and approval status
| Area | Status | Evidence or next action |
|---|---|---|
| Typography working specification | Internally accepted | Source-defined families, weights and script-specific metrics remain pending final company approval. |
| Source rendering studies | Recorded in PDF | WeasyPrint/Pango simulations, not browser tests. The source reports doubled-root native-input overflow at 320px; it does not claim a complete resize pass. |
| Prior shell checks | Recorded in Stage 02.1 | Local font loading, numeric Arabic CSS metrics and English shell text enlargement were checked. These do not certify Arabic content. |
| This implementation | Limited checks recorded separately | See docs/stage-02.2c-implementation.md for actual font, metric, responsive, keyboard, screenshot and PDF checks. |
| Arabic language and native-reader comfort | Pending | Review approved text, joins, diacritics, punctuation, bilingual content and business numeral choice. |
| Real devices and accessibility | Pending | Review real screens, fallback substitution, actual zoom/reflow, full text-spacing overrides and screen-reader behaviour. |
| Physical/document reproduction | Pending | Verify recipient application imports, font embedding/substitution, projectors and actual-size print proofs. |
| Final company approval | Pending | Joseph Dass’s approval of the complete brand system remains separate from internal acceptance and technical checks. |
No comprehensive WCAG conformance, Arabic linguistic approval, production release or final company approval is claimed. Real Arabic content remains a validation requirement, not an inferred result from technical digit specimens.
Source: Typography System Exploration & Validation v1.0, page 12; prior implementation records and current Stage 02.2C report.