Merge branch 'master' into stable

This commit is contained in:
Tamius Han 2020-04-30 00:41:11 +02:00
commit f13aca1c7f
27 changed files with 247 additions and 326 deletions

View File

@ -13,10 +13,13 @@ QoL improvements for me:
* logging: allow to enable logging at will and export said logs to a file * logging: allow to enable logging at will and export said logs to a file
### v4.4.7 (current) ### v4.4.7 (Current)
* Removed unnecessary font files and image files from the package. * Removed unnecessary font files and image files from the package.
* LoggerUI is now functional. * LoggerUI is now functional.
* **[4.4.7.1]** Additional CSS fixes
* **[4.4.7.1]** Bruteforce fix for youtube alignment issue
* **[4.4.7.2]** Bruteforce fix for youtube alignment issue — increase number of retries
### v4.4.6 ### v4.4.6

View File

@ -0,0 +1,23 @@
Microsoft edge extension store requires notes for certification. Because I'm too lazy to whip this text over and over and over and over and over and over again, I'm making it a copypasta.
---------------------------------------------------------------------------------------------
This extension is targeted at users of 21:9 monitors. If using 16:9 monitor, use youtube in THEATER MODE.
Not all videos need to have their aspect ratio corrected. Here is few examples of videos with problems this extension is trying to solve:
* Variable aspect ratio — autodetection testing grounds: https://www.youtube.com/watch?v=-IHzprfs6tw
* Static (but incorrect) aspect ratio: https://www.youtube.com/watch?v=BTETsm79D3A
Twitch example (collapse subscription & chat sidebars on 16:9, do not fullscreen) — aspect ratio switch happens at around 1:50:00 mark:
* https://www.twitch.tv/videos/330639009?t=1h49m45s
Autodetect has technological limitations and can incorrectly detect aspect ratio. This is acceptable — user should override it in such cases.
Functions labelled 'experimental' are experimental and may not function correctly.
Websites may interfere with keyboard shortcuts.
Brief video flicker when changing between fullscreen, non-fullscreen or when changing browser is inherent artifact caused by sites not being aware of extension and is thus considered acceptable.
Logger option does nothing (except give you a popup) unless you have a logger config handy. It is designed for debugging in case of bug reports.

6
package-lock.json generated
View File

@ -1368,9 +1368,9 @@
"dev": true "dev": true
}, },
"acorn": { "acorn": {
"version": "6.4.0", "version": "6.4.1",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.0.tgz", "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz",
"integrity": "sha512-gac8OEcQ2Li1dxIEWGZzsp2BitJxwkwcOm0zHAJLcPJaVvm58FRnk6RkuLRpU1EujipU2ZFODv2P9DLMfnV8mw==", "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==",
"dev": true "dev": true
}, },
"ajv": { "ajv": {

View File

@ -14,7 +14,7 @@
"build-testing-chrome": "cross-env NODE_ENV=development BROWSER=chrome CHANNEL=testing webpack --hide-modules", "build-testing-chrome": "cross-env NODE_ENV=development BROWSER=chrome CHANNEL=testing webpack --hide-modules",
"build-nightly-chrome": "cross-env NODE_ENV=development BROWSER=chrome CHANNEL=nightly webpack --hide-modules", "build-nightly-chrome": "cross-env NODE_ENV=development BROWSER=chrome CHANNEL=nightly webpack --hide-modules",
"build-chrome:dev": "cross-env NODE_ENV=development BROWSER=chrome webpack --hide-modules", "build-chrome:dev": "cross-env NODE_ENV=development BROWSER=chrome webpack --hide-modules",
"build-all": "rm ./dist-zip/uw-amo-source.zip; mv ./dist-zip/*.zip ./dist-zip/old/; npm run build; node scripts/build-zip.js ff; npm run build-chrome; node scripts/build-zip.js chrome; ./scripts/prepare-amo-source.sh", "build-all": "mkdir -p ./build/old; rm -rf ./dist-ff; rm -rf ./dist-chrome; rm ./dist-zip/uw-amo-source.zip; mv -f ./dist-zip/*.zip ./build/old; npm run build; node scripts/build-zip.js ff; npm run build-chrome; node scripts/build-zip.js chrome; ./scripts/prepare-amo-source.sh",
"build-zip": "node scripts/build-zip.js", "build-zip": "node scripts/build-zip.js",
"dev": "cross-env NODE_ENV=development CHANNEL=dev concurrently \"cross-env BROWSER=firefox npm run build:dev -- --watch\" \"cross-env BROWSER=chrome npm run build:dev -- --watch\"" "dev": "cross-env NODE_ENV=development CHANNEL=dev concurrently \"cross-env BROWSER=firefox npm run build:dev -- --watch\" \"cross-env BROWSER=chrome npm run build:dev -- --watch\""
}, },

View File

@ -77,8 +77,7 @@ export default {
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped src="./json.scss">
@import url('./json.scss'); </style>
@import url('../../../res/css/flex.scss'); <style lang="scss" scoped src="../../../res/css/flex.scss">
</style> </style>

View File

@ -86,6 +86,5 @@ export default {
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped src="./json.scss">
@import url('./json.scss');
</style> </style>

View File

@ -87,6 +87,5 @@ export default {
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped src="./json.scss">
@import url('./json.scss');
</style> </style>

View File

@ -1,3 +1,8 @@
if (process.env.CHANNEL !== 'stable') {
console.log('Loaded ExtensionMode');
}
var ExtensionMode = Object.freeze({ var ExtensionMode = Object.freeze({
AutoDisabled: -2, AutoDisabled: -2,
Disabled: -1, Disabled: -1,

View File

@ -296,7 +296,7 @@ export default {
} }
</script> </script>
<style scoped src="../res/css/flex.scss"></style> <style lang="scss" src="../res/css/flex.scss" scoped></style>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '../res/css/colors.scss'; @import '../res/css/colors.scss';

View File

@ -1,4 +1,7 @@
import Debug from './Debug.js'; if (process.env.CHANNEL !== 'stable') {
console.log('Loaded BrowserDetect');
}
const BrowserDetect = { const BrowserDetect = {
firefox: process.env.BROWSER === 'firefox', firefox: process.env.BROWSER === 'firefox',
@ -7,7 +10,7 @@ const BrowserDetect = {
processEnvBrowser: process.env.BROWSER, processEnvBrowser: process.env.BROWSER,
} }
if (Debug.debug) { if (process.env.CHANNEL !== 'stable') {
console.log("Loading: BrowserDetect.js\n\nprocess.env.BROWSER:", process.env.BROWSER, "Exporting BrowserDetect:", BrowserDetect); console.log("Loading: BrowserDetect.js\n\nprocess.env.BROWSER:", process.env.BROWSER, "Exporting BrowserDetect:", BrowserDetect);
} }

View File

@ -1,3 +1,8 @@
if (process.env.CHANNEL !== 'stable') {
console.log('We are not on stable channel. File init will be printed to console.');
console.log('Loaded Debug.js');
}
// Set prod to true when releasing // Set prod to true when releasing
// const _prod = true; // const _prod = true;
const _prod = false; const _prod = false;

View File

@ -2,6 +2,10 @@ import Debug from '../conf/Debug';
import PlayerData from './video-data/PlayerData'; import PlayerData from './video-data/PlayerData';
import ExtensionMode from '../../common/enums/extension-mode.enum'; import ExtensionMode from '../../common/enums/extension-mode.enum';
if(process.env.CHANNEL !== 'stable'){
console.log("Loading ActionHandler");
}
class ActionHandler { class ActionHandler {
constructor(pageInfo) { constructor(pageInfo) {
@ -305,4 +309,8 @@ class ActionHandler {
} }
if(process.env.CHANNEL !== 'stable'){
console.log("ActionHandler loaded");
}
export default ActionHandler; export default ActionHandler;

View File

@ -2,6 +2,10 @@ import currentBrowser from '../conf/BrowserDetect';
import { decycle } from 'json-cyclic'; import { decycle } from 'json-cyclic';
import Comms from './comms/Comms'; import Comms from './comms/Comms';
if (process.env.CHANNEL !== 'stable'){
console.log('Loading Logger');
}
class Logger { class Logger {
constructor(options) { constructor(options) {
this.onLogEndCallbacks = []; this.onLogEndCallbacks = [];
@ -547,4 +551,8 @@ class Logger {
} }
} }
if (process.env.CHANNEL !== 'stable'){
console.log('Logger loaded');
}
export default Logger; export default Logger;

View File

@ -8,7 +8,9 @@ import VideoAlignment from '../../common/enums/video-alignment.enum';
import ExtensionConfPatch from '../conf/ExtConfPatches'; import ExtensionConfPatch from '../conf/ExtConfPatches';
import CropModePersistence from '../../common/enums/crop-mode-persistence.enum'; import CropModePersistence from '../../common/enums/crop-mode-persistence.enum';
if(process.env.CHANNEL !== 'stable'){
console.log("Loading Settings");
}
class Settings { class Settings {

3
src/ext/lib/Util.js Normal file
View File

@ -0,0 +1,3 @@
export async function sleep(timeout) {
return new Promise( (resolve, reject) => setTimeout(() => resolve(), timeout));
}

View File

@ -8,6 +8,7 @@ import GuardLine from './GuardLine';
// import DebugCanvas from './DebugCanvas'; // import DebugCanvas from './DebugCanvas';
import VideoAlignment from '../../../common/enums/video-alignment.enum'; import VideoAlignment from '../../../common/enums/video-alignment.enum';
import AspectRatio from '../../../common/enums/aspect-ratio.enum'; import AspectRatio from '../../../common/enums/aspect-ratio.enum';
import {sleep} from '../../lib/Util';
class ArDetector { class ArDetector {
@ -257,7 +258,7 @@ class ArDetector {
while (!this._exited && exitedRetries --> 0) { while (!this._exited && exitedRetries --> 0) {
this.logger.log('warn', 'debug', `[ArDetect::main] <@${this.arid}> We are trying to start another instance of autodetection on current video, but the previous instance hasn't exited yet. Waiting for old instance to exit ...`); this.logger.log('warn', 'debug', `[ArDetect::main] <@${this.arid}> We are trying to start another instance of autodetection on current video, but the previous instance hasn't exited yet. Waiting for old instance to exit ...`);
await this.sleep(this.settings.active.arDetect.timers.tickrate); await sleep(this.settings.active.arDetect.timers.tickrate);
} }
if (!this._exited) { if (!this._exited) {
this.logger.log('error', 'debug', `[ArDetect::main] <@${this.arid}> Previous instance didn't exit in time. Not starting a new one.`); this.logger.log('error', 'debug', `[ArDetect::main] <@${this.arid}> Previous instance didn't exit in time. Not starting a new one.`);
@ -302,16 +303,13 @@ class ArDetector {
} }
} }
await this.sleep(this.settings.active.arDetect.timers.tickrate); await sleep(this.settings.active.arDetect.timers.tickrate);
} }
this.logger.log('info', 'debug', `%c[ArDetect::main] <@${this.arid}> Main autodetection loop exited. Halted? ${this._halted}`, _ard_console_stop); this.logger.log('info', 'debug', `%c[ArDetect::main] <@${this.arid}> Main autodetection loop exited. Halted? ${this._halted}`, _ard_console_stop);
this._exited = true; this._exited = true;
} }
async sleep(timeout) {
return new Promise( (resolve, reject) => setTimeout(() => resolve(), timeout));
}
canTriggerFrameCheck(lastFrameCheckStartTime) { canTriggerFrameCheck(lastFrameCheckStartTime) {
if (this._paused) { if (this._paused) {

View File

@ -1,6 +1,10 @@
import Debug from '../../conf/Debug'; import Debug from '../../conf/Debug';
import BrowserDetect from '../../conf/BrowserDetect'; import BrowserDetect from '../../conf/BrowserDetect';
if (process.env.CHANNEL !== 'stable'){
console.log("Loading Comms");
}
class Comms { class Comms {
static async sendMessage(message){ static async sendMessage(message){
@ -32,4 +36,8 @@ class Comms {
} }
if (process.env.CHANNEL !== 'stable'){
console.log("Comms loaded");
}
export default Comms; export default Comms;

View File

@ -1,6 +1,10 @@
import Debug from '../../conf/Debug'; import Debug from '../../conf/Debug';
import BrowserDetect from '../../conf/BrowserDetect'; import BrowserDetect from '../../conf/BrowserDetect';
if (process.env.CHANNEL !== 'stable'){
console.log("Loading CommsClient");
}
class CommsClient { class CommsClient {
constructor(name, logger, commands) { constructor(name, logger, commands) {
this.logger = logger; this.logger = logger;
@ -125,4 +129,8 @@ class CommsClient {
} }
if (process.env.CHANNEL !== 'stable'){
console.log("CommsClient loaded");
}
export default CommsClient; export default CommsClient;

View File

@ -4,10 +4,9 @@ import RescanReason from './enums/RescanReason';
import AspectRatio from '../../../common/enums/aspect-ratio.enum'; import AspectRatio from '../../../common/enums/aspect-ratio.enum';
import CropModePersistence from '../../../common/enums/crop-mode-persistence.enum'; import CropModePersistence from '../../../common/enums/crop-mode-persistence.enum';
if(Debug.debug) if (process.env.CHANNEL !== 'stable'){
console.log("Loading: PageInfo.js"); console.log("Loading PageInfo");
}
class PageInfo { class PageInfo {
constructor(comms, settings, logger, extensionMode, readOnly = false){ constructor(comms, settings, logger, extensionMode, readOnly = false){

View File

@ -8,6 +8,7 @@ import Stretch from '../../../common/enums/stretch.enum';
import VideoAlignment from '../../../common/enums/video-alignment.enum'; import VideoAlignment from '../../../common/enums/video-alignment.enum';
import AspectRatio from '../../../common/enums/aspect-ratio.enum'; import AspectRatio from '../../../common/enums/aspect-ratio.enum';
import CropModePersistance from '../../../common/enums/crop-mode-persistence.enum'; import CropModePersistance from '../../../common/enums/crop-mode-persistence.enum';
import { sleep } from '../Util';
if(Debug.debug) { if(Debug.debug) {
console.log("Loading: Resizer.js"); console.log("Loading: Resizer.js");
@ -139,7 +140,7 @@ class Resizer {
} }
} }
setAr(ar, lastAr) { async setAr(ar, lastAr) {
if (this.destroyed) { if (this.destroyed) {
return; return;
} }
@ -258,17 +259,39 @@ class Resizer {
|| this.stretcher.mode === Stretch.FixedSource){ || this.stretcher.mode === Stretch.FixedSource){
var stretchFactors = this.scaler.calculateCrop(ar); var stretchFactors = this.scaler.calculateCrop(ar);
this.logger.log('error', 'debug', `[Resizer::setAr] <rid:${this.resizerId}> failed to set AR due to problem with calculating crop. Error:`, stretchFactors && stretchFactors.error);
if(! stretchFactors || stretchFactors.error){ if(! stretchFactors || stretchFactors.error){
this.logger.log('error', 'debug', `[Resizer::setAr] <rid:${this.resizerId}> failed to set AR due to problem with calculating crop. Error:`, (stretchFactors ? stretchFactors.error : stretchFactors)); if (stretchFactors?.error === 'no_video'){
if (stretchFactors.error === 'no_video'){
this.conf.destroy(); this.conf.destroy();
}
if (stretchFactors.error === 'illegal_video_dimensions') {
this.logger.log('error', 'debug', `[Resizer::setAr] <rid:${this.resizerId}> Illegal video dimensions found. We will pause everything.`)
}
return; return;
} }
// we could have issued calculate crop too early. Instead of spending 30 minutes trying to fix this the proper way by
// reading documentation, let's fix it in 30 seconds with some brute force code
if (stretchFactors?.error === 'illegal_video_dimensions') {
let timeout = 10; // ms
let iteration = 0;
let maxIterations = 15;
do {
if (iteration > maxIterations) {
this.logger.log('error', 'debug', `[Resizer::setAr] <rid:${this.resizerId}> Video dimensions remain illegal after ${maxIterations} retries`);
return;
}
// fire first few rechecks in quick succession, but start increasing timeout
// later down the line.
if (iteration > 0 && iteration % 0 == 0) {
timeout = Math.min(2 * timeout, 1000);
}
this.logger.log('info', 'debug', `[Resizer::setAr] <rid:${this.resizerId}> Sleeping for ${timeout} ms`);
await sleep(timeout);
stretchFactors = this.scaler.calculateCrop(ar);
iteration++;
} while (stretchFactors.error === 'illegal_video_dimensions');
this.logger.log('info', 'debug', `[Resizer::setAr] <rid:${this.resizerId}> Video dimensions have corrected themselves after retrying.`);
}
}
if (this.stretcher.mode === Stretch.Conditional){ if (this.stretcher.mode === Stretch.Conditional){
this.stretcher.applyConditionalStretch(stretchFactors, ar.ratio); this.stretcher.applyConditionalStretch(stretchFactors, ar.ratio);
} else if (this.stretcher.mode === Stretch.FixedSource) { } else if (this.stretcher.mode === Stretch.FixedSource) {
@ -589,12 +612,17 @@ class Resizer {
// inject new CSS or replace existing one // inject new CSS or replace existing one
if (!this.userCss) { if (!this.userCss) {
this.logger.log('info', ['debug', 'resizer'], "[Resizer::setStyleString] <rid:"+this.resizerId+"> Setting new css: ", newCssString);
this.injectCss(newCssString); this.injectCss(newCssString);
this.userCss = newCssString; this.userCss = newCssString;
} else if (newCssString !== this.userCss) { } else if (newCssString !== this.userCss) {
this.logger.log('info', ['debug', 'resizer'], "[Resizer::setStyleString] <rid:"+this.resizerId+"> Replacing css.\nOld string:", this.userCss, "\nNew string:", newCssString);
// we only replace css if it // we only replace css if it
this.replaceCss(this.userCss, newCssString); this.replaceCss(this.userCss, newCssString);
this.userCss = newCssString; this.userCss = newCssString;
} else {
this.logger.log('info', ['debug', 'resizer'], "[Resizer::setStyleString] <rid:"+this.resizerId+"> Existing css is still valid, doing nothing.");
} }
} }
} }

View File

@ -2,7 +2,7 @@
"manifest_version": 2, "manifest_version": 2,
"name": "Ultrawidify", "name": "Ultrawidify",
"description": "Removes black bars on ultrawide videos and offers advanced options to fix aspect ratio.", "description": "Removes black bars on ultrawide videos and offers advanced options to fix aspect ratio.",
"version": "4.4.7", "version": "4.4.7.2",
"applications": { "applications": {
"gecko": { "gecko": {
"id": "{cf02b1a7-a01a-4e37-a609-516a283f1ed3}" "id": "{cf02b1a7-a01a-4e37-a609-516a283f1ed3}"
@ -46,7 +46,6 @@
"ext/*", "ext/*",
"res/fonts/*", "res/fonts/*",
"res/css/*", "res/css/*",
"res/img/settings/about-bg.png" "res/img/settings/about-bg.png"
], ],
"permissions": [ "permissions": [

View File

@ -4,30 +4,13 @@
<p>Full changelog for older versions <a href="https://github.com/tamius-han/ultrawidify/blob/master/CHANGELOG.md">is available here</a>.</p> <p>Full changelog for older versions <a href="https://github.com/tamius-han/ultrawidify/blob/master/CHANGELOG.md">is available here</a>.</p>
<p class="label">4.4.7</p> <p class="label">4.4.7</p>
<ul> <ul>
<li><b>[4.4.7.1]</b> CSS fixes</li>
<li><b>[4.4.7.1~2]</b> Delay CSS changes if video dimensions are invalid (attempt to fix youtube alignment problems
that appear in certain circumstances). 4.4.7.2 increased number of retries.
</li>
<li>Removed unnecessary font files and image files from the package.</li> <li>Removed unnecessary font files and image files from the package.</li>
<li>(For testing/debugging purposes) Logger UI in swatter mode is now somewhat functional and user-friendly.</li> <li>(For testing/debugging purposes) Logger UI in swatter mode is now somewhat functional and user-friendly.</li>
</ul> </ul>
<template v-if="BrowserDetect.chrome">
<p>Due to factors beyond my control, Chrome version of this extension has missed the last three patches.</p>
<ul>
<li><b>4.4.6</b>
<ul>
<li>Ensured that Vue part of the content script (logger UI) only loads when necessary in order to fix breakage on certain sites (<a href="https://github.com/tamius-han/ultrawidify/issues/96">#96</a>).</li>
<li>Disabling (or enabling, if running in whitelist-only mode) specific sites used to not work (<a href="https://github.com/tamius-han/ultrawidify/issues/91">#91</a>). This issue appears to have been fixed.</li>
<li>Default stretch mode for sites is now probably being observed, too (<a href="https://github.com/tamius-han/ultrawidify/issues/94">#94</a>).</li>
<li>Fixed netflix (and possibly disney+ please provide feedback for disney+ as I am unable to test it due to regional restrictions)</li>
</ul>
</li>
<li><b>4.4.5</b>
<ul>
<li>Extension no longer requires <code>allTabs</code> and <code>webNavigation</code> permissions</li>
<li>Some CSS on the logger popup was not scoped, causing display issues with some sites (<a href="https://github.com/tamius-han/ultrawidify/issues/92">#92</a>)</li>
<li>Fix some additional issues with video alignment when changing videos on autoplay</li>
</ul></li>
</ul>
</template>
</div> </div>
</template> </template>
<script> <script>

View File

@ -1,6 +1,5 @@
@import "colors.scss"; @import "colors.scss";
@import "/res/css/font/overpass.css"; @import "fonts.scss";
@import "/res/css/font/overpass-mono.css";
@import "flex.scss"; @import "flex.scss";
// @import "form.scss"; // @import "form.scss";

View File

@ -1,29 +0,0 @@
@font-face {
font-family: 'overpass-mono';
src: url('../../fonts/overpass-mono-webfont/overpass-mono-light.woff2') format('woff2');
font-weight: 300;
font-style: normal;
}
@font-face {
font-family: 'overpass-mono';
src: url('../../fonts/overpass-mono-webfont/overpass-mono-regular.woff2') format('woff2');
font-weight: 400;
font-style: normal;
}
@font-face {
font-family: 'overpass-mono';
src: url('../../fonts/overpass-mono-webfont/overpass-mono-semibold.woff2') format('woff2');
font-weight: 500;
font-style: normal;
}
@font-face {
font-family: 'overpass-mono';
src: url('../../fonts/overpass-mono-webfont/overpass-mono-bold.woff2') format('woff2');
font-weight: 600;
font-style: normal;
}

111
src/res/css/fonts.scss Normal file
View File

@ -0,0 +1,111 @@
@font-face {
font-family: 'Overpass';
src: url('/res/fonts/overpass-webfont/overpass-thin.woff2') format('woff2'); /* Super Modern Browsers */
font-weight: 200;
font-style: normal;
}
@font-face {
font-family: 'Overpass';
src: url('/res/fonts/overpass-webfont/overpass-thin-italic.woff2') format('woff2');
font-weight: 200;
font-style: italic;
}
@font-face {
font-family: 'Overpass';
src: url('/res/fonts/overpass-webfont/overpass-extralight.woff2') format('woff2');
font-weight: 300;
font-style: normal;
}
@font-face {
font-family: 'Overpass';
src: url('/res/fonts/overpass-webfont/overpass-extralight-italic.woff2') format('woff2');
font-weight: 300;
font-style: italic;
}
@font-face {
font-family: 'Overpass';
src: url('/res/fonts/overpass-webfont/overpass-light.woff2') format('woff2');
font-weight: 400;
font-style: normal;
}
@font-face {
font-family: 'Overpass';
src: url('/res/fonts/overpass-webfont/overpass-light-italic.woff2') format('woff2');
font-weight: 400;
font-style: italic;
}
@font-face {
font-family: 'Overpass';
src: url('/res/fonts/overpass-webfont/overpass-regular.woff2') format('woff2');
font-weight: 500;
font-style: normal;
}
@font-face {
font-family: 'Overpass';
src: url('/res/fonts/overpass-webfont/overpass-italic.woff2') format('woff2');
font-weight: 500;
font-style: italic;
}
@font-face {
font-family: 'Overpass';
src: url('/res/fonts/overpass-webfont/overpass-semibold.woff2') format('woff2');
font-weight: 600;
font-style: normal;
}
@font-face {
font-family: 'Overpass';
src: url('/res/fonts/overpass-webfont/overpass-semibold-italic.woff2') format('woff2');
font-weight: 600;
font-style: italic;
}
@font-face {
font-family: 'Overpass';
src: url('/res/fonts/overpass-webfont/overpass-bold.woff2') format('woff2');
font-weight: 700;
font-style: normal;
}
@font-face {
font-family: 'Overpass';
src: url('/res/fonts/overpass-webfont/overpass-bold-italic.woff2') format('woff2');
font-weight: 700;
font-style: italic;
}
@font-face {
font-family: 'Overpass mono';
src: url('/res/fonts/overpass-mono-webfont/overpass-mono-light.woff2') format('woff2');
font-weight: 300;
font-style: normal;
}
@font-face {
font-family: 'Overpass mono';
src: url('/res/fonts/overpass-mono-webfont/overpass-mono-regular.woff2') format('woff2');
font-weight: 400;
font-style: normal;
}
@font-face {
font-family: 'Overpass mono';
src: url('/res/fonts/overpass-mono-webfont/overpass-mono-semibold.woff2') format('woff2');
font-weight: 500;
font-style: normal;
}
@font-face {
font-family: 'Overpass mono';
src: url('/res/fonts/overpass-mono-webfont/overpass-mono-bold.woff2') format('woff2');
font-weight: 600;
font-style: normal;
}

View File

@ -1,51 +0,0 @@
@font-face {
font-family: 'overpass-mono';
src: url('overpass-mono-light.eot');
src: url('overpass-mono-light.eot?#iefix') format('embedded-opentype'),
url('overpass-mono-light.woff2') format('woff2'),
url('overpass-mono-light.woff') format('woff'),
url('overpass-mono-light.ttf') format('truetype');
font-weight: 300;
font-style: normal;
}
@font-face {
font-family: 'overpass-mono';
src: url('overpass-mono-regular.eot');
src: url('overpass-mono-regular.eot?#iefix') format('embedded-opentype'),
url('overpass-mono-regular.woff2') format('woff2'),
url('overpass-mono-regular.woff') format('woff'),
url('overpass-mono-regular.ttf') format('truetype');
font-weight: 400;
font-style: normal;
}
@font-face {
font-family: 'overpass-mono';
src: url('overpass-mono-semibold.eot');
src: url('overpass-mono-semibold.eot?#iefix') format('embedded-opentype'),
url('overpass-mono-semibold.woff2') format('woff2'),
url('overpass-mono-semibold.woff') format('woff'),
url('overpass-mono-semibold.ttf') format('truetype');
font-weight: 500;
font-style: normal;
}
@font-face {
font-family: 'overpass-mono';
src: url('overpass-mono-bold.eot');
src: url('overpass-mono-bold.eot?#iefix') format('embedded-opentype'),
url('overpass-mono-bold.woff2') format('woff2'),
url('overpass-mono-bold.woff') format('woff'),
url('overpass-mono-bold.ttf') format('truetype');
font-weight: 600;
font-style: normal;
}

View File

@ -1,189 +0,0 @@
@font-face {
font-family: 'overpass';
src: url('overpass-thin.eot'); /* IE9 Compat Modes */
src: url('overpass-thin.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('overpass-thin.woff2') format('woff2'), /* Super Modern Browsers */
url('overpass-thin.woff') format('woff'), /* Pretty Modern Browsers */
url('overpass-thin.ttf') format('truetype'); /* Safari, Android, iOS */
font-weight: 200;
font-style: normal;
}
@font-face {
font-family: 'overpass';
src: url('overpass-thin-italic.eot');
src: url('overpass-thin-italic.eot?#iefix') format('embedded-opentype'),
url('overpass-thin-italic.woff2') format('woff2'),
url('overpass-thin-italic.woff') format('woff'),
url('overpass-thin-italic.ttf') format('truetype');
font-weight: 200;
font-style: italic;
}
@font-face {
font-family: 'overpass';
src: url('overpass-extralight.eot');
src: url('overpass-extralight.eot?#iefix') format('embedded-opentype'),
url('overpass-extralight.woff2') format('woff2'),
url('overpass-extralight.woff') format('woff'),
url('overpass-extralight.ttf') format('truetype');
font-weight: 300;
font-style: normal;
}
@font-face {
font-family: 'overpass';
src: url('overpass-extralight-italic.eot');
src: url('overpass-extralight-italic.eot?#iefix') format('embedded-opentype'),
url('overpass-extralight-italic.woff2') format('woff2'),
url('overpass-extralight-italic.woff') format('woff'),
url('overpass-extralight-italic.ttf') format('truetype');
font-weight: 300;
font-style: italic;
}
@font-face {
font-family: 'overpass';
src: url('overpass-light.eot');
src: url('overpass-light.eot?#iefix') format('embedded-opentype'),
url('overpass-light.woff2') format('woff2'),
url('overpass-light.woff') format('woff'),
url('overpass-light.ttf') format('truetype');
font-weight: 400;
font-style: normal;
}
@font-face {
font-family: 'overpass';
src: url('overpass-light-italic.eot');
src: url('overpass-light-italic.eot?#iefix') format('embedded-opentype'),
url('overpass-light-italic.woff2') format('woff2'),
url('overpass-light-italic.woff') format('woff'),
url('overpass-light-italic.ttf') format('truetype');
font-weight: 400;
font-style: italic;
}
@font-face {
font-family: 'overpass';
src: url('overpass-regular.eot');
src: url('overpass-regular.eot?#iefix') format('embedded-opentype'),
url('overpass-regular.woff2') format('woff2'),
url('overpass-regular.woff') format('woff'),
url('overpass-regular.ttf') format('truetype');
font-weight: 500;
font-style: normal;
}
@font-face {
font-family: 'overpass';
src: url('overpass-italic.eot');
src: url('overpass-italic.eot?#iefix') format('embedded-opentype'),
url('overpass-italic.woff2') format('woff2'),
url('overpass-italic.woff') format('woff'),
url('overpass-italic.ttf') format('truetype');
font-weight: 500;
font-style: italic;
}
@font-face {
font-family: 'overpass';
src: url('overpass-semibold.eot');
src: url('overpass-semibold.eot?#iefix') format('embedded-opentype'),
url('overpass-semibold.woff2') format('woff2'),
url('overpass-semibold.woff') format('woff'),
url('overpass-semibold.ttf') format('truetype');
font-weight: 600;
font-style: normal;
}
@font-face {
font-family: 'overpass';
src: url('overpass-semibold-italic.eot');
src: url('overpass-semibold-italic.eot?#iefix') format('embedded-opentype'),
url('overpass-semibold-italic.woff2') format('woff2'),
url('overpass-semibold-italic.woff') format('woff'),
url('overpass-semibold-italic.ttf') format('truetype');
font-weight: 600;
font-style: italic;
}
@font-face {
font-family: 'overpass';
src: url('overpass-bold.eot');
src: url('overpass-bold.eot?#iefix') format('embedded-opentype'),
url('overpass-bold.woff2') format('woff2'),
url('overpass-bold.woff') format('woff'),
url('overpass-bold.ttf') format('truetype');
font-weight: 700;
font-style: normal;
}
@font-face {
font-family: 'overpass';
src: url('overpass-bold-italic.eot');
src: url('overpass-bold-italic.eot?#iefix') format('embedded-opentype'),
url('overpass-bold-italic.woff2') format('woff2'),
url('overpass-bold-italic.woff') format('woff'),
url('overpass-bold-italic.ttf') format('truetype');
font-weight: 700;
font-style: italic;
}
@font-face {
font-family: 'overpass';
src: url('overpass-extrabold.eot');
src: url('overpass-extrabold.eot?#iefix') format('embedded-opentype'),
url('overpass-extrabold.woff2') format('woff2'),
url('overpass-extrabold.woff') format('woff'),
url('overpass-extrabold.ttf') format('truetype');
font-weight: 800;
font-style: normal;
}
@font-face {
font-family: 'overpass';
src: url('overpass-extrabold-italic.eot');
src: url('overpass-extrabold-italic.eot?#iefix') format('embedded-opentype'),
url('overpass-extrabold-italic.woff2') format('woff2'),
url('overpass-extrabold-italic.woff') format('woff'),
url('overpass-extrabold-italic.ttf') format('truetype');
font-weight: 800;
font-style: italic;
}
@font-face {
font-family: 'overpass';
src: url('overpass-heavy.eot');
src: url('overpass-heavy.eot?#iefix') format('embedded-opentype'),
url('overpass-heavy.woff2') format('woff2'),
url('overpass-heavy.woff') format('woff'),
url('overpass-heavy.ttf') format('truetype');
font-weight: 900;
font-style: normal;
}
@font-face {
font-family: 'overpass';
src: url('overpass-heavy-italic.eot');
src: url('overpass-heavy-italic.eot?#iefix') format('embedded-opentype'),
url('overpass-heavy-italic.woff2') format('woff2'),
url('overpass-heavy-italic.woff') format('woff'),
url('overpass-heavy-italic.ttf') format('truetype');
font-weight: 900;
font-style: italic;
}