font.js 996 B

1234567891011121314151617181920212223242526272829
  1. /* global hexo */
  2. 'use strict';
  3. hexo.extend.helper.register('next_font', () => {
  4. const config = hexo.theme.config.font;
  5. if (!config || !config.enable) return '';
  6. const fontDisplay = '&display=swap';
  7. const fontSubset = '&subset=latin,latin-ext';
  8. const fontStyles = ':300,300italic,400,400italic,700,700italic';
  9. const fontHost = config.host || '//fonts.googleapis.com';
  10. //Get a font list from config
  11. let fontFamilies = ['global', 'title', 'headings', 'posts', 'codes'].map(item => {
  12. if (config[item] && config[item].family && config[item].external) {
  13. return config[item].family + fontStyles;
  14. }
  15. return '';
  16. });
  17. fontFamilies = fontFamilies.filter(item => item !== '');
  18. fontFamilies = [...new Set(fontFamilies)];
  19. fontFamilies = fontFamilies.join('|');
  20. // Merge extra parameters to the final processed font string
  21. return fontFamilies ? `<link rel="stylesheet" href="${fontHost}/css?family=${fontFamilies.concat(fontDisplay, fontSubset)}">` : '';
  22. });