Gitter migration: Setup redirects (rollout pt. 3)
[gitter.git] / server / web / fonts.js
blob7ff725bdd9e4a0c696fbc5caf71c624efabcfd0f
1 'use strict';
3 var cdn = require('gitter-web-cdn');
5 const katexFolder = 'repo/katex/fonts-0.10.0';
6 const getKatexSuffix = (weight, style) => {
7   const suffixMap = {
8     'normal,normal': 'Regular',
9     'normal,italic': 'Italic',
10     'bold,normal': 'Bold',
11     'bold,italic': 'BoldItalic'
12   };
13   return suffixMap[`${weight},${style}`];
15 const generateKatexFont = (family, weight, style) => ({
16   fontPath: cdn(`${katexFolder}/KaTeX_${family}-${getKatexSuffix(weight, style)}`),
17   // All modern browsers except IE support woff2 https://caniuse.com/#feat=woff2
18   // IE is going to fall back on Times New Roman, 0.82% of users are using IE as of 07/2019
19   formats: ['woff', 'woff2'],
20   weight: 'normal',
21   family: `KaTeX_${family}`,
22   style: 'italic'
23 });
25 var FONTS = [
26   {
27     fontPath: cdn('fonts/sourcesans/SourceSansPro-Regular.otf'),
28     formats: ['woff'],
29     weight: 'normal',
30     family: 'source-sans-pro',
31     style: 'normal'
32   },
33   {
34     fontPath: cdn('fonts/sourcesans/SourceSansPro-It.otf'),
35     formats: ['woff'],
36     weight: 'normal',
37     family: 'source-sans-pro',
38     style: 'italic'
39   },
40   {
41     fontPath: cdn('fonts/sourcesans/SourceSansPro-Bold.otf'),
42     formats: ['woff'],
43     weight: 'bold',
44     family: 'source-sans-pro',
45     style: 'normal'
46   },
47   {
48     fontPath: cdn('fonts/sourcesans/SourceSansPro-Semibold.otf'),
49     formats: ['woff'],
50     weight: 600,
51     family: 'source-sans-pro',
52     style: 'normal'
53   },
54   {
55     fontPath: cdn('fonts/sourcesans/SourceSansPro-BoldIt.otf'),
56     formats: ['woff'],
57     weight: 'bold',
58     family: 'source-sans-pro',
59     style: 'italic'
60   },
61   {
62     fontPath: cdn('fonts/sourcesans/SourceSansPro-Light.otf'),
63     formats: ['woff'],
64     weight: 300,
65     family: 'source-sans-pro',
66     style: 'normal'
67   },
68   {
69     fontPath: cdn('fonts/sourcesans/SourceSansPro-ExtraLight.otf'),
70     formats: ['woff'],
71     weight: 200,
72     family: 'source-sans-pro',
73     style: 'normal'
74   }
76 const KATEX = [
77   generateKatexFont('AMS', 'normal', 'normal'),
78   generateKatexFont('Caligraphic', 'bold', 'normal'),
79   generateKatexFont('Caligraphic', 'normal', 'normal'),
80   generateKatexFont('Fraktur', 'bold', 'normal'),
81   generateKatexFont('Fraktur', 'normal', 'normal'),
82   generateKatexFont('Main', 'bold', 'normal'),
83   generateKatexFont('Main', 'bold', 'italic'),
84   generateKatexFont('Main', 'normal', 'italic'),
85   generateKatexFont('Main', 'normal', 'normal'),
86   //generateKatexFont('Math', 'bold', 'normal'),
87   generateKatexFont('Math', 'bold', 'italic'),
88   generateKatexFont('Math', 'normal', 'italic'),
89   //generateKatexFont('Math', 'normal', 'normal'),
90   generateKatexFont('SansSerif', 'bold', 'normal'),
91   generateKatexFont('SansSerif', 'normal', 'italic'),
92   generateKatexFont('SansSerif', 'normal', 'normal'),
93   generateKatexFont('Script', 'normal', 'normal'),
94   generateKatexFont('Size1', 'normal', 'normal'),
95   generateKatexFont('Size2', 'normal', 'normal'),
96   generateKatexFont('Size3', 'normal', 'normal'),
97   generateKatexFont('Size4', 'normal', 'normal'),
98   generateKatexFont('Typewriter', 'normal', 'normal')
100 var LOCAL_FONTS = [
101   { name: 'SourceSansPro-Bold', weight: 'bold', style: 'normal' },
102   { name: 'SourceSansPro-BoldIt', weight: 'bold', style: 'italic' },
103   { name: 'SourceSansPro-ExtraLight', weight: 200, style: 'normal' },
104   { name: 'SourceSansPro-It', weight: 'normal', style: 'italic' },
105   { name: 'SourceSansPro-Light', weight: 300, style: 'normal' },
106   { name: 'SourceSansPro-Regular', weight: 'normal', style: 'normal' },
107   { name: 'SourceSansPro-Semibold', weight: 600, style: 'normal' }
110 function getFonts() {
111   return { local: LOCAL_FONTS, cdnFonts: [...FONTS, ...KATEX] };
114 function hasCachedFonts(cookies) {
115   return (cookies.webfontsLoaded || '') === 'true';
118 module.exports = {
119   getFonts: getFonts,
120   hasCachedFonts: hasCachedFonts