CSS @font-faceã§ã«ã¹ã¿ã ã¿ã€ãã°ã©ãã£ã®å¯èœæ§ãæå€§éã«åŒãåºããŸãããã©ã³ãã®èªã¿èŸŒã¿å¶åŸ¡ãããã©ãŒãã³ã¹æé©åãåœéçãªãŠãŒã¶ãŒãžã®äžè²«ããã¬ã³ããªã³ã°ã解説ã
CSS @font-face: ã°ããŒãã«ãªãŠã§ãäœéšã®ããã®ã«ã¹ã¿ã ãã©ã³ãèªã¿èŸŒã¿ã®ãã¹ã¿ãŒ
ãŠã§ããã¶ã€ã³ã®ãã€ãããã¯ãªç¶æ³ã«ãããŠãã¿ã€ãã°ã©ãã£ã¯ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãšãã©ã³ãã¢ã€ãã³ãã£ãã£ã圢æããäžã§éèŠãªåœ¹å²ãæãããŸããã«ã¹ã¿ã ãã©ã³ãã¯ãéåžžã«å€§ããªåµé çèªç±ãæäŸããäžæ¹ã§ãç¹ã«èªã¿èŸŒã¿ãšããã©ãŒãã³ã¹ã«é¢ããŠè€éãã䌎ããŸããCSS @font-faceã«ãŒã«ã¯ãã«ã¹ã¿ã ã¿ã€ãã°ã©ãã£ããŠã§ããµã€ãã«çµ±åããããã®åºç€ã§ããããããã®ãã©ã³ãã®ååŸãšé©ç𿹿³ã现ããå¶åŸ¡ã§ããŸãããã®å
æ¬çãªã¬ã€ãã§ã¯ã@font-face
ã®è€éããæ·±ãæãäžããèŠèŠçã«é
åçã§ãããã©ãŒãã³ã¹ãé«ããæ®éçã«ã¢ã¯ã»ã¹å¯èœãªãŠã§ãäœéšãäœæã§ããããã«ããŸãã
@font-faceã®ãã¯ãŒãçè§£ãã
@font-face
ãç»å Žããåã¯ããŠã§ããã¶ã€ããŒã¯ã·ã¹ãã ãã©ã³ãã®éãããã»ããã«å€§ããå¶éãããŠããããŠã§ãã®çŸåŠãå質åãããããšããããããŸããã@font-face
ã¯ãéçºè
ãã«ã¹ã¿ã ãã©ã³ããæå®ããŠãŠãŒã¶ãŒã®ãã©ãŠã¶ã§ããŠã³ããŒãããã³ã¬ã³ããªã³ã°ã§ããããã«ããããšã§ããããèŠããŸãããããã«ããããŠã§ããµã€ãã«ç¬èªã®ã¿ã€ãã°ã©ãã£ãã¯ãªè¡šçŸãå¯èœã«ãªãããã©ã³ãã®å·®å¥åãç¹å®ã®æ°åãã¡ãã»ãŒãžã®äŒéã«äžå¯æ¬ ã§ãã
@font-face
ã®åºæ¬çãªæ§æã¯éåžžã«ã·ã³ãã«ã§ãã
@font-face {
font-family: 'YourFontName';
src: url('path/to/your-font.woff2') format('woff2'),
url('path/to/your-font.woff') format('woff');
font-weight: normal;
font-style: normal;
}
ãããã®éèŠãªããããã£ãåè§£ããŠã¿ãŸãããã
font-family
: ããã¯ãCSSã¹ã¿ã€ã«ã·ãŒãã§ã«ã¹ã¿ã ãã©ã³ããåç §ããããã«äœ¿çšããååã§ãã奜ããªååãéžæã§ããŸãããããããããååã«ããããšããå§ãããŸããsrc
: ãã®ããããã£ã¯ã@font-face
ã®äžæ žã§ãããã©ã³ããã¡ã€ã«ã®å Žæãæå®ããŸããè€æ°ã®URLãæå®ã§ãããããããç°ãªããã©ã³ã圢åŒãæããŸãããã©ãŠã¶ã¯ããµããŒããããŠããæåã®åœ¢åŒãããŠã³ããŒãããããšããŸããurl()
: ãã©ã³ããã¡ã€ã«ãžã®ãã¹ãæå®ããŸããããã¯ãçžå¯ŸURLãŸãã¯çµ¶å¯ŸURLã«ããããšãã§ããŸããformat()
: ãã®éèŠãªèšè¿°åã¯ããã©ãŠã¶ããã©ã³ã圢åŒãèå¥ããã®ã«åœ¹ç«ã¡ããµããŒããããŠããªã圢åŒã®ããŠã³ããŒããã¹ãããã§ããããã«ããŸããäžè¬çãªåœ¢åŒã«ã¯ãwoff2
ãwoff
ãtruetype
(.ttf
)ãopentype
(.otf
)ãembedded-opentype
(å€ãInternet ExplorerããŒãžã§ã³çšã®.eot
) ãªã©ããããŸããfont-weight
: ãã©ã³ãã®å€ªã (äŸ:normal
ãbold
ã100
-900
) ãå®çŸ©ããŸããéåžžãåããã©ã³ããã¡ããªãŒã®ç°ãªã倪ãã«å¯ŸããŠãåå¥ã®@font-face
ã«ãŒã«ãå®çŸ©ããŸããfont-style
: ãã©ã³ãã®ã¹ã¿ã€ã« (äŸ:normal
ãitalic
ãoblique
) ãæå®ããŸãã倪ããšåæ§ã«ãç°ãªãã¹ã¿ã€ã«ã«ã¯éåžžãåå¥ã®@font-face
宣èšãå¿ èŠã§ãã
ã°ããŒãã«ãªãŒãã®ããã®ãã©ã³ãèªã¿èŸŒã¿ã®æé©å
ã°ããŒãã«ãªèŠèŽè ã«ãšã£ãŠããã©ã³ãã®èªã¿èŸŒã¿ããã©ãŒãã³ã¹ã¯æãéèŠã§ããããŸããŸãªå°ççãªå Žæãããµã€ãã«ã¢ã¯ã»ã¹ãããŠãŒã¶ãŒã¯ãã€ã³ã¿ãŒãããã®é床ãšåž¯åå¹ ã®å¶éãç°ãªãå ŽåããããŸããéå¹ççãªãã©ã³ãèªã¿èŸŒã¿ã¯ãããŒãžã®è¡šç€ºé床ã®äœäžããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã®äœäžãããã³æœåšçãªèšªåè ã®æå€±ã«ã€ãªããå¯èœæ§ããããŸããéèŠãªã®ã¯ãé©åãªãã©ã³ã圢åŒãå¹ççã«æäŸããããšã§ãã
ãã©ã³ã圢åŒãšãã©ãŠã¶ã®ãµããŒãã«ã€ããŠ
ææ°ã®ãã©ãŠã¶ã¯ã.woff2
圢åŒãš.woff
圢åŒãåªããæ¹æ³ã§ãµããŒãããŠããŸãããããã®åœ¢åŒã¯é«åºŠã«å§çž®ããå¹ççã§ããããããŠã§ãã¿ã€ãã°ã©ãã£ã«æé©ãªéžæè¢ãšãªã£ãŠããŸãã
- WOFF2 (Web Open Font Format 2): ããã¯ææ°ãã€æãå¹ççãªåœ¢åŒã§ãããBrotliå§çž®ã䜿çšããŠãããããåªããå§çž® (WOFFãããæå€§45%åäž) ãæäŸããŸããChromeãFirefoxãSafariãEdgeãå«ããã¹ãŠã®ææ°ãã©ãŠã¶ã§ãµããŒããããŠããŸãã
- WOFF (Web Open Font Format): WOFF2ã®å身ã§ããWOFFã¯ãè¯å¥œãªå§çž®ãæäŸãããã©ãŠã¶éã§åºããµããŒããããŠããŸããWOFF2ãå©çšã§ããªãå Žåã®ä¿¡é Œã§ãããã©ãŒã«ããã¯ã§ãã
- TrueType Font (TTF) / OpenType Font (OTF): ãããã¯ããŠã§ãã§äœ¿çšã§ããåŸæ¥ã®ãã¹ã¯ããããã©ã³ã圢åŒã§ãããã ããäžè¬çã«WOFF/WOFF2ããããŠã§ãé ä¿¡çšã«æé©åãããŠãããããã¡ã€ã«ãµã€ãºã倧ãããªã£ãŠããŸãã
- Embedded OpenType (EOT): ãã®åœ¢åŒã¯ãäž»ã«IE9ããåã®Internet ExplorerããŒãžã§ã³ã§äœ¿çšãããŠããŸãããçŸåšã¯ã»ãšãã©å»æ¢ãããŠããŸãããéåžžã«åŸæ¹äºææ§ãå¿ èŠãªå Žåã«å«ããããšãã§ããŸãããææ°ã®éçºã§ã¯çç¥ãããããšããããããŸãã
- SVG Fonts: å€ãããŒãžã§ã³ã®Safariã¯SVGãã©ã³ãããµããŒãããŠããŸãããEOTãšåæ§ã«ããããã¯ä»æ¥ã§ã¯ã»ãšãã©äœ¿çšãããŠããŸããã
å
ç¢ãª@font-face
宣èšã«ã¯ãæãå¹ççãªåœ¢åŒãåªå
ãã圢åŒã®ã«ã¹ã±ãŒããå«ãŸããŠããããšããããããŸãã
@font-face {
font-family: 'MyAwesomeFont';
src: url('/fonts/MyAwesomeFont.woff2') format('woff2'),
url('/fonts/MyAwesomeFont.woff') format('woff');
}
ãã®èšå®ã«ããããã©ãŠã¶ã¯æåã«MyAwesomeFont.woff2
ã®ããŠã³ããŒãã詊ã¿ãŸããWOFF2ããµããŒãããŠããªãå Žåã¯ãMyAwesomeFont.woff
ã®ããŠã³ããŒãã«ãã©ãŒã«ããã¯ããŸãã
ããã©ãŒãã³ã¹ã®ããã®ãµãã»ããã£ã³ã°ã®æŽ»çš
åäžã®ãã©ã³ããã¡ã€ã« (ç¹ã«ãå€ãã®å€ªããšã¹ã¿ã€ã«ãæã€ãã¡ã€ã«) ã¯ãéåžžã«å€§ãããªãå¯èœæ§ããããŸããã°ããŒãã«ãªèŠèŽè ãã¿ãŒã²ãããšãããŠã§ããµã€ãã®å Žåãæåã®ãµãã»ããã®ã¿ãå¿ èŠã«ãªãå ŽåããããŸããããšãã°ããŠã§ããµã€ããäž»ã«è±èªåã®ãŠãŒã¶ãŒã«ãµãŒãã¹ãæäŸããŠããå Žåãããªã«æåãäžåœèªã®æåã«å¯Ÿããåºç¯ãªãµããŒãã¯å¿ èŠãªãå¯èœæ§ããããŸããããã«ããããã©ã³ããã¡ã€ã«ã®ãµã€ãºãå€§å¹ ã«å¢å ããå¯èœæ§ããããŸãã
ãã©ã³ããµãã»ããã£ã³ã°ã¯ãç¹å®ã®ãŠãŒã¹ã±ãŒã¹ã«å¿ èŠãªæå (ã°ãªã) ãšæ©èœã®ã¿ãå«ããããå°ããªãã©ã³ããã¡ã€ã«ãäœæããããã»ã¹ã§ããå€ãã®ãã©ã³ããã¡ãŠã³ããªãšãªã³ã©ã€ã³ããŒã«ãããã©ã³ããµãã»ããã£ã³ã°æ©èœãæäŸããŠããŸããããšãã°ããã©ã³ã¹èªã®ãŠã§ããµã€ãã§åºæ¬çãªã©ãã³æåãšããã€ãã®ç¹å®ã®èšå·ã®ã¿ãå¿ èŠãªå Žåã¯ããããã®ã°ãªãã®ã¿ãå«ããµãã»ããåãããWOFF2ãã¡ã€ã«ãäœæã§ããŸãã
ãã¥ãŒã¹ãŠã§ããµã€ãã«èŠåºãã倪åã®ã¹ã¿ã€ãªãã·ã¥ãªãã©ã³ãã§è¡šç€ºããå¿
èŠããããæ¬æãé«èªã¿åãå¯èœãªæšæºãã©ã³ãã§è¡šç€ºããå¿
èŠãããã·ããªãªãæ€èšããŠãã ãããã¹ã¿ã€ãªãã·ã¥ãªãã©ã³ããèŠåºãã«å¿
èŠãªãšãã»ã³ã·ã£ã«æåã®ã¿ãå«ãããã«ãµãã»ããåããããšã«ãããããŠã³ããŒããµã€ãºã倧å¹
ã«åæžãããŸãã@font-face
ã«ãŒã«ãå®çŸ©ãããšãã¯ããµãã»ããåããããã©ã³ããã¡ã€ã«ãæãã ãã§ãã
@font-face {
font-family: 'HeadlineFont';
src: url('/fonts/HeadlineFont-subset.woff2') format('woff2');
font-weight: 700;
}
å®è¡å¯èœãªæŽå¯: å®éã«å¿ èŠãªæåã»ãããç¹å®ããŸããã¿ãŒã²ãããªãŒãã£ãšã³ã¹ãç¹å®ã®èšèªãåºæã®æå (äŸ: ã®ãªã·ã£èªãã¢ã©ãã¢èªãæ±ã¢ãžã¢ã®ã¹ã¯ãªãã) ã§äœ¿çšããå Žåã¯ããã©ã³ããã¡ã€ã«ããããããµããŒãããŠããããšã確èªããŠãã ãããéã«ããªãŒãã£ãšã³ã¹ãäž»ã«ã©ãã³æåã䜿çšããŠãããšç¢ºä¿¡ããŠããå Žåã¯ããµãã»ããã£ã³ã°ã調ã¹ãŠãã¡ã€ã«ãµã€ãºãåæžããŠãã ããã
ãã©ã³ã衚瀺æŠç¥: ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã®å¶åŸ¡
ã«ã¹ã¿ã ãã©ã³ããèªã¿èŸŒãŸããŠããå ŽåãããŒãžã®ããã¹ãããŸã ã¹ã¿ã€ã«èšå®ãããŠããªãæéããããŸããããã«ãããã¡ãã€ã广 (Flash of Invisible Text - FOIT) ãŸãã¯æ··ä¹±ããå€èг (Flash of Unstyled Text - FOUT) ãçºçããå¯èœæ§ããããŸããfont-display
CSSããããã£ã¯ããã®åäœãéèŠãªæ¹æ³ã§å¶åŸ¡ãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã«å€§ããªåœ±é¿ãäžããŸãã
font-display
ããããã£ã¯ãããã€ãã®å€ãåãå
¥ããŸãã
auto
: ãã©ãŠã¶ã®ããã©ã«ãã®åäœãããã¯ç°ãªãå ŽåããããŸãããéåžžã¯ã·ã¹ãã ãã©ã³ãã«ãã©ãŒã«ããã¯ããèªã¿èŸŒãŸãããã«ã¹ã¿ã ãã©ã³ãã«åãæ¿ãããŸããblock
: ãã©ãŠã¶ã¯ããã©ã³ãã衚瀺ãããªãçããããã¯æé (éåžžã¯3ç§) ãäœæããŸãããã®æç¹ã§ãã©ã³ããèªã¿èŸŒãŸããŠããªãå Žåããã©ãŠã¶ã¯ãã©ãŒã«ããã¯ããã¹ãã衚瀺ããŸãããã©ã³ããèªã¿èŸŒãŸãããšããããæ¿å ¥ãããŸããããã«ãããFOITãçºçããå¯èœæ§ããããŸããswap
: ãã©ãŠã¶ã¯ããã«ãã©ãŒã«ããã¯ããã¹ã (ã·ã¹ãã ãã©ã³ãã䜿çš) ã衚瀺ããèªã¿èŸŒãŸãããã«ã¹ã¿ã ãã©ã³ãã«åãæ¿ãããŸããããã¯ãããã¹ããããã«è¡šç€ºãããããããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã«å¯ŸããŠå¥œãŸããå ŽåããããããŸããfallback
: ãã€ããªããã¢ãããŒãããã©ãŠã¶ã¯ããã«ãã©ãŒã«ããã¯ããã¹ãã衚瀺ããã«ã¹ã¿ã ãã©ã³ãã®éåžžã«çãé衚瀺æé (äŸ: 100ms) ãäœæããŸããã«ã¹ã¿ã ãã©ã³ãããã®çãæéå ã«èªã¿èŸŒãŸããå Žåã¯ã衚瀺ãããŸãããã以å€ã®å Žåã¯ãã»ãã·ã§ã³ã®æ®ãã®éããã©ãŒã«ããã¯ãã©ã³ãã«ãšã©ãŸããŸããoptional
:fallback
ãšåæ§ã§ããããã©ãŠã¶ã¯ãã©ã³ãã®ãããã¯ãŒã¯ãªã¯ãšã¹ããè¡ããéåžžã«è¿ éã«èªã¿èŸŒãŸããå Žå (æåã®çãé衚瀺æéäž) ã®ã¿äœ¿çšããŸãããã®ãŠã£ã³ããŠãéããšããã©ãŠã¶ã¯ããŒãžã»ãã·ã§ã³å šäœã§ãã©ãŒã«ããã¯ãã©ã³ãã«ãšã©ãŸããã«ã¹ã¿ã ãã©ã³ãã®æœåšçãªåŸã®äœ¿çšã广çã«é ãããŸããããã¯ãããã©ãŒãã³ã¹ãæãéèŠãªéã¯ãªãã£ã«ã«ãã©ã³ãã«æé©ã§ãã
æ¥ç¶é床ã倧å¹
ã«ç°ãªãå¯èœæ§ãããã°ããŒãã«ãªèŠèŽè
ã«ãšã£ãŠãswap
ãŸãã¯fallback
ã¯ãå€ãã®å ŽåãæããŠãŒã¶ãŒãã¬ã³ããªãŒãªãªãã·ã§ã³ã§ããããã«ããããŠãŒã¶ãŒã¯ã³ã³ãã³ããããã«è¡šç€ºãããã©ã¹ãã¬ãŒã·ã§ã³ãé²ããŸãã
font-display
ãå®è£
ããã«ã¯ãããã@font-face
ã«ãŒã«ã«è¿œå ããŸãã
@font-face {
font-family: 'GlobalSans';
src: url('/fonts/GlobalSans.woff2') format('woff2');
font-display: swap;
}
äŸ: éè¡ã¢ããªã±ãŒã·ã§ã³ã®ãŠã§ããµã€ããæ³åããŠã¿ãŠãã ãããã€ã³ã¿ãŒããããä¿¡é Œã§ããªãå°åã§ã¯ã倧ããªãã©ã³ããã¡ã€ã«ã«ãã£ãŠåŒãèµ·ããããFOITã¯ããã°ã€ã³ãã¿ã³ãæ°ç§é衚瀺ã§ããªãããšãæå³ããå¯èœæ§ããããŸããfont-display: swap;
ã䜿çšãããšãã·ã¹ãã ãã©ã³ãã§ãã°ã€ã³ãã©ãŒã ãããã«è¡šç€ºããããã®åŸãã«ã¹ã¿ã ãã©ã³ãã£ã³ã°ãã©ã³ããèªã¿èŸŒãŸãã䜿ãããããç¶æãããŸãã
ããã©ãŒãã³ã¹åäžã®ããã®ãã©ã³ãã®ããªããŒã
èªã¿èŸŒã¿ããã»ã¹ãããã«æé©åããã«ã¯ãHTMLããã¥ã¡ã³ãã®<head>
ã§<link rel="preload">
ã¿ã°ã䜿çšã§ããŸããããã¯ããã©ãŠã¶ã«ãCSSã䜿çšããCSSãæ€åºããåã§ãã£ãŠããããŒãžèªã¿èŸŒã¿ããã»ã¹ã®æ©ã段éã§ãã©ã³ããã¡ã€ã«ããã§ããããããã«æç€ºããŸãã
åæãã¥ãŒããŒããŸãã¯ã¯ãªãã£ã«ã«ã³ã³ãã³ãã«äžå¯æ¬ ãªãã©ã³ãã®ã¿ãããªããŒãããããšãéèŠã§ããéå°ãªããªããŒãã¯ãä»ã®ãªãœãŒã¹ã«å¿ èŠãªåž¯åå¹ ãæ¶è²»ããããšã«ãããããã©ãŒãã³ã¹ã«æªåœ±é¿ãäžããå¯èœæ§ããããŸãã
ãããã®è¡ãHTMLã®<head>
ã»ã¯ã·ã§ã³ã«è¿œå ããŸãã
<link rel="preload" href="/fonts/MyAwesomeFont.woff2" as="font" type="font/woff2" crossorigin></link>
<link rel="preload" href="/fonts/MyAwesomeFont.woff" as="font" type="font/woff" crossorigin></link>
äž»èŠãªå±æ§:
href
: ãã©ã³ããã¡ã€ã«ãžã®ãã¹ãas="font"
: ãã©ãŠã¶ã«ããããã©ã³ããªãœãŒã¹ã§ããããšãäŒããŸããtype="font/woff2"
: MIMEã¿ã€ããæå®ãããã©ãŠã¶ãåªå é äœãä»ããã®ã«åœ¹ç«ã¡ãŸããcrossorigin
: ãã©ã³ããç°ãªããã¡ã€ã³ãŸãã¯CDNã§ãã¹ããããŠããå Žåã¯ãCORS (Cross-Origin Resource Sharing) ã«äžå¯æ¬ ã§ãããã©ã³ããåããªãªãžã³ã«ããå Žåã¯ãanonymous
ã«èšå®ãããçç¥ããå¿ èŠããããŸãã
ãã¹ããã©ã¯ãã£ã¹: é床ãšèŠèŠçãªãšã¯ã¹ããªãšã³ã¹ã®æé©ãªãã©ã³ã¹ãå®çŸããã«ã¯ã@font-face
ãfont-display: swap;
ããã³æŠç¥çãªããªããŒããšçµã¿åãããŸãã<link rel="preload">
ã䜿çšããŠæãéèŠãªãã©ã³ãããªã¢ã³ã (ããšãã°ããã©ã€ããªãã©ã³ãã®æšæºçãªå€ªã) ãããªããŒãããä»ã®ããªãšãŒã·ã§ã³ãŸãã¯ãã©ãŒã«ããã¯ãšããŠfont-display: swap;
ã䜿çšããŸãã
é«åºŠãª@font-faceãã¯ããã¯ãšèæ ®äºé
åºæ¬ãè¶ ããŠãããã€ãã®é«åºŠãªãã¯ããã¯ãšèæ ®äºé ã¯ãã«ã¹ã¿ã ãã©ã³ãã®å®è£ ãããã«æŽç·Žãããããšãã§ããŸãã
ãã©ã³ãããªãšãŒã·ã§ã³ãšããªã¢ãã«ãã©ã³ã
ããªã¢ãã«ãã©ã³ãã¯ãã¿ã€ãã°ã©ãã£ã®é©æ°çãªé²æ©ã§ããå倪ããšã¹ã¿ã€ã« (äŸ: æšæºã倪åãæäœ) ã«å¯ŸããŠè€æ°ã®ãã¡ã€ã«ãé åžãã代ããã«ãåäžã®ããªã¢ãã«ãã©ã³ããã¡ã€ã«ã§å¹ åºããã¶ã€ã³ããªãšãŒã·ã§ã³ãç¶²çŸ ã§ããŸããããã«ããããã¡ã€ã«ãµã€ãºãå€§å¹ ã«åæžãããã¿ã€ãã°ã©ãã£ãã¯ããããã£ãæè»ã«å¶åŸ¡ã§ããŸãã
ããªã¢ãã«ãã©ã³ãã䜿çšãããšããã©ã³ãã®å€ªããã¢ãã¡ãŒã·ã§ã³åãããããã®å Žã§å
åŠçãªãµã€ãºèšå®ã調æŽããããæåééãåçã«åŸ®èª¿æŽãããã§ããŸããããªã¢ãã«ãã©ã³ãã®@font-face
宣èšã¯äŒŒãŠããŸãããfont-weight
ãšfont-style
ã®ç¯å²ãæå®ãããããã©ã³ãããµããŒãããç¹å®ã®è»žã䜿çšãããããããšããããããŸãã
ããªã¢ãã«ãã©ã³ãã䜿çšããäŸ (ãã©ã³ãã倪ããšã€ã¿ãªãã¯è»žããµããŒãããŠãããšä»®å®):
@font-face {
font-family: 'VariableFont';
src: url('/fonts/VariableFont.woff2') format('woff2');
font-weight: 100 900; /* Defines the range of weights */
font-style: italic 0 italic 1; /* Defines italic range if applicable */
}
/* Applying different weights */
h1 {
font-family: 'VariableFont';
font-weight: 700;
}
p {
font-family: 'VariableFont';
font-weight: 450;
}
.italic-text {
font-family: 'VariableFont';
font-style: italic;
font-weight: 500;
}
ã°ããŒãã«ãªé¢é£æ§: ããªã¢ãã«ãã©ã³ãã¯éåžžã«å¹ççã§ããã垯åå¹ ãå¶çŽãããå¯èœæ§ã®ããåœéçãªãŠãŒã¶ãŒã«ãšã£ãŠçæ³çã§ãããŸããã¬ã¹ãã³ã·ããã¶ã€ã³ã®æè»æ§ãåäžããããŸããŸãªå°åã§äžè¬çãªããŸããŸãªç»é¢ãµã€ãºãããã€ã¹ã§ã®ã¿ã€ãã°ã©ãã£ã®åŸ®èª¿æŽãå¯èœã«ãªããŸãã
ãã©ã³ãã®ãã©ãŒã«ããã¯ãé©åã«åŠçãã
æåã®åªåã«ããããããããã©ã³ãã®èªã¿èŸŒã¿ã倱æããå¯èœæ§ããããŸããå¯èªæ§ãšäžè²«ããå€èгãç¶æããã«ã¯ãäžå©ãªç¶æ³ã§ãå ç¢ãªãã©ãŒã«ããã¯æŠç¥ãå®è£ ããããšãéèŠã§ãã
CSSã¯ããã©ã³ãã®æç¢ºãªéå±€ãå®çŸ©ããå¿ èŠããããŸããã«ã¹ã¿ã ãã©ã³ãããå§ãããã®ç¹æ§ã«éåžžã«äžèŽããäžè¬çãªãã©ã³ããã¡ããªãŒãç¶ããŸãã
body {
font-family: 'MyCustomFont', 'Helvetica Neue', Helvetica, Arial, sans-serif;
}
h1 {
font-family: 'MyHeadlineFont', Georgia, Times, 'Times New Roman', serif;
}
ã°ããŒãã«ãã©ãŒã«ããã¯ã®èæ ®äºé :
- èšèªåºæã®ãã©ãŒã«ããã¯: éåžžã«ã°ããŒãã«ãªãªãŒãã£ãšã³ã¹ãæã€ãŠã§ããµã€ãã®å Žåãå°åã«ãã£ãŠåªå ãããã·ã¹ãã ãã©ã³ããç°ãªãå¯èœæ§ãããããšãèæ ®ããŠãã ãããArialãTimes New Romanãªã©ã®äžè¬çãªãã©ãŒã«ããã¯ã¯åºãå©çšå¯èœã§ãããäžéšã®ã³ã³ããã¹ãã§ã¯ãç¹å®ã®å°åã§äžè¬çãªããã倿§ãªãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ãŸãã¯ã¢ãã€ã«ããã€ã¹ã«ååšããå¯èœæ§ãããããšãããã£ãŠãããã©ãŒã«ããã¯ãå«ããå¿ èŠãããå ŽåããããŸãããã ããç°¡çŽ åãšå¹ åºãäºææ§ãå®çŸããããã«ãæ®éçã«èªèãããŠããäžè¬çãªãã¡ããªã«ãšã©ãŸãããšããå€ãã®å Žåæãå®çšçãªã¢ãããŒãã§ãã
- æåã»ãã: ãã©ãŒã«ããã¯ãã©ã³ããã³ã³ãã³ãã«å¿ èŠãªæåã»ããããµããŒãããŠããããšã確èªããŠãã ããããã©ã€ããªãã©ã³ããå€èšèªãµã€ãçšã§ããå Žåããã©ãŒã«ããã¯ãçæ³çã«ã¯å¹ åºãæåãµããŒããæäŸããå¿ èŠããããŸãã
ããŒã«ã«ãã©ã³ãã®äœ¿çš (泚æããŠ)
@font-face
ã䜿çšãããšãsrc
ããããã£ã«ããŒã«ã«ãã©ã³ãåãæå®ã§ããŸãããã©ã³ãããŠãŒã¶ãŒã®ã·ã¹ãã ã«æ¢ã«ã€ã³ã¹ããŒã«ãããŠããå Žåããã©ãŠã¶ã¯ãŠã§ããã©ã³ããããŠã³ããŒããã代ããã«ããã䜿çšãã垯åå¹
ãç¯çŽã§ããŸãã
@font-face {
font-family: 'MySystemFont';
src: local('MySystemFontRegular'), /* Name as installed */
local('MySystemFont-Regular'),
url('/fonts/MySystemFont.woff2') format('woff2');
}
泚æç¹:
- äžè²«æ§ã®ãªãååä»ã: ããŒã«ã«ãã©ã³ãåã¯ããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ãç°ãªãã€ã³ã¹ããŒã«éã§å€§ããç°ãªãå¯èœæ§ããããŸããããã«ãããä¿¡é Œæ§ã®é«ãæ€åºãå°é£ã«ãªããŸãã
- ãã©ã³ãã®éã: åãååã®ãã©ã³ããããŒã«ã«ã«ã€ã³ã¹ããŒã«ãããŠããå Žåã§ããããŒãžã§ã³ãç°ãªã£ãŠãããããŠã§ããã©ã³ããšã¯ãããã«ç°ãªãã¡ããªãã¯ãæã£ãŠãããããå¯èœæ§ããããã¬ã€ã¢ãŠãã®ããã«ã€ãªããå¯èœæ§ããããŸãã
- éãããå©ç¹: ææ°ã®ãŠã§ããã©ã³ãã®æé©å (WOFF2ããµãã»ããã£ã³ã°ãããªããŒã) ã«ãããããŒã«ã«ãã©ã³ãã«äŸåããããšã®å©ç¹ã¯ãå€ãã®å Žåæå°éã§ããã解決ãããããå€ãã®åé¡ãçºçããå¯èœæ§ããããŸãã
æšå¥šäºé
: src
ãªã¹ãã®æåã®ã¹ããããšããŠããŒã«ã«ãã©ã³ã宣èšãå«ããããšãã§ããŸãããã°ããŒãã«ãªãŒãã£ãšã³ã¹å
šäœã§äºæž¬å¯èœãªçµæãåŸãã«ã¯ããŠã§ããã©ã³ãããŒãžã§ã³ãåªå
ããŠãã ããã
ãã©ã³ãèªã¿èŸŒã¿API: ãã詳现ãªå¶åŸ¡
ããã«çްããå¶åŸ¡ããã«ã¯ãCSS Font Loading APIã¯JavaScriptããŒã¹ã®ãœãªã¥ãŒã·ã§ã³ãæäŸããŸããããã«ããããã©ã³ããåçã«ããŒãããããããŒãã¹ããŒã¿ã¹ã確èªãããããªã¢ã«ã¿ã€ã ã€ãã³ãã«åºã¥ããŠé©çšãããã§ããŸãã
JavaScriptã䜿çšãããšã次ã®ããšãã§ããŸãã
- ãã©ã³ãããªã³ããã³ãã§ããŒãããŸãã
- ãã©ã³ãã®èªã¿èŸŒã¿ã®é²è¡ç¶æ³ã«å¿çããŸãã
- ãã©ã³ããèªã¿èŸŒãŸããåŸã«ã®ã¿ç¹å®ã®ã¹ã¿ã€ã«ãé©çšããŸãã
FontFace
ãšdocument.fonts
ã䜿çšããäŸ:
const fontFace = new FontFace('MyDynamicFont', 'url(/fonts/MyDynamicFont.woff2)', {
style: 'normal',
weight: 'normal'
});
document.fonts.add(fontFace);
fontFace.load().then(function() {
// Font loaded successfully, now apply it or update UI
document.body.style.fontFamily = 'MyDynamicFont, sans-serif';
}).catch(function(error) {
// Handle font loading errors
console.error('Font loading failed:', error);
});
ã°ããŒãã«ãŠãŒã¹ã±ãŒã¹: ããã¯ãã¢ãããã£ãUIã«åŒ·åã§ããæ è¡äºçŽãã©ãããã©ãŒã ãæ³åããŠã¿ãŠãã ããããŠãŒã¶ãŒãæ¥æ¬ã®ç®çå°ãé²èЧããŠããå Žåãäžçäžã®ãã¹ãŠã®ãŠãŒã¶ãŒã«å€§èŠæš¡ãªãã©ã³ããã¡ã€ã«ãé åžããã®ã§ã¯ãªããå¿ èŠã«å¿ããŠãã©ã³ãã®æ¥æ¬èªæåãµããŒããåçã«ããŒãããå ŽåããããŸãã
ãã©ã³ã管çãµãŒãã¹ãšCDN
å€ãã®äººã«ãšã£ãŠããã©ã³ããã¡ã€ã«ã®ç®¡çãšæé©ãªé ä¿¡ã®ç¢ºä¿ã¯è€éã«ãªãå¯èœæ§ããããŸãããŠã§ããã©ã³ããµãŒãã¹ãšã³ã³ãã³ãé ä¿¡ãããã¯ãŒã¯ (CDN) ã¯ã䟿å©ã§ãå€ãã®å Žåé«åºŠã«æé©åããããœãªã¥ãŒã·ã§ã³ãæäŸããŸãã
- Google Fonts: æã人æ°ã®ããç¡æãµãŒãã¹ã®1ã€ã§ããªãŒãã³ãœãŒã¹ãã©ã³ãã®èšå€§ãªã©ã€ãã©ãªãæäŸããŠããŸããéåžžãåçŽãªãªã³ã¯ã¿ã°ã䜿çšããŠåã蟌ã¿ãŸããGoogle Fontsã¯ãæãå¹ççãªåœ¢åŒ (WOFF2ãªã©) ãèªåçã«æäŸããããã©ã«ãã§
font-display: swap;
ãå«ã¿ãŸãã - Adobe Fonts (Typekit): é«å質ã®åçšãã©ã³ããæäŸãããµãã¹ã¯ãªãã·ã§ã³ããŒã¹ã®ãµãŒãã¹ãå ç¢ãªçµ±åãšããã©ãŒãã³ã¹ã®æé©åãæäŸããŸãã
- CDNã䜿çšããã»ã«ããã¹ãã£ã³ã°: CDNã§ç¬èªã®ãã©ã³ããã¡ã€ã«ããã¹ãã§ããŸããããã«ããããã¡ã€ã«åœ¢åŒããµãã»ããã£ã³ã°ãé ä¿¡ãå®å šã«å¶åŸ¡ã§ããŸããCDNã¯ã°ããŒãã«ã«åæ£ãããŠãããããå Žæã«é¢ä¿ãªããŠãŒã¶ãŒãžã®é«éé ä¿¡ãä¿èšŒãããŸãã
äŸ: ã°ããŒãã«ãªeã³ããŒã¹ãã©ã³ãã¯ãèŠèŠçãªäžè²«æ§ãšãã©ã³ãèªç¥åºŠã確ä¿ããããã«ãããŒã±ãã£ã³ã°ããŒãžã«Google Fontsã䜿çšããå ŽåããããŸãããŠã§ããµã€ãã®ãã©ã³ã¶ã¯ã·ã§ã³éšå (ãã§ãã¯ã¢ãŠãããã»ã¹) ã§ã¯ãæé«ã®é床ãšä¿¡é Œæ§ãå®çŸããããã«ãé«åºŠã«æé©åãããããµãã»ããåããããã©ã³ããCDNã§ã»ã«ããã¹ãããå ŽåããããŸãã
ã¢ã¯ã»ã·ããªãã£ãšå æ¬æ§ã®ç¢ºä¿
ã¿ã€ãã°ã©ãã£ã¯ããŠã§ãã¢ã¯ã»ã·ããªãã£ã®äžæ žãšãªãã³ã³ããŒãã³ãã§ããã°ããŒãã«ãªãªãŒãã£ãšã³ã¹ã«ãšã£ãŠãããã¯ãã«ã¹ã¿ã ãã©ã³ãããã¹ãŠã®äººã«ãšã£ãŠèªã¿ãããã䜿ããããããšãä¿èšŒããããšãæå³ããŸãã
- èªã¿ããã: ç¹ã«å°ãããµã€ãºã§ãæç¢ºã§èªã¿ããããã©ã³ããéžæããŠãã ãããæ¬æã«ã¯ãé床ã«è£ 食ããããã©ã³ããåçž®ããããã©ã³ãã¯é¿ããŠãã ããã
- ã³ã³ãã©ã¹ã: ãã©ã³ãã®è²ãšèæ¯è²ã®éã«ååãªã³ã³ãã©ã¹ããããããšã確èªããŠãã ãããããã¯ãèŠèŠé害ã®ãããŠãŒã¶ãŒã«ãšã£ãŠéèŠã§ãã
- æåãµããŒã: åè¿°ã®ããã«ãéžæãããã©ã³ããšãã®ãã©ãŒã«ããã¯ãããŠãŒã¶ãŒã䜿çšããèšèªãšã¹ã¯ãªããããµããŒãããŠããããšã確èªããŠãã ãããæåãæ¬ èœãããšã圹ã«ç«ããªãåè§ (è±è ) ãšããŠè¡šç€ºãããå ŽåããããŸãã
- ãã¹ã: ããŸããŸãªãã©ãŠã¶ãããã€ã¹ããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã§ã¿ã€ãã°ã©ãã£ããã¹ãããŸããéçºãã·ã³ã§é©åã«èŠãããã®ããä»ã®å Žæã§ã¯ç°ãªãã¬ã³ããªã³ã°ãããå ŽåããããŸãã
ã°ããŒãã«ã¢ã¯ã»ã·ããªãã£ã®èæ ®äºé : äžçä¿å¥æ©é¢ã«ãã調æ»ã§ã¯ãäžçäžã§2å8500äžäººä»¥äžã®äººã ãèŠèŠé害ãæã£ãŠç掻ããŠãããšæšå®ãããŠããŸããåªãããã©ãŒã«ããã¯ã¡ã«ããºã ãåãããæç¢ºã§èªã¿ãããã¿ã€ãã°ã©ãã£ãåªå ããããšã¯ãåãªããã¶ã€ã³ã®éžæã§ã¯ãããŸãããããã¯å æ¬æ§ãžã®ã³ãããã¡ã³ãã§ãã
çµè«: ã°ããŒãã«ãªã¿ã€ãã°ã©ãã£ãã¯ã®åè¶æ§ãåµé ãã
@font-face
ã«ãŒã«ã¯ãææ
®æ·±ã䜿çšãããšããŠã§ããµã€ãã®ãã¶ã€ã³ãšã°ããŒãã«ãªãªãŒãã£ãšã³ã¹ã®ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãåäžãããããšãã§ãã匷åãªããŒã«ã§ãããã©ã³ã圢åŒãçè§£ããfont-display
ãããªããŒããªã©ã®èªã¿èŸŒã¿æŠç¥ããã¹ã¿ãŒããããªã¢ãã«ãã©ã³ãããµãã»ããã£ã³ã°ãªã©ã®é«åºŠãªãã¯ããã¯ãæ€èšããããšã§ãçŸãããããã©ãŒãã³ã¹ãé«ããã¢ã¯ã»ã¹å¯èœãªã¿ã€ãã°ã©ãã£ãäžçäžã§æäŸã§ããŸãã
ç®æšã¯ããŠãŒã¶ãŒã®å Žæãæ¥ç¶é床ã«é¢ä¿ãªããã·ãŒã ã¬ã¹ãªãšã¯ã¹ããªãšã³ã¹ãæäŸããããšã§ããããšãå¿ããªãã§ãã ãããå¹çãåªå ããå ç¢ãªãã©ãŒã«ããã¯ãå®è£ ããåžžã«å®è£ ã培åºçã«ãã¹ãããŠãã ããããã®ã¬ã€ãã§æŠèª¬ãããŠãããã¯ããã¯ã䜿çšãããšãã«ã¹ã¿ã ãã©ã³ãã®å¯èœæ§ãæå€§éã«æŽ»çšããçã«åœéçãªãŠã§ããšã¯ã¹ããªãšã³ã¹ãäœæããããã®æºåãæŽããŸãã