рд▓реБрдореЗрди рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдереАрдо рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рд╕рдВрд╕ рдкреНрд░реЛ рдлрд╝реЙрдиреНрдЯ рдореЗрдВ рд╕рд┐рд░рд┐рд▓рд┐рдХ рдЬреЛрдбрд╝реЗрдВ

рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдХреЗ рд▓рд┐рдП рдореБрдлреНрдд рд╡рд┐рд╖рдпреЛрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ рдПрдХ рдЕрдЪреНрдЫрд╛ рд▓реБрдореЗрди рд╡рд┐рд╖рдп рд╣реИ, рдпрд╣ рдлрд╝реЙрдиреНрдЯ рд╕реНрд░реЛрдд рд╕реИрдВрд╕ рдкреНрд░реЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдХреЛрдИ рд╕рд┐рд░рд┐рд▓рд┐рдХ рд╡рд░реНрдгрдорд╛рд▓рд╛ рдирд╣реАрдВ рд╣реИред рд╕реНрд░реЛрдд рд╕реЗ рдлрд╝реЙрдиреНрдЯ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдХреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдХреНрдпреЛрдВ - рдирд┐рд╖реНрдХрд░реНрд╖ рджреЗрдЦреЗрдВред


1. OpenType рдХреЗ рд▓рд┐рдП Adobe рдлрд╝реЙрдиреНрдЯ рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдХрд┐рдЯ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ


OpenType рдХреЗ рд▓рд┐рдП Adobe рдлрд╝реЙрдиреНрдЯ рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдХрд┐рдЯ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВред рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХреЛ рдХреБрдЫ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдЕрдирдкреИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдирд┐рд░рдкреЗрдХреНрд╖ рдкрде рдореЗрдВ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдирд╣реАрдВ рд╣реИ, рдФрд░ рдкреНрд░рд╢рд╛рд╕рдХ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде FinishInstallWindows.cmd рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реИред рдЙрд╕рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рд▓реЙрдЧ рдЗрди рдпрд╛ рд░рд┐рдмреВрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

2. рдлрд╝реЙрдиреНрдЯ рд╕реНрд░реЛрдд рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ


GitHub рд╕реЗ рдлрд╝реЙрдиреНрдЯ рд╕реНрд░реЛрдд рд╢рд╛рдЦрд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдХрд╣реАрдВ рдЕрдирдкреИрдХ рдХрд░реЗрдВред рдЗрд╕ рд╢рд╛рдЦрд╛ рдореЗрдВ рд╕рд┐рд░рд┐рд▓рд┐рдХ рдФрд░ рдЧреНрд░реАрдХ рдЕрдХреНрд╖рд░ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдЬреЛ рдЕрднреА рддрдХ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд░рд┐рд▓реАрдЬ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИрдВред

3. рдЖрд╡рд╢реНрдпрдХ рд╢реИрд▓рд┐рдпреЛрдВ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░реЗрдВ


рдлрд╝реЙрдиреНрдЯ рд╕реНрд░реЛрддреЛрдВ рдореЗрдВ рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╢реИрд▓рд┐рдпрд╛рдБ рд╣реИрдВ, рд╣рдо рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдПрдВрдЧреЗ рдХрд┐ рд╣рдореЗрдВ рдХрд┐рди рдЪреАрдЬрд╝реЛрдВ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИред рд▓реНрдпреВрдореЗрди рдереАрдо рдХреА рдмреВрдЯрд╕реНрдЯреНрд░реИрдк . css рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓рдирд╛, рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдореЗрдВ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдлреЛрдВрдЯ рдЧреВрдЧрд▓ рд╕рд░реНрд╡рд░ рд╕реЗ рдЖрдпрд╛рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ:
@import url("//fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,700,400italic"); 

рд╣рдо рдЗрд╕ рдкрддреЗ рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ, рд╣рдореЗрдВ рдПрдХ рд╡рд┐рд╡рд░рдг рдорд┐рд▓рддрд╛ рд╣реИ:
 @font-face { font-family: 'Source Sans Pro'; font-style: normal; font-weight: 300; src: local('Source Sans Pro Light'), local('SourceSansPro-Light'), url(http://themes.googleusercontent.com/static/fonts/sourcesanspro/v7/toadOcfmlt9b38dHJxOBGNbE_oMaV8t2eFeISPpzbdE.woff) format('woff'); } @font-face { font-family: 'Source Sans Pro'; font-style: normal; font-weight: 400; src: local('Source Sans Pro'), local('SourceSansPro-Regular'), url(http://themes.googleusercontent.com/static/fonts/sourcesanspro/v7/ODelI1aHBYDBqgeIAH2zlBM0YzuT7MdOe03otPbuUS0.woff) format('woff'); } @font-face { font-family: 'Source Sans Pro'; font-style: normal; font-weight: 700; src: local('Source Sans Pro Bold'), local('SourceSansPro-Bold'), url(http://themes.googleusercontent.com/static/fonts/sourcesanspro/v7/toadOcfmlt9b38dHJxOBGFkQc6VGVFSmCnC_l7QZG60.woff) format('woff'); } @font-face { font-family: 'Source Sans Pro'; font-style: italic; font-weight: 400; src: local('Source Sans Pro Italic'), local('SourceSansPro-It'), url(http://themes.googleusercontent.com/static/fonts/sourcesanspro/v7/M2Jd71oPJhLKp0zdtTvoMzNrcjQuD0pTu1za2FULaMs.woff) format('woff'); } 

рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдЪрд╛рд░ рд╢реИрд▓рд┐рдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: рд▓рд╛рдЗрдЯ, рд░реЗрдЧреБрд▓рд░, рдмреЛрд▓реНрдб, рдЗрдЯреИрд▓рд┐рдХред

4. рд╣рдо рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВ


рд╕рдВрдХрд▓рди Makeotf -r рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдХрдорд╛рдВрдб рдПрдХ рдлреЛрд▓реНрдбрд░ рдореЗрдВ рдХрд░рдВрдЯ рдлреЛрд▓реНрдбрд░ рдореЗрдВ рдПрдХ рдлреЗрд╕ рдХреЛ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдмрд╛рд░ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдлрд╝реЛрд▓реНрдбрд░реНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдиреЗ рдФрд░ рдХрдорд╛рдВрдб рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЪрд▓рд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рд╣рдо PowerShell рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ рдЬреЛ рдмреИрдЪ рдореЛрдб рдореЗрдВ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИред рдПрдХ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ, рдлреЙрдиреНрдЯ рдХреЗ рд░реВрдЯ рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ build.sh рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓реЗрдВ рдФрд░ рдЙрд╕реА рдЬрдЧрд╣ рдирд╛рдо build.ps1 рдХреЗ рддрд╣рдд рдирдИ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рд╣реЗрдЬреЗрдВред
 $family='SourceSansPro' $romanWeights='Bold', 'Light', 'Regular' $italicWeights='It' # clean existing build artifacts rm -recurse -force target mkdir target mkdir target\otf foreach ($w in $romanWeights) { cd Roman\$w makeotf -r -o ..\..\target\otf\$family-$w.otf cd ..\.. rm Roman\$w\current.fpr # remove default options file from the source tree after building } foreach ($w in $italicWeights) { cd Italic\$w makeotf -r -o ..\..\target\otf\$family-$w.otf cd ..\.. rm Italic\$w\current.fpr # remove default options file from the source tree after building } 

рд╣рдо рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ ред \ Build.ps1 рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рдеред рдпрджрд┐ рдХреЛрдИ рд╕реБрд░рдХреНрд╖рд╛ рддреНрд░реБрдЯрд┐ рд╣реЛрддреА рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ PowerShell рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЪрд▓рд╛рдирд╛ рдиреАрддрд┐ рджреНрд╡рд╛рд░рд╛ рдирд┐рд╖рд┐рджреНрдз рд╣реИред рдирд┐рд╖реНрдкрд╛рджрди рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХрдорд╛рдВрдб рджрд░реНрдЬ рдХрд░реЗрдВ:
 Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned 

рдЙрд╕рдХреЗ рдмрд╛рдж, рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рд▓рдХреНрд╖реНрдп ред Otf \ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЪрд╛рд░ .otf рдлрд╛рдЗрд▓реЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреА ред

5. .wf рдореЗрдВ рдХрдирд╡рд░реНрдЯ рдХрд░реЗрдВ


Sfnt2woff рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдлрд╝реЙрдиреНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕рд╣реЗрдЬреЗрдВред рд╣рдо рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ Convert.ps1 рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
 $otfFiles = dir target\otf -Filter *.otf -Name # clean existing convert artifacts rm -recurse -force target\woff mkdir target\woff foreach ($otf in $otfFiles) { .\sfnt2woff.exe target\otf\$otf } mv target\otf\*.woff target\woff 

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд▓рдХреНрд╖реНрдп \ woff \ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЪрд▓рд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдХрдирд╡рд░реНрдЯ рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓реЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреАред

6. рдлрд╝реЙрдиреНрдЯ рдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ


ASP.NET MVC рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, .woff рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдлреЛрдВрдЯ \ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдХреЙрдкреА рдХрд░реЗрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЗрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВред рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ Content \ рдПрдХ рдирдИ рдлрд╝рд╛рдЗрд▓ bootstrap.lumen.path.css рдмрдирд╛рдПрдВ рдФрд░ рдЙрд╕рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓рд┐рдЦреЗрдВ:
 @font-face { font-family: 'Source Sans Pro'; font-style: normal; font-weight: 300; src: url(/fonts/SourceSansPro-Light.woff) format('woff'); } @font-face { font-family: 'Source Sans Pro'; font-style: normal; font-weight: 400; src: url(/fonts/SourceSansPro-Regular.woff) format('woff'); } @font-face { font-family: 'Source Sans Pro'; font-style: normal; font-weight: 700; src: url(/fonts/SourceSansPro-Bold.woff) format('woff'); } @font-face { font-family: 'Source Sans Pro'; font-style: italic; font-weight: 400; src: url(/fonts/SourceSansPro-It.woff) format('woff'); } 

рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХ рдирдИ рдкрдВрдХреНрддрд┐ рдЬреЛрдбрд╝реЗрдВ App_Start \ рдмрдВрдбрд▓Config.cs ред рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдпрд╣ bootstrap.lumen.css рд╕реЗ рдХрдо рд╣реЛред
 bundles.Add(new StyleBundle("~/Content/css").Include( "~/Content/bootstrap.lumen.css", "~/Content/bootstrap.lumen.path.css", "~/Content/site.css")); 

рдирд┐рд╖реНрдХрд░реНрд╖


рдпрд╣ рд╕рдм, рд╕рдорд╕реНрдпрд╛ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рд╣рд▓ рд╣реЛ рдЧрдИ рд╣реИред рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ - рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рд╕рдордп рд╕рд┐рд░рд┐рд▓рд┐рдХ рд╡рд░реНрдгрдорд╛рд▓рд╛ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЗрдЯреИрд▓рд┐рдХреНрд╕ рдирд╣реАрдВ рд╣реИред


рдлрд╝реЙрдиреНрдЯ рдбреЗрд╡рд▓рдкрд░, рдкреЙрд▓ рд╣рдВрдЯ , рд╕реЗ рдЬрдм рдЗрдЯреИрд▓рд┐рдХреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреВрдЫрд╛ рдЧрдпрд╛, рддреЛ рдЙрдиреНрд╣реЛрдВрдиреЗ рдХрд╣рд╛ рдХрд┐ рдХрд┐рд╕реА рджрд┐рди рд╕рд┐рд░рд┐рд▓рд┐рдХ рд╡рд░реНрдгрдорд╛рд▓рд╛ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА, рд▓реЗрдХрд┐рди рд╡рд╣ рдпрд╣ рдирд╣реАрдВ рдХрд╣ рд╕рдХрддреЗ рдХрд┐ рдпрд╣ рдХрдм рд╣реЛрдЧрд╛ред

рд╕рдорд╛рдкреНрдд .woff рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рдпрд╣рд╛рдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред

Source: https://habr.com/ru/post/In216223/


All Articles