рдПрдХ рдЕрдиреБрд╡рд╛рджрдХ рд╕реЗ: рдпрд╣ рдореЛрдЬрд╝рд┐рд▓рд╛ рдЖрдЗрдбреЗрдВрдЯрд┐рдЯреА рдЯреАрдо рд╕реЗ Node.js рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдЖрдард╡рд╛рдВ рд▓реЗрдЦ рд╣реИ, рдЬреЛ рдкрд░реНрд╕реЛрдирд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИред
рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд╕рднреА рд▓реЗрдЦ:
рд╣рдо рдлреЛрдВрдЯ рдХреЗ рд╕рдмрд╕реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, 300% рд╕реЗ 45 рдХрд┐рд▓реЛрдмрд╛рдЗрдЯ рддрдХ рдкрд░реНрд╕рди рдХреЗ рд▓рд┐рдП рдлрд╝реЙрдиреНрдЯ рдЖрдХрд╛рд░ 85% рддрдХ рдХрдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдереЗред рдпрд╣ рдЖрд▓реЗрдЦ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╣рдордиреЗ рдпрд╣ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдФрд░ рд╣рдордиреЗ рдХреМрди рд╕реЗ рдЙрдкрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред
рдХрдиреЗрдХреНрдЯ-рдлреЛрдВрдЯ рдХрд╛ рдкрд░рд┐рдЪрдп
рдХрдиреЗрдХреНрдЯ-рдлреЛрдВрдЯ , рдХрдиреЗрдХреНрдЯ рдХрд╛ рдорд┐рдбрд▓рд╡реЗрдпрд░ рд╣реИ рдЬреЛ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрдирдХреА рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рдлреЛрдВрдЯ рдХреЗ рд╕рдмрд╕реЗрдЯ рд╡рд┐рддрд░рд┐рдд рдХрд░рдХреЗ
@font-face
рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЙрдирдХрд╛ рдЖрдХрд╛рд░ рдХрдо рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдХрдиреЗрдХреНрдЯ-рдлреЛрдВрдЯ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдФрд░ IE9 + рдХреЗ рд▓рд┐рдП рд▓реЛрдХреЗрд▓ рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░-рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╢реИрд▓рд┐рдпреЛрдВ
@font-face
рдФрд░ рдХреЙрд░реНрд╕ рд╣реЗрдбрд░ рднреА рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред рдлреЛрдВрдЯ рдХреЗ рд╕рдмрд╕реЗрдЯ рдХреЛ рд╡рд┐рддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рддрдерд╛рдХрдерд┐рдд рдлреЙрдиреНрдЯ рдкреИрдХ рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ - рдлреЛрдВрдЯ рдХреЗ рд╕рдмрд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдПрдБ рдФрд░ рдПрдХ рд╕рд╛рдзрд╛рд░рдг JSON рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ред рдЖрдо рдУрдкрди рд╕реЛрд░реНрд╕ рдлреЛрдВрдЯ рдХреЗ рдХреБрдЫ рд╕реЗрдЯ
рдПрдирдкреАрдПрдо рдкреИрдХреЗрдЬ рдореЗрдВ рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рдЙрдкрд▓рдмреНрдз рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкреИрдХреЗрдЬ рдмрдирд╛рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИред
рдпрджрд┐ рдЖрдк рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдлреЛрдВрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рдмрд╣реБрдд рдЕрдЪреНрдЫреЗ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рд╣рдордиреЗ рд╡рд┐рд╖рдп
@font-face
рдкрд░ рд▓рд┐рдВрдХ
рдХрд╛ рдПрдХ
рдЫреЛрдЯрд╛ рд╕рдВрдЧреНрд░рд╣ рдПрдХрддреНрд░ рдХрд┐рдпрд╛ рд╣реИ ред [
рдЕрдиреБрд╡рд╛рджрдХ рд╕реЗ: рдФрд░ Habr├й рдкрд░ рд╡реЗрдм рдлреЛрдВрдЯ рдХреА рдЙрддреНрдкрд╛рджрдХрддрд╛ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рд▓реЗрдЦ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реИ ]
рд╕реНрдерд┐рд░ рдФрд░ рдЧрддрд┐рд╢реАрд▓ рдлрд╝реЙрдиреНрдЯ рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рд╣реИ
рдЬрдм рдЖрдк рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдмрд╕ рдПрдХ рдмрдбрд╝реА рдлрд╝реЙрдиреНрдЯ рдлрд╝рд╛рдЗрд▓ рджреЗрддреЗ рд╣реИрдВ, рддреЛ рд╕рдм рдХреБрдЫ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реЛрддрд╛ рд╣реИ:
- рдЕрдкрдиреА CSS рдлрд╝рд╛рдЗрд▓ рдореЗрдВ
@font-face
block рд▓рд┐рдЦреЗрдВ; - TTF рдпрд╛ OTF рдореЗрдВ рд╕реНрд░реЛрдд рд╕реЗ рд╡реЗрдм рдХреЗ рд▓рд┐рдП рдлреЙрдиреНрдЯ рдлрд╛рдЗрд▓реНрд╕ рдЬреЗрдирд░реЗрдЯ рдХрд░реЗрдВ рдФрд░ рдПрдХ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рд░рдЦреЗрдВ, рдЬрд┐рд╕ рддрдХ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХреА рдкрд╣реБрдБрдЪ рд╣реЛ;
- рдпрджрд┐ рдЖрдк рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдФрд░ IE9 + рдХреА рдПрдХ рд╣реА рд╕реНрд░реЛрдд рдиреАрддрд┐ рд╕реЗ рдлреЛрдВрдЯ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рдХреЙрд░реНрд╕ рд╣реЗрдбрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ рдпрджрд┐ рдЖрдк рдПрдХ рдЕрд▓рдЧ рдбреЛрдореЗрди рд╕реЗ рдлреЛрдВрдЯ рдХрд╛ рд╕рдВрджрд░реНрдн рд▓реЗрддреЗ рд╣реИрдВред
рдпреЗ рд╕рд░рд▓ рдХрджрдо рд╣реИрдВред рдкрд╣рд▓реЗ рджреЛ рдХреЛ рдФрд░ рднреА рдЖрд╕рд╛рди рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
FontSquirrel , рдПрдХ рдСрдирд▓рд╛рдЗрди рдлрд╝реЙрдиреНрдЯ рдЬрдирд░реЗрдЯрд░ рдЬреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдлрд╝реЙрдиреНрдЯ рдлрд╝рд╛рдЗрд▓реЗрдВ рдФрд░ CSS рдХреЛрдб рдмрдирд╛рдПрдЧрд╛ред CORS рд╣реЗрдбрд░ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ Apache рдпрд╛ Nginx рдкреНрд░рд▓реЗрдЦрди рдкрдврд╝рдирд╛ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИред
рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдлреЛрдВрдЯ рдХреЗ рд╕рдмрд╕реЗрдЯ рдХрд╛ рдкреВрд░рд╛ рдлрд╛рдпрджрд╛ рдЙрдард╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЪреАрдЬреЗрдВ рдЬрдЯрд┐рд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИрдВред рдЖрдкрдХреЛ рдкреНрд░рддреНрдпреЗрдХ рд╕реНрдерд╛рди рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рдлрд╝реЙрдиреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдФрд░ рдЖрдкрдХреЛ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ
@font-face
рдШреЛрд╖рдгрд╛рдУрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рддрд╛рдХрд┐ рд╡реЗ рд╕рд╣реА URL рдкрд░ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВред рдЖрдкрдХреЛ рдХреЙрд░реНрд╕ рд╕реЗ рднреА рдирд┐рдкрдЯрдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рдРрд╕реА рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ рдЬреЛ рдХрдиреЗрдХреНрдЯ-рдлреЛрдВрдЯ рдХреЛ рд╣рд▓ рдХрд░рддреА рд╣реИрдВред
рдлрд╝реЙрдиреНрдЯ рд╕рдмрд╕реНрдХреНрд░рд┐рдкреНрд╢рди: рдПрдХ рдЕрд╡рд▓реЛрдХрди
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдкреНрд░рддреНрдпреЗрдХ рдлрд╝реЙрдиреНрдЯ рдореЗрдВ рдХрдИ рд╡рд░реНрдг рд╣реЛрддреЗ рд╣реИрдВ - рд▓реИрдЯрд┐рди рд╡рд░реНрдгрдорд╛рд▓рд╛, рдлреНрд░реЗрдВрдЪ рдпрд╛ рдЬрд░реНрдорди рдЬреИрд╕реА рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдбрд╛рдпрдЯреНрд░реАрдЯрд┐рдХреНрд╕, рдЧреНрд░реАрдХ рдпрд╛ рд╕рд┐рд░рд┐рд▓рд┐рдХ рдЬреИрд╕реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдЕрдХреНрд╖рд░ред рдХрдИ рдлреЛрдВрдЯ рдореЗрдВ рд╡рд░реНрдг рднреА рд╣реЛрддреЗ рд╣реИрдВ, рдЦрд╛рд╕рдХрд░ рдпрджрд┐ рд╡реЗ рдпреВрдирд┐рдХреЛрдб рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕реНрдиреЛрдореИрди рдЪрд░рд┐рддреНрд░ -
)ред рдЪрд┐рддреНрд░рд▓рд┐рдкрд┐ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рдлреЛрдВрдЯ рднреА рд╣реИрдВред рдпрд╣ рд╕рдм рдлрд╝реЙрдиреНрдЯ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИ, рддрд╛рдХрд┐ рдпрд╣ рд╡реНрдпрд╛рдкрдХ рд╕рдВрднрд╡ рджрд░реНрд╢рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛред рдпрд╣ рд▓рдЪреАрд▓рд╛рдкрди рдмрдбрд╝реЗ рдлрд╝рд╛рдЗрд▓ рдЖрдХрд╛рд░ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИред Microsoft рдПрд░рд┐рдпрд▓ рдпреВрдирд┐рдХреЛрдб, рдЬрд┐рд╕рдореЗрдВ рд╕рднреА Uncode 2.1 рдЕрдХреНрд╖рд░ рд╣реИрдВ, рдХрд╛ рд╡рдЬрди рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп 22 рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рд╣реИ!
рдЙрд╕реА рд╕рдордп, рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡реЗрдм рдкреЗрдЬ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝реЙрдиреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ - рд╕рд╛рдордЧреНрд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛, рдЖрдорддреМрд░ рдкрд░ рдПрдХ рд╣реА рднрд╛рд╖рд╛ рдореЗрдВ рдФрд░ рдмрд┐рдирд╛ рд╡рд┐рджреЗрд╢реА рд╡рд░реНрдгреЛрдВ рдХреЗред рдЗрд╕ рдЫреЛрдЯреЗ рд╕рдмрд╕реЗрдЯ рдХреЗ рд▓рд┐рдП рдлрд╝реЙрдиреНрдЯ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдХреЗ, рд╣рдо рдмрд╣реБрдд рдХреБрдЫ рдмрдЪрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдлреЛрдВрдЯ рдХреЗ рд╕рдмрд╕реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдкреНрд░рджрд░реНрд╢рди рд▓рд╛рдн
рдЪрд▓реЛ рдХрдИ рд╕реНрдерд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдЖрдо рдлреЛрдВрдЯ рдХреА рдкреВрд░реНрдг рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдЖрдХрд╛рд░ рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рдЖрдкрдХреА рд╕рд╛рдЗрдЯ рдХреЗрд╡рд▓ рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рдЪрд▓рддреА рд╣реИ, рддреЛ рдЖрдк рдПрдХ рд╕реНрдерд╛рдиреАрдп рд╕рдмрд╕реЗрдЯ рдЬрд╛рд░реА рдХрд░рдХреЗ рдмрд╣реБрдд рдмрдЪрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЫреЛрдЯреЗ рдлрд╝реЙрдиреНрдЯ рдлрд╝рд╛рдЗрд▓ рдЖрдХрд╛рд░ рдХрд╛ рдЕрд░реНрде рд╣реИ рд╕реНрдХреНрд░реАрди рдкрд░ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдбрд┐рдВрдЧ рдФрд░ рдлреЛрдВрдЯред рдпрд╣ рдореЛрдмрд╛рдЗрд▓ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ 2 рдЬреА рдХрдиреЗрдХреНрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рд╛рдЗрдЯ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИ, рддреЛ рдкреГрд╖реНрда рдХрд╛ рд╡рдЬрди 50 рдХрд┐рд▓реЛрдмрд╛рдЗрдЯ рдХрдо рдХрд░рдиреЗ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЧрддрд┐ 2-3 рд╕реЗрдХрдВрдб рддрдХ рдмрдврд╝ рд╕рдХрддреА рд╣реИред рдПрдХ рдЕрдиреНрдп рдмрд┐рдВрджреБ - рдореЛрдмрд╛рдЗрд▓ рдЙрдкрдХрд░рдгреЛрдВ рдореЗрдВ рдХреИрд╢ рдЕрдХреНрд╕рд░ рдЫреЛрдЯрд╛ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдлрд╝реЙрдиреНрдЯ рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИред
рд╡рд┐рднрд┐рдиреНрди рд╕реНрдерд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрд╕рдореБрдЪреНрдЪрдп рдХреЗ рд╕рд╛рде рдУрдкрди рд╕реИрдиреНрд╕ рдХреА рдирд┐рдпрдорд┐рдд рдкреВрд░реНрдг рдлрд╝реЙрдиреНрдЯ рдЖрдХрд╛рд░ рдХреА рддреБрд▓рдирд╛:
Gzip рд╕рдВрдХреБрдЪрд┐рдд рд░реВрдк рдореЗрдВ рд╕рдорд╛рди:
рд╕рдВрдкреАрдбрд╝рди рдХреЗ рд╕рд╛рде рднреА, рдЖрдк рдлрд╝реЙрдиреНрдЯ рдЖрдХрд╛рд░ рдХреЛ 80% рд╕реЗ рдХрдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, 63 рд╕реЗ 13 рдХрд┐рд▓реЛрдмрд╛рдЗрдЯ рддрдХ, рдпрджрд┐ рдЖрдк рдУрдкрди рд╕рдВрд╕ рдХреЗ рдХреЗрд╡рд▓ рдЕрдВрдЧреНрд░реЗрдЬреА рд╕рдмрд╕реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдФрд░ рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рдлрд╝реЙрдиреНрдЯ рд╣реИ - рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рд╛рдЗрдЯреЗрдВ рдХрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИрдВред рдЕрдиреБрдХреВрд▓рди рдХреЗ рд▓рд┐рдП рдорд╣рд╛рди рдХреНрд╖рдорддрд╛!
рдХрдиреЗрдХреНрдЯ-рдлреЛрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдордиреЗ рдореЛрдЬрд╝рд┐рд▓рд╛ рдкрд░реНрд╕рди рдореЗрдВ 300 рд╕реЗ 45 рдХрд┐рд▓реЛрдмрд╛рдЗрдЯ рддрдХ 85% рдХреА рдХрдореА рд╣рд╛рд╕рд┐рд▓ рдХреАред рдпрд╣ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ 3 рдЬреА рдХрдиреЗрдХреНрд╢рди рдкрд░ 2 рд╕реЗрдХрдВрдб рдХреЗ рдмреВрдЯ рд╕рдордп рдФрд░ 2 рдЬреА рдкрд░ рдПрдХ рджрд░реНрдЬрди рд╕реЗрдХрдВрдб рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред
рдЖрдЧреЗ рдЕрдиреБрдХреВрд▓рди
рдпрджрд┐ рдЖрдк рд╣рд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдмрд╛рдЗрдЯ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдХрдиреЗрдХреНрдЯ-рдлреЛрдВрдЯ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдпрд╣ рд╕реАрдПрд╕рдПрд╕ рдХреЛ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рд▓реМрдЯрд╛рдП, рд▓реЗрдХрд┐рди рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд┐рд╕реЗ рд╕рд╛рдЭрд╛ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдХрдиреЗрдХреНрдЯ-рдлреЛрдВрдЯ рдПрдХ рдиреНрдпреВрдирддрдо
@font-face
рдШреЛрд╖рдгрд╛ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рдмрд┐рдирд╛ рдЙрди рд╕реНрд╡рд░реВрдкреЛрдВ рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд┐рдП рдЬреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдХрдиреЗрдХреНрдЯ-рдлреЛрдВрдЯ рдЖрд╡реЗрджрди рдЙрджрд╛рд╣рд░рдг
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИ рдЬреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рд╡рд░реНрддрдорд╛рди рд╕рдордп рдмрддрд╛рддрд╛ рд╣реИ:
рд╕рдмрд╕реЗ рдЖрджрд┐рдо рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛:
// tpl.ejs <!doctype html> <p>the time is <%= currentTime %>
рд╣рдо рдУрдкрди рд╕реЗрдиреНрд╕ рдХреЗ рд╕реНрдерд╛рдиреАрдпрдХреГрдд рд╕рдмрд╕реЗрдЯ рдХреЛ рд░реЗрдВрдбрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдиреЗрдХреНрдЯ-рдлреЛрдВрдЯ рдХреЛ рдЬреЛрдбрд╝реЗрдВрдЧреЗ - рдкреИрдХреЗрдЬ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрдИ рддреИрдпрд╛рд░ рд╕реЗрдЯреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХред
рдЖрд╡реЗрджрди рдкрд░рд┐рд╡рд░реНрддрди
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрд╡рд╢реНрдпрдХ рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:
$ npm install connect-fonts $ npm install connect-fonts-opensans
рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ:
рд╣рдо рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рддреЗ рд╣реИрдВ:
connect_fonts.setup()
рдирд┐рдореНрди рддрд░реНрдХ рд▓реЗрддрд╛ рд╣реИ:
fonts
- рдЖрд╡рд╢реНрдпрдХ рдлреЛрдВрдЯ рдХреА рдПрдХ рд╕рд░рдгреАallow_origin
- рд╡рд╣ рд╕реНрд░реЛрдд рдЬрд┐рд╕рд╕реЗ рд╣рдо рдлрд╝реЙрдиреНрдЯ рд▓реЗрддреЗ рд╣реИрдВ; рдХрдиреЗрдХреНрдЯ-рдлреЛрдВрдЯ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ 3.5+ рдФрд░ IE9 + рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреЗ рд▓рд┐рдП Access-Control-Allow-Origin
рд╣реЗрдбрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИредua
(рд╡реИрдХрд▓реНрдкрд┐рдХ) - рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдПрдЬреЗрдВрдЯреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдЬрд┐рд╕реЗ рд╣рдо рдлреЛрдВрдЯ рджреЗрддреЗ рд╣реИрдВред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдХрдиреЗрдХреНрдЯ-рдлреЛрдВрдЯ рдЕрдиреБрд░реЛрдз рдкрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдПрдЬреЗрдВрдЯ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рд╕реНрд╡рдпрдВ рддрдп рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕реЗ рдлрд╝рд╛рдЗрд▓ рд╕реНрд╡рд░реВрдкреЛрдВ рдХреЛ рдШреЛрд╖рдгрд╛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рд╣реИред рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рдЖрдк ua: 'all'
- рддреЛ рд╕рднреА рдЙрдкрд▓рдмреНрдз рдкреНрд░рд╛рд░реВрдк рд╢рд╛рдорд┐рд▓ рд╣реЛрдВрдЧреЗред
рдорд╛рд░реНрдЧ рдХреЗ рдЕрдВрджрд░, рдЖрдкрдХреЛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рд▓реЛрдХреЗрд▓ рдкрд╛рд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
Mozilla Persona рд▓реЛрдХреЗрд▓ рдирд┐рд░реНрдзрд╛рд░рд┐рдд
рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
i18n- abide рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдПрдХ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛
рд▓реЛрдХреЗрд▓ рдореЙрдбреНрдпреВрд▓ рднреА рд╣реИ, рдЬреЛ рджреЛрдиреЛрдВ npm рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реИрдВред рд▓реЗрдХрд┐рди, рдЙрджрд╛рд╣рд░рдг рдХреЛ рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо
Accept-language
рдЕрдиреБрд░реЛрдз рдХреНрд╖реЗрддреНрд░ рд╕реЗ рдкрд╣рд▓реЗ рджреЛ рдЕрдХреНрд╖рд░ рд▓реЗрддреЗ рд╣реИрдВ:
рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдкрд░рд┐рд╡рд░реНрддрди
рдЕрдм рдЖрдкрдХреЛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдХрдиреЗрдХреНрдЯ-рдлреЛрдВрдЯ рдЧреНрд░рд╣рдг рдорд╛рд░реНрдЧреЛрдВ рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ:
/:locale/:font-list/fonts.css
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
/fr/opensans-regular,opensans-italics/fonts.css
рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдореЗрдВ рдЙрд╕ рдкрде рдХреЗ рд╕рд╛рде рд╕реНрдЯрд╛рдЗрд▓рд╢реАрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдХрдиреЗрдХреНрдЯ-рдлреЛрдВрдЯ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рд░рдЦрддрд╛ рд╣реИ:
// tpl.ejs - connect-fonts <!doctype html> <link href="/<%= userLocale %>/opensans-regular/fonts.css" rel="stylesheet">
рдФрд░ рдкреЗрдЬ рдХреЛрдб рдореЗрдВ рдПрдХ рдлрд╝реЙрдиреНрдЯ рд╢реИрд▓реА рдЬреЛрдбрд╝реЗрдВ:
// tpl.ejs <style> body { font-family: "Open Sans", "sans-serif"; } </style> <p>the time is <%= currentTime %>
рд╡рд╣ рд╕рдм рд╣реИред рдХрдиреЗрдХреНрдЯ-рдлреЛрдВрдЯ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рд╕реАрдПрд╕рдПрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╕реНрдерд╛рди рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдЕрдВрдЧреНрд░реЗрдЬреА рд▓реЛрдХреЗрд▓ рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
* ua 'all' */ @font-face { font-family: 'Open Sans'; font-style: normal; font-weight: 400; src: url('/fonts/en/opensans-regular.eot'); src: local('Open Sans'), local('OpenSans'), url('/fonts/en/opensans-regular.eot#') format('embedded-opentype'), url('/fonts/en/opensans-regular.woff') format('woff'), url('/fonts/en/opensans-regular.ttf') format('truetype'), url('/fonts/en/opensans-regular.svg#Open Sans') format('svg'); }
рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рдПрдХрд▓ HTTP рдЕрдиреБрд░реЛрдз рдХреЛ рд╕рд╣реЗрдЬрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк CSS рдХреЛрдб рдХреЛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
connect_fonts.generate_css()
рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп CSS рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЕрдм рд╣рдорд╛рд░рд╛ рдЫреЛрдЯрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЦреВрдмрд╕реВрд░рддреА рд╕реЗ рд╕рдордп рджрд┐рдЦрд╛рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдкреВрд░реНрдг рд╕реНрд░реЛрдд рдХреЛрдб Github рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИред рд╣рдордиреЗ рдПрдХ рддреИрдпрд╛рд░-рдХрд┐рдП рдЧрдП рдлрд╝реЙрдиреНрдЯ рдкреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдмрдирд╛рдирд╛ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИред
рдирд┐рд░реНрджреЗрд╢ рд░реАрдбрдореА рдореЗрдВ рд╣реИред
Zklyuchenie
рд╡реЗрдм рдлреЛрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╕рд╛рдЗрдЯреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдмреНрд╕рдХреНрд░рд┐рдкреНрд╢рди рдмрд╣реБрдд рдмрдбрд╝рд╛ рдкреНрд░рджрд░реНрд╢рди рд▓рд╛рдн рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдХрдиреЗрдХреНрдЯ-рдлреЙрдиреНрдЯ рдПрдХ рдмрд╣реБрднрд╛рд╖реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдлреЙрдиреНрдЯ рдХрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рдЖрдкрдХреА рд╕рд╛рдЗрдЯ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рднрд╛рд╖рд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреА рд╣реИ, рддреЛ рдЖрдк рдЕрднреА рднреА рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдлреЛрдВрдЯ рдХреЛ рдЯреНрд░рд┐рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреА рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдЬрд░реВрд░рдд рд╣реИ рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ CSS рдФрд░ CORS рд╣реЗрдбрд░ рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВ, рд╕рд╛рде рд╣реА рдпрд╣ рдмрд╛рдж рдХреЗ рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рдХреА рд╕реБрд╡рд┐рдзрд╛ рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ред
рдЖрдЧреЗ рдХреЗ рдЕрдиреБрдХреВрд▓рди рдореЗрдВ рдЙрди рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдВрдХреЗрдд рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ (рд╕рднреА рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╡рд┐рдВрдбреЛрдЬ), рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдлрд╝реЙрдиреНрдЯ рд╕рдВрдкреАрдбрд╝рди, рдФрд░ рдХреИрд╢рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╣реЗрдбрд░ рд╕реЗрдЯ рдХрд░рдирд╛ред
рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд╕рднреА рд▓реЗрдЦ: