import fs from 'node:fs' import { basename as _basename, extname } from 'node:path' import ttf2woff2 from 'gulp-ttf2woff2' import { app } from '../../gulpfile.js' import fonter from 'gulp-fonter-fix' export function otfToTtf() { return app.gulp .src(`${app.path.srcFolder}/fonts/*.otf`, {}) .pipe( fonter({ formats: ['ttf'], }) ) .pipe(app.gulp.dest(`${app.path.srcFolder}/fonts/`)) } export function ttfToWoff() { return app.gulp .src(`${app.path.srcFolder}/fonts/*.ttf`, {}) .pipe( fonter({ formats: ['woff'], }) ) .pipe(app.gulp.dest(`${app.path.build.fonts}`)) .pipe(app.gulp.src(`${app.path.srcFolder}/fonts/*.ttf`)) .pipe(ttf2woff2()) .pipe(app.gulp.dest(`${app.path.build.fonts}`)) .pipe(app.gulp.src(`${app.path.srcFolder}/fonts/*.{woff,woff2}`)) .pipe(app.gulp.dest(`${app.path.build.fonts}`)) } export function fontsStyle() { const fontsFile = `${app.path.appFolder}/scss/fonts/fonts.scss` fs.readdir(app.path.build.fonts, (_err, fonts) => { if (fonts.length) { fs.writeFile(fontsFile, '', cb) let newFileOnly fonts.forEach((font) => { const ext = extname(font) const fontFileName = _basename(font, ext) const basename = fontFileName.toLowerCase() const fontName = fontFileName.split('-')[0] ?? basename if (newFileOnly !== fontFileName) { let fontWeight let fontStyle switch (true) { case basename.includes('thin'): fontWeight = 100 break case basename.includes('extralight'): fontWeight = 200 break case basename.includes('light'): fontWeight = 300 break case basename.includes('medium'): fontWeight = 500 break case basename.includes('semibold'): fontWeight = 600 break case basename.includes('bold'): fontWeight = 700 break case basename.includes('extrabold'): fontWeight = 800 break case basename.includes('heavy'): fontWeight = 800 break case basename.includes('black'): fontWeight = 900 break default: fontWeight = 400 } switch (true) { case basename.includes('normal'): fontStyle = 'normal' break case basename.includes('italic'): fontStyle = 'italic' break case basename.includes('oblique'): fontStyle = 'oblique' break default: fontStyle = 'normal' } fs.appendFile( fontsFile, `@font-face {\n\tfont-family: ${fontName};\n\tfont-display: swap;\n\tsrc: url("../fonts/${fontFileName}.woff2") format("woff2"), url("../fonts/${fontFileName}.woff") format("woff");\n\tfont-weight: ${fontWeight};\n\tfont-style: ${fontStyle};\n}\r\n`, cb ) newFileOnly = fontFileName } }) } else { fs.unlink(fontsFile, cb) } }) return app.gulp.src(`${app.path.appFolder}`) } function cb() {}