-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
1888 lines (1689 loc) · 113 KB
/
Copy pathindex.html
File metadata and controls
1888 lines (1689 loc) · 113 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>The Complete Typography Guide — From Zero to Pro</title>
<style>
:root {
--black: #0f0e0d;
--off-white: #f9f7f4;
--cream: #f2ede6;
--accent: #c8502a;
--accent-light: #f0d9d1;
--mid-gray: #6b6560;
--light-gray: #e2ddd8;
--blue-link: #2563eb;
--serif: Georgia, 'Times New Roman', serif;
--sans: 'Helvetica Neue', Arial, sans-serif;
}
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; }
body {
background: var(--off-white);
color: var(--black);
font-family: var(--sans);
font-size: 17px;
line-height: 1.75;
}
/* ── HERO ── */
.hero {
background: var(--black);
color: var(--off-white);
padding: 80px 40px 70px;
text-align: center;
position: relative;
overflow: hidden;
}
.hero::before {
content: "Aa";
position: absolute;
font-size: 420px;
font-family: Georgia, serif;
font-weight: bold;
color: rgba(255,255,255,0.03);
top: -60px; left: 50%;
transform: translateX(-50%);
pointer-events: none;
letter-spacing: -20px;
}
.hero-tag {
display: inline-block;
font-size: 11px;
letter-spacing: 3px;
text-transform: uppercase;
color: var(--accent);
border: 1px solid var(--accent);
padding: 4px 14px;
border-radius: 2px;
margin-bottom: 24px;
}
.hero h1 {
font-family: Georgia, serif;
font-size: clamp(36px, 6vw, 72px);
line-height: 1.08;
font-weight: bold;
max-width: 820px;
margin: 0 auto 20px;
letter-spacing: -1px;
}
.hero p {
font-size: 18px;
color: rgba(249,247,244,0.7);
max-width: 560px;
margin: 0 auto 40px;
}
.hero-meta {
font-size: 13px;
color: rgba(249,247,244,0.4);
letter-spacing: 1px;
}
/* ── TOC ── */
.toc {
background: var(--cream);
border-left: 4px solid var(--accent);
padding: 32px 40px;
max-width: 900px;
margin: 56px auto;
border-radius: 0 6px 6px 0;
}
.toc h2 {
font-size: 13px;
letter-spacing: 3px;
text-transform: uppercase;
color: var(--mid-gray);
margin-bottom: 18px;
}
.toc ol {
padding-left: 20px;
}
.toc li {
margin-bottom: 6px;
}
.toc a {
color: var(--black);
text-decoration: none;
font-size: 15px;
border-bottom: 1px solid transparent;
transition: border-color .2s;
}
.toc a:hover { border-color: var(--accent); color: var(--accent); }
.toc .sub {
font-size: 13px;
color: var(--mid-gray);
margin-left: 8px;
}
/* ── ARTICLE LAYOUT ── */
.article {
max-width: 900px;
margin: 0 auto;
padding: 0 24px 100px;
}
/* ── SECTIONS ── */
.section {
margin-bottom: 80px;
padding-bottom: 80px;
border-bottom: 1px solid var(--light-gray);
}
.section:last-child { border-bottom: none; }
.section-number {
display: inline-block;
font-size: 11px;
letter-spacing: 3px;
text-transform: uppercase;
color: var(--accent);
margin-bottom: 10px;
}
h2 {
font-family: Georgia, serif;
font-size: clamp(26px, 3.5vw, 40px);
line-height: 1.15;
font-weight: bold;
margin-bottom: 24px;
letter-spacing: -0.5px;
}
h3 {
font-family: var(--sans);
font-size: 20px;
font-weight: 700;
margin: 40px 0 14px;
color: var(--black);
}
h4 {
font-size: 15px;
font-weight: 700;
letter-spacing: 1px;
text-transform: uppercase;
color: var(--mid-gray);
margin: 28px 0 10px;
}
p { margin-bottom: 20px; }
p:last-child { margin-bottom: 0; }
strong { color: var(--black); }
a { color: var(--blue-link); text-decoration: underline; text-underline-offset: 3px; }
/* ── CALLOUT / QUOTE ── */
.callout {
background: var(--cream);
border-left: 4px solid var(--accent);
padding: 24px 28px;
margin: 32px 0;
border-radius: 0 6px 6px 0;
font-style: italic;
font-family: Georgia, serif;
font-size: 18px;
line-height: 1.6;
color: var(--black);
}
.callout cite {
display: block;
font-style: normal;
font-family: var(--sans);
font-size: 13px;
color: var(--mid-gray);
margin-top: 10px;
letter-spacing: 0.5px;
}
/* ── DEFINITION BOX ── */
.def-box {
background: #fff;
border: 1px solid var(--light-gray);
border-top: 3px solid var(--accent);
border-radius: 4px;
padding: 22px 26px;
margin: 28px 0;
}
.def-box .def-term {
font-weight: 700;
font-size: 16px;
margin-bottom: 6px;
}
.def-box p { margin-bottom: 0; font-size: 15px; color: var(--mid-gray); }
/* ── IMAGE PLACEHOLDER ── */
.img-placeholder {
background: var(--cream);
border: 2px dashed var(--light-gray);
border-radius: 6px;
padding: 32px 24px;
margin: 32px 0;
text-align: center;
}
.img-placeholder .img-label {
font-size: 12px;
letter-spacing: 2px;
text-transform: uppercase;
color: var(--accent);
font-weight: 700;
margin-bottom: 8px;
}
.img-placeholder .img-caption {
font-size: 14px;
color: var(--mid-gray);
max-width: 500px;
margin: 0 auto;
line-height: 1.5;
}
.img-placeholder .img-url {
margin-top: 10px;
font-size: 13px;
}
.img-placeholder .img-url a {
color: var(--blue-link);
}
/* ── COMPARISON GRID ── */
.compare-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 20px;
margin: 28px 0;
}
@media (max-width: 600px) { .compare-grid { grid-template-columns: 1fr; } }
.compare-card {
background: #fff;
border: 1px solid var(--light-gray);
border-radius: 6px;
padding: 22px;
}
.compare-card h4 { margin-top: 0; }
.compare-card p { font-size: 14px; color: var(--mid-gray); margin-bottom: 0; }
/* ── FONT TYPE DEMO ── */
.font-demo-row {
display: flex;
align-items: center;
gap: 20px;
padding: 20px 0;
border-bottom: 1px solid var(--light-gray);
}
.font-demo-row:last-child { border-bottom: none; }
.font-sample {
width: 200px;
flex-shrink: 0;
font-size: 32px;
line-height: 1;
color: var(--black);
}
.font-sample.serif { font-family: Georgia, serif; }
.font-sample.sans { font-family: 'Helvetica Neue', Arial, sans-serif; }
.font-sample.mono { font-family: 'Courier New', monospace; }
.font-sample.script { font-family: 'Brush Script MT', cursive; font-size: 36px; }
.font-meta { flex: 1; }
.font-meta strong { display: block; font-size: 15px; margin-bottom: 4px; }
.font-meta p { font-size: 14px; color: var(--mid-gray); margin: 0; }
/* ── RULES LIST ── */
.rules-list {
counter-reset: rule-counter;
list-style: none;
padding: 0;
margin: 24px 0;
}
.rules-list li {
counter-increment: rule-counter;
position: relative;
padding: 18px 18px 18px 64px;
margin-bottom: 12px;
background: #fff;
border: 1px solid var(--light-gray);
border-radius: 6px;
font-size: 15px;
}
.rules-list li::before {
content: counter(rule-counter, decimal-leading-zero);
position: absolute;
left: 18px;
top: 50%;
transform: translateY(-50%);
font-size: 22px;
font-family: Georgia, serif;
font-weight: bold;
color: var(--accent);
line-height: 1;
}
.rules-list li strong { display: block; margin-bottom: 3px; }
.rules-list li span { color: var(--mid-gray); font-size: 14px; }
/* ── HIGHLIGHT BOX ── */
.highlight-box {
background: var(--accent);
color: #fff;
padding: 28px 32px;
border-radius: 6px;
margin: 32px 0;
}
.highlight-box h3 { color: #fff; margin-top: 0; margin-bottom: 10px; font-size: 18px; }
.highlight-box p { margin: 0; font-size: 15px; opacity: 0.9; }
/* ── SPACING VISUAL ── */
.spacing-demo {
background: #fff;
border: 1px solid var(--light-gray);
border-radius: 6px;
padding: 28px;
margin: 28px 0;
}
.spacing-demo .label {
font-size: 11px;
letter-spacing: 2px;
text-transform: uppercase;
color: var(--mid-gray);
margin-bottom: 12px;
}
.spacing-demo .text-tight { line-height: 1.1; font-size: 16px; margin-bottom: 24px; }
.spacing-demo .text-good { line-height: 1.7; font-size: 16px; margin-bottom: 24px; }
.spacing-demo .text-loose { line-height: 2.4; font-size: 16px; }
/* ── PAIRING EXAMPLES ── */
.pairing-example {
background: #fff;
border: 1px solid var(--light-gray);
border-radius: 6px;
padding: 32px;
margin: 20px 0;
}
.pairing-example .pairing-label {
font-size: 11px;
letter-spacing: 2px;
text-transform: uppercase;
color: var(--mid-gray);
margin-bottom: 14px;
}
.pairing-heading {
font-family: Georgia, serif;
font-size: 28px;
font-weight: bold;
line-height: 1.2;
margin-bottom: 10px;
}
.pairing-body {
font-family: 'Helvetica Neue', Arial, sans-serif;
font-size: 15px;
line-height: 1.7;
color: var(--mid-gray);
}
.pairing-heading-sans {
font-family: 'Helvetica Neue', Arial, sans-serif;
font-size: 26px;
font-weight: 800;
letter-spacing: -0.5px;
}
.pairing-body-serif {
font-family: Georgia, serif;
font-size: 15px;
line-height: 1.8;
color: var(--mid-gray);
}
/* ── KERNING DEMO ── */
.kerning-demo {
background: #fff;
border: 1px solid var(--light-gray);
border-radius: 6px;
padding: 28px 32px;
margin: 28px 0;
}
.kern-row {
margin-bottom: 20px;
}
.kern-row .kern-label {
font-size: 12px;
letter-spacing: 2px;
text-transform: uppercase;
color: var(--mid-gray);
margin-bottom: 8px;
}
.kern-bad { font-size: 42px; font-family: Georgia, serif; letter-spacing: 8px; font-weight: bold; }
.kern-good { font-size: 42px; font-family: Georgia, serif; letter-spacing: -1px; font-weight: bold; }
/* ── ALIGNMENT DEMO ── */
.align-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 16px;
margin: 24px 0;
}
@media (max-width: 600px) { .align-grid { grid-template-columns: 1fr; } }
.align-card {
background: #fff;
border: 1px solid var(--light-gray);
border-radius: 6px;
padding: 20px;
}
.align-card .align-label {
font-size: 11px;
letter-spacing: 2px;
text-transform: uppercase;
color: var(--accent);
font-weight: 700;
margin-bottom: 10px;
}
.align-card p {
font-size: 14px;
line-height: 1.65;
color: var(--mid-gray);
margin: 0;
}
.align-left p { text-align: left; }
.align-center p { text-align: center; }
.align-right p { text-align: right; }
.align-justify p { text-align: justify; }
/* ── TIP ── */
.tip {
display: flex;
gap: 14px;
background: #eef5ff;
border: 1px solid #c5d9f7;
border-radius: 6px;
padding: 18px 20px;
margin: 24px 0;
align-items: flex-start;
}
.tip-icon { font-size: 20px; flex-shrink: 0; margin-top: 1px; }
.tip-text { font-size: 15px; color: #1e3a5f; }
.tip-text strong { color: #1e3a5f; }
/* ── TABLE ── */
.data-table {
width: 100%;
border-collapse: collapse;
margin: 28px 0;
font-size: 14px;
}
.data-table th {
background: var(--black);
color: var(--off-white);
padding: 12px 16px;
text-align: left;
font-size: 12px;
letter-spacing: 1px;
text-transform: uppercase;
}
.data-table td {
padding: 12px 16px;
border-bottom: 1px solid var(--light-gray);
}
.data-table tr:nth-child(even) td { background: var(--cream); }
/* ── RESOURCES ── */
.resource-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 16px;
margin: 28px 0;
}
@media (max-width: 600px) { .resource-grid { grid-template-columns: 1fr; } }
.resource-card {
background: #fff;
border: 1px solid var(--light-gray);
border-radius: 6px;
padding: 20px;
text-decoration: none;
color: var(--black);
display: block;
transition: border-color .2s, box-shadow .2s;
}
.resource-card:hover {
border-color: var(--accent);
box-shadow: 0 4px 16px rgba(0,0,0,0.07);
}
.resource-card .res-type {
font-size: 11px;
letter-spacing: 2px;
text-transform: uppercase;
color: var(--accent);
font-weight: 700;
margin-bottom: 6px;
}
.resource-card h4 { font-size: 14px; margin: 0 0 4px; text-transform: none; letter-spacing: 0; }
.resource-card p { font-size: 13px; color: var(--mid-gray); margin: 0; }
/* ── HIERARCHY VISUAL ── */
.hierarchy-demo {
background: #fff;
border: 1px solid var(--light-gray);
border-radius: 6px;
padding: 36px 40px;
margin: 28px 0;
}
.h-h1 { font-size: 38px; font-weight: 900; font-family: Georgia, serif; line-height: 1.1; margin-bottom: 8px; }
.h-h2 { font-size: 22px; font-weight: 700; font-family: 'Helvetica Neue', Arial, sans-serif; line-height: 1.3; margin-bottom: 12px; color: #333; }
.h-body { font-size: 16px; line-height: 1.75; color: var(--mid-gray); margin-bottom: 14px; font-family: Georgia, serif; }
.h-caption { font-size: 13px; color: #aaa; letter-spacing: 0.5px; }
/* ── OTF DEMO ── */
.otf-demo-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
gap: 12px;
margin: 20px 0;
}
.otf-char {
background: var(--cream);
border-radius: 4px;
padding: 14px;
text-align: center;
font-family: Georgia, serif;
font-size: 36px;
}
.otf-char small {
display: block;
font-family: var(--sans);
font-size: 11px;
color: var(--mid-gray);
margin-top: 4px;
}
/* ── FOOTER ── */
footer {
background: var(--black);
color: rgba(249,247,244,0.5);
text-align: center;
padding: 40px 24px;
font-size: 13px;
letter-spacing: 0.5px;
}
/* ── PROGRESS BAR ── */
.progress-bar {
position: sticky;
top: 0;
height: 3px;
background: var(--light-gray);
z-index: 100;
}
.progress-fill {
height: 100%;
background: var(--accent);
width: 0%;
transition: width .1s;
}
@media (max-width: 700px) {
.hero { padding: 60px 24px 50px; }
.toc { margin: 32px 16px; padding: 24px; }
.article { padding: 0 16px 60px; }
.font-demo-row { flex-direction: column; gap: 8px; }
.font-sample { width: auto; }
}
</style>
</head>
<body>
<div class="progress-bar"><div class="progress-fill" id="progressFill"></div></div>
<!-- ══════════════════════════════════ HERO -->
<header class="hero">
<div class="hero-tag">Complete Guide</div>
<h1>The Art & Science of Typography</h1>
<p>Everything you need to go from font-picking confusion to professional typographic mastery — and actually implement it in your designs.</p>
</header>
<!-- ══════════════════════════════════ TOC -->
<nav class="toc">
<h2>Contents</h2>
<ol>
<li><a href="#what-is-typography">What Is Typography?</a> <span class="sub">— and why it makes or breaks your design</span></li>
<li><a href="#typeface-vs-font">Typeface vs. Font</a> <span class="sub">— the difference nobody explains clearly</span></li>
<li><a href="#font-categories">The 4 Font Categories</a> <span class="sub">— Serif, Sans-Serif, Script, Decorative</span></li>
<li><a href="#font-rules">The Golden Rule: Less Is More</a> <span class="sub">— why fewer fonts = more professional</span></li>
<li><a href="#hierarchy">Hierarchy & Scale</a> <span class="sub">— H1, H2, body copy, captions</span></li>
<li><a href="#kerning">Kerning</a> <span class="sub">— the space between individual letters</span></li>
<li><a href="#tracking">Tracking & Leading</a> <span class="sub">— letter-spacing and line-height</span></li>
<li><a href="#alignment">Alignment</a> <span class="sub">— left, center, right, justified</span></li>
<li><a href="#font-pairing">Font Pairing</a> <span class="sub">— creating contrast that works</span></li>
<li><a href="#otf">OpenType Fonts (OTF vs TTF)</a> <span class="sub">— alternate characters & ligatures</span></li>
<li><a href="#branding">Typography in Branding</a> <span class="sub">— applying it all to real projects</span></li>
<li><a href="#resources">Tools & Resources</a> <span class="sub">— websites, games, font libraries</span></li>
</ol>
</nav>
<main class="article">
<!-- ══════════════════════════════════ SECTION 1 -->
<section class="section" id="what-is-typography">
<span class="section-number">Section 01</span>
<h2>What Is Typography — And Why Should You Care?</h2>
<p>Typography is the <strong>art of using text in design</strong>. Not just picking a font and pasting it in — but making deliberate decisions about which typeface to use, how big to make it, how much space to put around it, and how to arrange it so that your audience can read it effortlessly and feel something.</p>
<div class="callout">
"Typefaces are the clothes of words, and like fine tailored suits, add detail, composition and interest."
<cite>— Classic design principle, often attributed to typography educators</cite>
</div>
<p>Think about it this way. Imagine someone incredibly well-dressed — sharp suit, clean presentation — but the moment they speak, their delivery is flat, confusing, or off-putting. The whole impression collapses. Your design works the same way. You can have beautiful colors, clever layout, amazing imagery — but if the typography is wrong, <strong>the entire design fails</strong>.</p>
<p>More than 90% of online information is in text form. Typography is not decoration. It is the primary medium through which your audience consumes your message.</p>
<figure style="margin:32px 0;">
<svg viewBox="0 0 800 340" xmlns="http://www.w3.org/2000/svg" style="width:100%;border-radius:8px;display:block;" aria-label="Good vs bad typography comparison">
<!-- Background -->
<rect width="800" height="340" fill="#f9f7f4" rx="8"/>
<!-- Divider -->
<line x1="400" y1="0" x2="400" y2="340" stroke="#e2ddd8" stroke-width="2"/>
<!-- Labels -->
<rect x="20" y="14" width="140" height="28" rx="4" fill="#c8502a"/>
<text x="90" y="33" font-family="Arial" font-size="12" font-weight="700" fill="white" text-anchor="middle" letter-spacing="1">❌ BAD TYPOGRAPHY</text>
<rect x="420" y="14" width="140" height="28" rx="4" fill="#2a7a3b"/>
<text x="490" y="33" font-family="Arial" font-size="12" font-weight="700" fill="white" text-anchor="middle" letter-spacing="1">✅ GOOD TYPOGRAPHY</text>
<!-- BAD SIDE: chaotic fonts, random sizes -->
<text x="40" y="80" font-family="Georgia" font-size="28" font-weight="bold" fill="#0f0e0d">SUMMER SALE!</text>
<text x="40" y="110" font-family="Courier New" font-size="11" fill="#6b6560">Up to 50% OFF everything</text>
<text x="40" y="145" font-family="Arial" font-size="22" font-style="italic" fill="#c8502a" font-weight="bold">Shop Now</text>
<text x="40" y="175" font-family="Georgia" font-size="9" fill="#333">We have great deals for you today only limited time</text>
<text x="40" y="200" font-family="Courier" font-size="16" fill="#555" font-weight="bold">FREE SHIPPING</text>
<text x="40" y="228" font-family="Arial" font-size="13" font-style="italic" fill="#c8502a">on orders over $50</text>
<text x="40" y="260" font-family="Georgia" font-size="7" fill="#999">*Offer ends Sunday. Cannot be combined with other offers. See store for details.</text>
<!-- annotation arrows bad side -->
<text x="200" y="90" font-family="Arial" font-size="10" fill="#c8502a">← 5 different fonts</text>
<text x="200" y="155" font-family="Arial" font-size="10" fill="#c8502a">← Random sizes</text>
<text x="200" y="210" font-family="Arial" font-size="10" fill="#c8502a">← No hierarchy</text>
<!-- GOOD SIDE: clean, 1 typeface, clear hierarchy -->
<text x="430" y="75" font-family="Arial" font-size="30" font-weight="900" fill="#0f0e0d" letter-spacing="-1">Summer Sale</text>
<text x="430" y="100" font-family="Arial" font-size="13" fill="#6b6560" letter-spacing="2">UP TO 50% OFF</text>
<line x1="430" y1="112" x2="620" y2="112" stroke="#e2ddd8" stroke-width="1"/>
<text x="430" y="140" font-family="Arial" font-size="15" fill="#333" font-weight="400">Free shipping on orders over $50.</text>
<text x="430" y="162" font-family="Arial" font-size="15" fill="#333">Offer ends Sunday.</text>
<rect x="430" y="185" width="120" height="36" rx="4" fill="#0f0e0d"/>
<text x="490" y="208" font-family="Arial" font-size="13" font-weight="700" fill="white" text-anchor="middle">Shop Now →</text>
<text x="430" y="255" font-family="Arial" font-size="10" fill="#aaa">*Cannot be combined with other offers. See store for details.</text>
<!-- annotation good side -->
<text x="570" y="78" font-family="Arial" font-size="10" fill="#2a7a3b">1 typeface ✓</text>
<text x="570" y="101" font-family="Arial" font-size="10" fill="#2a7a3b">Clear labels ✓</text>
<text x="570" y="143" font-family="Arial" font-size="10" fill="#2a7a3b">Readable body ✓</text>
<!-- Caption -->
<rect x="0" y="300" width="800" height="40" fill="#f2ede6" rx="0"/>
<text x="400" y="325" font-family="Arial" font-size="12" fill="#6b6560" text-anchor="middle">Same content — the only difference is typography. Bad: 5+ fonts, random sizes, no hierarchy. Good: 1 typeface, clear scale, intentional layout.</text>
</svg>
<figcaption style="font-size:12px;color:#6b6560;margin-top:8px;text-align:center;">Good vs. Bad Typography — same content, completely different impact</figcaption>
</figure>
<h3>What Good Typography Actually Does</h3>
<p>When executed well, typography becomes <em>invisible</em> — readers absorb your content without ever consciously thinking about how it looks. That is the highest compliment. Typography should serve the content, never overshadow it. Specifically, good typography:</p>
<ul class="rules-list">
<li><strong>Makes your content readable</strong><span>People can scan and absorb information quickly without straining their eyes.</span></li>
<li><strong>Establishes hierarchy</strong><span>Readers know instinctively what to read first, second, and third.</span></li>
<li><strong>Sets tone and personality</strong><span>A serif font feels classic and trustworthy; a bold geometric sans feels modern and confident.</span></li>
<li><strong>Builds brand recognition</strong><span>Think of Vogue's bold Didot, or the New York Times' classic masthead — you recognize the brand before reading a word.</span></li>
<li><strong>Guides action</strong><span>Eye-tracking studies show well-structured type hierarchy boosts content scanability by 47% and speeds up task completion by 22%.</span></li>
</ul>
</section>
<!-- ══════════════════════════════════ SECTION 2 -->
<section class="section" id="typeface-vs-font">
<span class="section-number">Section 02</span>
<h2>Typeface vs. Font — The Difference Nobody Explains Clearly</h2>
<p>These two terms get mixed up constantly — even by professionals. Here is the clean distinction:</p>
<div class="compare-grid">
<div class="compare-card">
<h4>Typeface</h4>
<p>The <strong>design family</strong>. The overall visual style of a set of characters. Think of it like a clothing brand. <br><br>Examples: <em>Helvetica, Futura, Garamond, Times New Roman</em></p>
</div>
<div class="compare-card">
<h4>Font</h4>
<p>A <strong>specific file</strong> within that family — a particular weight and style combination. Think of it like an individual garment in that brand. <br><br>Examples: <em>Helvetica Bold Italic, Futura Light, Garamond Regular</em></p>
</div>
</div>
<p>So when you say "I'm using Helvetica," you're talking about the <strong>typeface</strong>. When you say "I set the heading in Helvetica Bold at 48px," you're describing a specific <strong>font</strong>.</p>
<div class="def-box">
<div class="def-term">Font Family / Typeface Family</div>
<p>A collection of fonts that share the same design DNA. For example, the <em>Futura</em> family includes Futura Light, Futura Regular, Futura Bold, Futura Extra Bold, Futura Condensed Bold, and more. All of these are individual fonts. Together they form the Futura typeface (family).</p>
</div>
<p>Why does this matter practically? Because when you want to <strong>add emphasis</strong> in your design without introducing a second typeface, you use different fonts <em>from the same family</em> — e.g., pairing Futura Bold for the heading with Futura Light for the body. More on this in the Font Rules and Pairing sections.</p>
<figure style="margin:32px 0;">
<svg viewBox="0 0 800 280" xmlns="http://www.w3.org/2000/svg" style="width:100%;border-radius:8px;display:block;" aria-label="Font family weight chart">
<rect width="800" height="280" fill="#0f0e0d" rx="8"/>
<text x="40" y="40" font-family="Arial" font-size="11" fill="#c8502a" letter-spacing="3" font-weight="700">TYPEFACE: FUTURA (EXAMPLE)</text>
<!-- weight rows -->
<text x="40" y="80" font-family="Arial" font-size="28" font-weight="100" fill="rgba(249,247,244,0.5)">Aa</text>
<text x="120" y="80" font-family="Arial" font-size="20" fill="rgba(249,247,244,0.5)" font-weight="300">Futura Thin</text>
<text x="500" y="80" font-family="Arial" font-size="11" fill="#6b6560" text-anchor="end">Weight: 100 — Decorative accents, whisper-quiet text</text>
<text x="40" y="120" font-family="Arial" font-size="28" font-weight="300" fill="rgba(249,247,244,0.65)">Aa</text>
<text x="120" y="120" font-family="Arial" font-size="20" fill="rgba(249,247,244,0.65)" font-weight="300">Futura Light</text>
<text x="500" y="120" font-family="Arial" font-size="11" fill="#6b6560" text-anchor="end">Weight: 300 — Captions, labels, supporting text</text>
<text x="40" y="160" font-family="Arial" font-size="28" font-weight="400" fill="rgba(249,247,244,0.85)">Aa</text>
<text x="120" y="160" font-family="Arial" font-size="20" fill="rgba(249,247,244,0.85)">Futura Regular</text>
<text x="500" y="160" font-family="Arial" font-size="11" fill="#c8502a" text-anchor="end">Weight: 400 — ★ Body text, most readable</text>
<text x="40" y="200" font-family="Arial" font-size="28" font-weight="700" fill="#f9f7f4">Aa</text>
<text x="120" y="200" font-family="Arial" font-size="20" fill="#f9f7f4" font-weight="700">Futura Bold</text>
<text x="500" y="200" font-family="Arial" font-size="11" fill="#c8502a" text-anchor="end">Weight: 700 — ★ Sub-headings, emphasis</text>
<text x="40" y="242" font-family="Arial" font-size="28" font-weight="900" fill="white">Aa</text>
<text x="120" y="242" font-family="Arial" font-size="20" fill="white" font-weight="900">Futura Black</text>
<text x="500" y="242" font-family="Arial" font-size="11" fill="#c8502a" text-anchor="end">Weight: 900 — ★ Main headlines, logos</text>
<!-- divider lines -->
<line x1="40" y1="90" x2="760" y2="90" stroke="rgba(255,255,255,0.05)" stroke-width="1"/>
<line x1="40" y1="130" x2="760" y2="130" stroke="rgba(255,255,255,0.05)" stroke-width="1"/>
<line x1="40" y1="170" x2="760" y2="170" stroke="rgba(255,255,255,0.05)" stroke-width="1"/>
<line x1="40" y1="210" x2="760" y2="210" stroke="rgba(255,255,255,0.05)" stroke-width="1"/>
<!-- label -->
<text x="600" y="40" font-family="Arial" font-size="11" fill="#6b6560" text-anchor="end">These are all ONE typeface — "Futura" — just different fonts within it</text>
</svg>
<figcaption style="font-size:12px;color:#6b6560;margin-top:8px;text-align:center;">One typeface (Futura), five fonts. Typeface = the family. Font = the specific weight + style file.</figcaption>
</figure>
</section>
<!-- ══════════════════════════════════ SECTION 3 -->
<section class="section" id="font-categories">
<span class="section-number">Section 03</span>
<h2>The 4 Font Categories — Know These Cold</h2>
<p>Every font in the world falls into one of four broad categories. Understanding these is the foundation of all font selection and pairing decisions.</p>
<!-- SERIF -->
<h3>1. Serif</h3>
<div class="font-demo-row">
<div class="font-sample serif">Serif</div>
<div class="font-meta">
<strong>Has decorative "feet" (serifs) at the ends of strokes</strong>
<p>A student once described serif fonts as "the ones that look like they're wearing shoes." That's exactly right. Those small horizontal strokes at the ends of letters are called serifs.</p>
</div>
</div>
<figure style="margin:32px 0;">
<svg viewBox="0 0 800 380" xmlns="http://www.w3.org/2000/svg" style="width:100%;border-radius:8px;display:block;" aria-label="Serif font anatomy diagram">
<rect width="800" height="380" fill="#fff" rx="8" stroke="#e2ddd8" stroke-width="1"/>
<text x="400" y="30" font-family="Arial" font-size="11" fill="#c8502a" letter-spacing="3" font-weight="700" text-anchor="middle">ANATOMY OF A SERIF LETTERFORM</text>
<!-- The large letter "h" with serifs drawn as paths -->
<!-- Main letter body drawn as SVG paths to show anatomy -->
<!-- Baseline -->
<line x1="150" y1="310" x2="650" y2="310" stroke="#e2ddd8" stroke-width="1.5" stroke-dasharray="6,4"/>
<text x="660" y="314" font-family="Arial" font-size="11" fill="#aaa">Baseline</text>
<!-- Cap height line -->
<line x1="150" y1="90" x2="650" y2="90" stroke="#e2ddd8" stroke-width="1.5" stroke-dasharray="6,4"/>
<text x="660" y="94" font-family="Arial" font-size="11" fill="#aaa">Cap height</text>
<!-- x-height line -->
<line x1="150" y1="200" x2="650" y2="200" stroke="#e2ddd8" stroke-width="1.5" stroke-dasharray="6,4"/>
<text x="660" y="204" font-family="Arial" font-size="11" fill="#aaa">X-height</text>
<!-- Descender line -->
<line x1="150" y1="350" x2="650" y2="350" stroke="#e2ddd8" stroke-width="1.5" stroke-dasharray="6,4"/>
<text x="660" y="354" font-family="Arial" font-size="11" fill="#aaa">Descender</text>
<!-- Ascender line -->
<line x1="150" y1="55" x2="650" y2="55" stroke="#e2ddd8" stroke-width="1.5" stroke-dasharray="6,4"/>
<text x="660" y="59" font-family="Arial" font-size="11" fill="#aaa">Ascender</text>
<!-- Draw letter "H" as a bold serif character using rectangles + decorations -->
<!-- Left stem -->
<rect x="220" y="90" width="30" height="220" fill="#0f0e0d"/>
<!-- Right stem -->
<rect x="380" y="90" width="30" height="220" fill="#0f0e0d"/>
<!-- Crossbar -->
<rect x="220" y="185" width="190" height="26" fill="#0f0e0d"/>
<!-- Top serifs left stem -->
<rect x="200" y="85" width="70" height="12" rx="2" fill="#0f0e0d"/>
<!-- Bottom serifs left stem -->
<rect x="200" y="298" width="70" height="12" rx="2" fill="#0f0e0d"/>
<!-- Top serifs right stem -->
<rect x="360" y="85" width="70" height="12" rx="2" fill="#0f0e0d"/>
<!-- Bottom serifs right stem -->
<rect x="360" y="298" width="70" height="12" rx="2" fill="#0f0e0d"/>
<!-- Annotation: Serif (bottom left) -->
<line x1="235" y1="310" x2="180" y2="340" stroke="#c8502a" stroke-width="1.5"/>
<text x="100" y="345" font-family="Arial" font-size="12" fill="#c8502a" font-weight="700">Serif</text>
<text x="100" y="360" font-family="Arial" font-size="10" fill="#6b6560">(the "foot" stroke)</text>
<!-- Annotation: Stem -->
<line x1="220" y1="180" x2="160" y2="175" stroke="#2563eb" stroke-width="1.5"/>
<text x="80" y="172" font-family="Arial" font-size="12" fill="#2563eb" font-weight="700">Stem</text>
<text x="80" y="186" font-family="Arial" font-size="10" fill="#6b6560">(main vertical stroke)</text>
<!-- Annotation: Crossbar -->
<line x1="320" y1="198" x2="320" y2="160" stroke="#2a7a3b" stroke-width="1.5"/>
<text x="270" y="155" font-family="Arial" font-size="12" fill="#2a7a3b" font-weight="700">Crossbar</text>
<!-- Annotation: Cap Height -->
<line x1="250" y1="90" x2="250" y2="55" stroke="#888" stroke-width="1" stroke-dasharray="3,3"/>
<text x="470" y="75" font-family="Arial" font-size="11" fill="#888">← Cap height = top of capital letters</text>
<!-- Annotation: Serif top right -->
<line x1="395" y1="92" x2="460" y2="65" stroke="#c8502a" stroke-width="1.5"/>
<text x="462" y="62" font-family="Arial" font-size="12" fill="#c8502a" font-weight="700">Serif</text>
<!-- Serif indicator box -->
<rect x="360" y="84" width="72" height="14" fill="none" stroke="#c8502a" stroke-width="2" stroke-dasharray="3,2"/>
<!-- Bottom caption -->
<rect x="0" y="370" width="800" height="10" fill="#f2ede6" rx="0"/>
</svg>
<figcaption style="font-size:12px;color:#6b6560;margin-top:8px;text-align:center;">Anatomy of a serif letterform — the horizontal strokes at the ends of each stem are the serifs. Remove them and you have a sans-serif.</figcaption>
</figure>
<p><strong>Best used for:</strong></p>
<ul class="rules-list">
<li><strong>Print media — newspapers, books, long-form text</strong><span>Serifs guide the eye along a line of text in print. At small sizes in print, they actually reduce eye fatigue.</span></li>
<li><strong>Classic, vintage, and editorial designs</strong><span>If you want your design to feel authoritative, established, or timeless — think law firms, luxury brands, newspapers — serif is your friend.</span></li>
<li><strong>Long body copy in printed material</strong><span>Magazines like Vogue, The Economist, and Harper's Bazaar use serif body text for a reason.</span></li>
</ul>
<div class="highlight-box">
<h3>⚠️ Important: Avoid Serifs for On-Screen Body Text</h3>
<p>Serifs look sharp in print because printer resolution is very high. On screens, especially at smaller sizes, those tiny feet can look blurry and cause eye strain. For websites, apps, and digital interfaces — use Sans-Serif for body text.</p>
</div>
<p>Popular serif typefaces: <em>Times New Roman, Garamond, Georgia, Playfair Display, Merriweather, Baskerville, Didot</em></p>
<!-- SANS SERIF -->
<h3>2. Sans-Serif</h3>
<div class="font-demo-row">
<div class="font-sample sans">Sans</div>
<div class="font-meta">
<strong>"Sans" means without — no decorative feet</strong>
<p>Clean, modern, and minimal. No serifs at all. The strokes have uniform or near-uniform thickness, giving these fonts a geometric, structured look.</p>
</div>
</div>
<p><strong>Best used for:</strong></p>
<ul class="rules-list">
<li><strong>Digital interfaces — websites, apps, mobile screens</strong><span>Sans-serif fonts are optimized for screen rendering. They stay crisp and legible at any size.</span></li>
<li><strong>Modern and minimal branding</strong><span>Think Google (Roboto), Apple (SF Pro), Airbnb (Cereal) — all custom sans-serif faces.</span></li>
<li><strong>UI elements — buttons, labels, navigation</strong><span>Anywhere you need clarity and speed, sans-serif wins.</span></li>
</ul>
<p>Popular sans-serif typefaces: <em>Helvetica, Futura, Inter, Roboto, Open Sans, Montserrat, DM Sans, Neue Haas Grotesk</em></p>
<figure style="margin:32px 0;">
<svg viewBox="0 0 800 260" xmlns="http://www.w3.org/2000/svg" style="width:100%;border-radius:8px;display:block;" aria-label="Serif vs sans-serif comparison">
<rect width="800" height="260" fill="#fff" rx="8" stroke="#e2ddd8" stroke-width="1"/>
<!-- Divider -->
<line x1="400" y1="0" x2="400" y2="260" stroke="#e2ddd8" stroke-width="1.5"/>
<!-- Labels -->
<text x="200" y="30" font-family="Arial" font-size="11" fill="#6b6560" letter-spacing="2" text-anchor="middle" font-weight="700">SERIF</text>
<text x="600" y="30" font-family="Arial" font-size="11" fill="#6b6560" letter-spacing="2" text-anchor="middle" font-weight="700">SANS-SERIF</text>
<!-- Big serif word -->
<text x="200" y="130" font-family="Georgia, serif" font-size="72" font-weight="bold" fill="#0f0e0d" text-anchor="middle">Rg</text>
<!-- Big sans-serif word -->
<text x="600" y="130" font-family="Arial, sans-serif" font-size="72" font-weight="bold" fill="#0f0e0d" text-anchor="middle">Rg</text>
<!-- Annotation serif: callout arrows to serifs on R -->
<circle cx="145" cy="155" r="18" fill="none" stroke="#c8502a" stroke-width="2" stroke-dasharray="4,3"/>
<text x="60" y="175" font-family="Arial" font-size="11" fill="#c8502a">serifs here ↗</text>
<!-- Annotation sans: clean stroke ending -->
<circle cx="558" cy="70" r="18" fill="none" stroke="#2a7a3b" stroke-width="2" stroke-dasharray="4,3"/>
<text x="472" y="60" font-family="Arial" font-size="11" fill="#2a7a3b">no serifs ↗</text>
<!-- Descriptors serif -->
<text x="200" y="170" font-family="Georgia,serif" font-size="13" fill="#6b6560" text-anchor="middle">Classic · Warm · Editorial</text>
<text x="200" y="190" font-family="Arial" font-size="11" fill="#aaa" text-anchor="middle">Print, long-form, luxury</text>
<!-- Descriptors sans -->
<text x="600" y="170" font-family="Arial,sans-serif" font-size="13" fill="#6b6560" text-anchor="middle">Modern · Clean · Digital</text>
<text x="600" y="190" font-family="Arial" font-size="11" fill="#aaa" text-anchor="middle">Screens, UI, apps, branding</text>
<!-- Examples -->
<text x="200" y="222" font-family="Arial" font-size="11" fill="#aaa" text-anchor="middle">Georgia · Garamond · Times New Roman</text>
<text x="600" y="222" font-family="Arial" font-size="11" fill="#aaa" text-anchor="middle">Helvetica · Inter · Futura · Montserrat</text>
<!-- Bottom bar -->
<rect x="0" y="238" width="800" height="22" fill="#f2ede6" rx="0"/>
<text x="400" y="253" font-family="Arial" font-size="11" fill="#6b6560" text-anchor="middle">The only structural difference: serifs have small strokes (feet) at letter endings. Sans-serif do not.</text>
</svg>
<figcaption style="font-size:12px;color:#6b6560;margin-top:8px;text-align:center;">Serif vs. Sans-Serif — same letterforms, different endings. The circled areas show where serifs appear and where the sans-serif has a clean terminal instead.</figcaption>
</figure>
<!-- SCRIPT -->
<h3>3. Script</h3>
<div class="font-demo-row">
<div class="font-sample script">Script</div>
<div class="font-meta">
<strong>Mimics handwriting and calligraphy</strong>
<p>Script fonts have connected or flowing letterforms inspired by cursive handwriting. They range from formal calligraphic scripts to casual, brush-painted styles.</p>
</div>
</div>
<p><strong>Best used for:</strong></p>
<ul class="rules-list">
<li><strong>Headlines and titles only</strong><span>Script fonts are beautiful for a name, a single word, a logo mark — but never write full paragraphs in them. Readability drops sharply in long passages.</span></li>
<li><strong>Invitations, wedding cards, personal branding</strong><span>Anywhere you want warmth, elegance, or a human touch.</span></li>
<li><strong>Accent text</strong><span>One script word among sans-serif text creates a beautiful stylistic contrast.</span></li>
</ul>
<div class="tip">
<span class="tip-icon">💡</span>
<span class="tip-text"><strong>Rule to memorize:</strong> Never write body copy or long paragraphs in a script font. Readability collapses. Script = headings, signatures, accents only.</span>
</div>
<!-- DECORATIVE -->
<h3>4. Decorative / Display</h3>
<p>Decorative fonts are designed to <strong>attract attention</strong>, not maximize readability. They're expressive, stylized, and often tied to a specific era, mood, or theme — horror fonts, retro diner fonts, Art Deco fonts, etc.</p>
<p><strong>Best used for:</strong></p>
<ul class="rules-list">
<li><strong>Titles, posters, event graphics, logos</strong><span>One strong word in a decorative font can define the entire mood of a design.</span></li>
<li><strong>Thematic designs where the font IS the message</strong><span>A Halloween poster, a 1950s diner menu, a grunge concert flyer.</span></li>
</ul>
<div class="highlight-box">
<h3>⚠️ Never use decorative fonts for body text</h3>
<p>The whole point of decorative fonts is that they are not optimized for long reading. They exist for impact at large sizes. More than a few words becomes illegible and painful to read.</p>
</div>
<!-- SUMMARY TABLE -->
<h3>Quick Reference: When to Use Each Category</h3>
<table class="data-table">
<thead>
<tr>
<th>Category</th>
<th>Feel / Personality</th>
<th>Best For</th>
<th>Avoid For</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Serif</strong></td>
<td>Classic, trustworthy, editorial</td>
<td>Print, long body text, luxury brands</td>
<td>Small on-screen text, modern tech UI</td>
</tr>
<tr>
<td><strong>Sans-Serif</strong></td>
<td>Modern, clean, neutral</td>
<td>Digital UI, body text on screens, branding</td>
<td>When you need warmth or formality</td>
</tr>
<tr>
<td><strong>Script</strong></td>
<td>Elegant, personal, flowing</td>
<td>Headings, logos, invitations</td>
<td>Body copy, long passages, small sizes</td>
</tr>
<tr>
<td><strong>Decorative</strong></td>
<td>Expressive, themed, bold</td>
<td>Posters, event titles, display uses</td>
<td>Anything more than a few words</td>
</tr>
</tbody>
</table>
</section>
<!-- ══════════════════════════════════ SECTION 4 -->
<section class="section" id="font-rules">
<span class="section-number">Section 04</span>
<h2>The Golden Rule of Font Usage: Less Is More</h2>
<p>This is the mistake every beginner makes. They download 50 beautiful fonts, get excited, and use 6 of them in a single design. The result looks like a ransom note — chaotic, amateur, exhausting to look at.</p>
<div class="callout">
"You have hundreds of millions of fonts available — that doesn't mean you should use them all. The more fonts you use, the more you look like a beginner."
</div>
<p>Think of fonts like spices in cooking. You can own 40 different spices in your kitchen. But if you throw all 40 into one dish, it's disgusting. A skilled chef uses 3-4 spices, chosen deliberately, to create something harmonious. <strong>The same is true in typography.</strong></p>
<figure style="margin:32px 0;">
<svg viewBox="0 0 800 320" xmlns="http://www.w3.org/2000/svg" style="width:100%;border-radius:8px;display:block;" aria-label="Too many fonts vs minimal clean design">
<rect width="800" height="320" fill="#f9f7f4" rx="8"/>
<line x1="400" y1="0" x2="400" y2="320" stroke="#e2ddd8" stroke-width="2"/>
<!-- Labels -->
<rect x="20" y="14" width="170" height="28" rx="4" fill="#c8502a"/>