From 9dc767041d35e516931655284e94d958ef7a49e1 Mon Sep 17 00:00:00 2001 From: Emily Eisenberg Date: Sun, 14 Sep 2014 19:31:38 -0700 Subject: [PATCH] Improve build process Summary: Improve the build process by combining the CSS files, automatically selecting font files to include, and building .tar.gz and .zip files. Test Plan: - Make sure tests work - Make sure huxley screenshots didn't change - Make sure zip and tar.gz files contain only files we want to distribute Reviewers: alpert Reviewed By: alpert Differential Revision: http://phabricator.khanacademy.org/D13159 --- Makefile | 30 +++++- static/fonts.css | 239 +++++++++++++++++++++++++++++++++++++++++ static/fonts/fonts.css | 239 ----------------------------------------- static/index.html | 2 +- static/katex.less | 9 +- test/huxley/test.html | 2 +- 6 files changed, 269 insertions(+), 252 deletions(-) create mode 100644 static/fonts.css delete mode 100644 static/fonts/fonts.css diff --git a/Makefile b/Makefile index c2a058cab..4e58631b9 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ -.PHONY: build setup copy serve clean metrics test -build: setup build/katex.min.js build/katex.min.css compress +.PHONY: build setup copy serve clean metrics test zip +build: setup build/katex.min.js build/katex.min.css zip compress setup: npm install @@ -13,9 +13,33 @@ build/katex.min.js: build/katex.js build/katex.less.css: static/katex.less ./node_modules/.bin/lessc $< > $@ -build/katex.min.css: build/katex.less.css +build/katex.css: build/katex.less.css static/fonts.css + cat $^ > $@ + +build/katex.min.css: build/katex.css ./node_modules/.bin/cleancss -o $@ $< +.PHONY: build/fonts +build/fonts: + rm -rf $@ + mkdir $@ + for font in $(shell grep "font" static/katex.less | grep -o "KaTeX_\w\+" | cut -d" " -f 2 | sort | uniq); do \ + cp static/fonts/$$font* $@; \ + done + +.PHONY: build/katex +build/katex: build/katex.min.js build/katex.min.css build/fonts + mkdir -p build/katex + cp -r $^ build/katex + +build/katex.tar.gz: build/katex + cd build && tar czf katex.tar.gz katex/ + +build/katex.zip: build/katex + cd build && zip -rq katex.zip katex/ + +zip: build/katex.tar.gz build/katex.zip + compress: build/katex.min.js build/katex.min.css @$(eval JSSIZE!=gzip -c build/katex.min.js | wc -c) @$(eval CSSSIZE!=gzip -c build/katex.min.css | wc -c) diff --git a/static/fonts.css b/static/fonts.css new file mode 100644 index 000000000..e9c7b1289 --- /dev/null +++ b/static/fonts.css @@ -0,0 +1,239 @@ +@font-face { + font-family: 'KaTeX_AMS'; + src: url('fonts/KaTeX_AMS-Regular.eot'); + src: url('fonts/KaTeX_AMS-Regular.eot?#iefix') format('embedded-opentype'), + url('fonts/KaTeX_AMS-Regular.woff') format('woff'), + url('fonts/KaTeX_AMS-Regular.ttf') format('truetype'); + font-weight: normal; + font-style: normal; +} + +@font-face { + font-family: 'KaTeX_Caligraphic'; + src: url('fonts/KaTeX_Caligraphic-Bold.eot'); + src: url('fonts/KaTeX_Caligraphic-Bold.eot?#iefix') format('embedded-opentype'), + url('fonts/KaTeX_Caligraphic-Bold.woff') format('woff'), + url('fonts/KaTeX_Caligraphic-Bold.ttf') format('truetype'); + font-weight: bold; + font-style: normal; +} + +@font-face { + font-family: 'KaTeX_Caligraphic'; + src: url('fonts/KaTeX_Caligraphic-Regular.eot'); + src: url('fonts/KaTeX_Caligraphic-Regular.eot?#iefix') format('embedded-opentype'), + url('fonts/KaTeX_Caligraphic-Regular.woff') format('woff'), + url('fonts/KaTeX_Caligraphic-Regular.ttf') format('truetype'); + font-weight: normal; + font-style: normal; +} + +@font-face { + font-family: 'KaTeX_Fraktur'; + src: url('fonts/KaTeX_Fraktur-Bold.eot'); + src: url('fonts/KaTeX_Fraktur-Bold.eot?#iefix') format('embedded-opentype'), + url('fonts/KaTeX_Fraktur-Bold.woff') format('woff'), + url('fonts/KaTeX_Fraktur-Bold.ttf') format('truetype'); + font-weight: bold; + font-style: normal; +} + +@font-face { + font-family: 'KaTeX_Fraktur'; + src: url('fonts/KaTeX_Fraktur-Regular.eot'); + src: url('fonts/KaTeX_Fraktur-Regular.eot?#iefix') format('embedded-opentype'), + url('fonts/KaTeX_Fraktur-Regular.woff') format('woff'), + url('fonts/KaTeX_Fraktur-Regular.ttf') format('truetype'); + font-weight: normal; + font-style: normal; +} + +@font-face { + font-family: 'KaTeX_Greek'; + src: url('fonts/KaTeX_Greek-Bold.eot'); + src: url('fonts/KaTeX_Greek-Bold.eot?#iefix') format('embedded-opentype'), + url('fonts/KaTeX_Greek-Bold.woff') format('woff'), + url('fonts/KaTeX_Greek-Bold.ttf') format('truetype'); + font-weight: bold; + font-style: normal; +} + +@font-face { + font-family: 'KaTeX_Greek'; + src: url('fonts/KaTeX_Greek-BoldItalic.eot'); + src: url('fonts/KaTeX_Greek-BoldItalic.eot?#iefix') format('embedded-opentype'), + url('fonts/KaTeX_Greek-BoldItalic.woff') format('woff'), + url('fonts/KaTeX_Greek-BoldItalic.ttf') format('truetype'); + font-weight: bold; + font-style: italic; +} + +@font-face { + font-family: 'KaTeX_Greek'; + src: url('fonts/KaTeX_Greek-Italic.eot'); + src: url('fonts/KaTeX_Greek-Italic.eot?#iefix') format('embedded-opentype'), + url('fonts/KaTeX_Greek-Italic.woff') format('woff'), + url('fonts/KaTeX_Greek-Italic.ttf') format('truetype'); + font-weight: normal; + font-style: italic; +} + +@font-face { + font-family: 'KaTeX_Greek'; + src: url('fonts/KaTeX_Greek-Regular.eot'); + src: url('fonts/KaTeX_Greek-Regular.eot?#iefix') format('embedded-opentype'), + url('fonts/KaTeX_Greek-Regular.woff') format('woff'), + url('fonts/KaTeX_Greek-Regular.ttf') format('truetype'); + font-weight: normal; + font-style: normal; +} + +@font-face { + font-family: 'KaTeX_Main'; + src: url('fonts/KaTeX_Main-Bold.eot'); + src: url('fonts/KaTeX_Main-Bold.eot?#iefix') format('embedded-opentype'), + url('fonts/KaTeX_Main-Bold.woff') format('woff'), + url('fonts/KaTeX_Main-Bold.ttf') format('truetype'); + font-weight: bold; + font-style: normal; +} + +@font-face { + font-family: 'KaTeX_Main'; + src: url('fonts/KaTeX_Main-Italic.eot'); + src: url('fonts/KaTeX_Main-Italic.eot?#iefix') format('embedded-opentype'), + url('fonts/KaTeX_Main-Italic.woff') format('woff'), + url('fonts/KaTeX_Main-Italic.ttf') format('truetype'); + font-weight: normal; + font-style: italic; +} + +@font-face { + font-family: 'KaTeX_Main'; + src: url('fonts/KaTeX_Main-Regular.eot'); + src: url('fonts/KaTeX_Main-Regular.eot?#iefix') format('embedded-opentype'), + url('fonts/KaTeX_Main-Regular.woff') format('woff'), + url('fonts/KaTeX_Main-Regular.ttf') format('truetype'); + font-weight: normal; + font-style: normal; +} + +@font-face { + font-family: 'KaTeX_Math'; + src: url('fonts/KaTeX_Math-BoldItalic.eot'); + src: url('fonts/KaTeX_Math-BoldItalic.eot?#iefix') format('embedded-opentype'), + url('fonts/KaTeX_Math-BoldItalic.woff') format('woff'), + url('fonts/KaTeX_Math-BoldItalic.ttf') format('truetype'); + font-weight: bold; + font-style: italic; +} + +@font-face { + font-family: 'KaTeX_Math'; + src: url('fonts/KaTeX_Math-Italic.eot'); + src: url('fonts/KaTeX_Math-Italic.eot?#iefix') format('embedded-opentype'), + url('fonts/KaTeX_Math-Italic.woff') format('woff'), + url('fonts/KaTeX_Math-Italic.ttf') format('truetype'); + font-weight: normal; + font-style: italic; +} + +@font-face { + font-family: 'KaTeX_Math'; + src: url('fonts/KaTeX_Math-Regular.eot'); + src: url('fonts/KaTeX_Math-Regular.eot?#iefix') format('embedded-opentype'), + url('fonts/KaTeX_Math-Regular.woff') format('woff'), + url('fonts/KaTeX_Math-Regular.ttf') format('truetype'); + font-weight: normal; + font-style: normal; +} + +@font-face { + font-family: 'KaTeX_SansSerif'; + src: url('fonts/KaTeX_SansSerif-Bold.eot'); + src: url('fonts/KaTeX_SansSerif-Bold.eot?#iefix') format('embedded-opentype'), + url('fonts/KaTeX_SansSerif-Bold.woff') format('woff'), + url('fonts/KaTeX_SansSerif-Bold.ttf') format('truetype'); + font-weight: bold; + font-style: normal; +} + +@font-face { + font-family: 'KaTeX_SansSerif'; + src: url('fonts/KaTeX_SansSerif-Italic.eot'); + src: url('fonts/KaTeX_SansSerif-Italic.eot?#iefix') format('embedded-opentype'), + url('fonts/KaTeX_SansSerif-Italic.woff') format('woff'), + url('fonts/KaTeX_SansSerif-Italic.ttf') format('truetype'); + font-weight: normal; + font-style: italic; +} + +@font-face { + font-family: 'KaTeX_SansSerif'; + src: url('fonts/KaTeX_SansSerif-Regular.eot'); + src: url('fonts/KaTeX_SansSerif-Regular.eot?#iefix') format('embedded-opentype'), + url('fonts/KaTeX_SansSerif-Regular.woff') format('woff'), + url('fonts/KaTeX_SansSerif-Regular.ttf') format('truetype'); + font-weight: normal; + font-style: normal; +} + +@font-face { + font-family: 'KaTeX_Script'; + src: url('fonts/KaTeX_Script-Regular.eot'); + src: url('fonts/KaTeX_Script-Regular.eot?#iefix') format('embedded-opentype'), + url('fonts/KaTeX_Script-Regular.woff') format('woff'), + url('fonts/KaTeX_Script-Regular.ttf') format('truetype'); + font-weight: normal; + font-style: normal; +} + +@font-face { + font-family: 'KaTeX_Size1'; + src: url('fonts/KaTeX_Size1-Regular.eot'); + src: url('fonts/KaTeX_Size1-Regular.eot?#iefix') format('embedded-opentype'), + url('fonts/KaTeX_Size1-Regular.woff') format('woff'), + url('fonts/KaTeX_Size1-Regular.ttf') format('truetype'); + font-weight: normal; + font-style: normal; +} + +@font-face { + font-family: 'KaTeX_Size2'; + src: url('fonts/KaTeX_Size2-Regular.eot'); + src: url('fonts/KaTeX_Size2-Regular.eot?#iefix') format('embedded-opentype'), + url('fonts/KaTeX_Size2-Regular.woff') format('woff'), + url('fonts/KaTeX_Size2-Regular.ttf') format('truetype'); + font-weight: normal; + font-style: normal; +} + +@font-face { + font-family: 'KaTeX_Size3'; + src: url('fonts/KaTeX_Size3-Regular.eot'); + src: url('fonts/KaTeX_Size3-Regular.eot?#iefix') format('embedded-opentype'), + url('fonts/KaTeX_Size3-Regular.woff') format('woff'), + url('fonts/KaTeX_Size3-Regular.ttf') format('truetype'); + font-weight: normal; + font-style: normal; +} + +@font-face { + font-family: 'KaTeX_Size4'; + src: url('fonts/KaTeX_Size4-Regular.eot'); + src: url('fonts/KaTeX_Size4-Regular.eot?#iefix') format('embedded-opentype'), + url('fonts/KaTeX_Size4-Regular.woff') format('woff'), + url('fonts/KaTeX_Size4-Regular.ttf') format('truetype'); + font-weight: normal; + font-style: normal; +} + +@font-face { + font-family: 'KaTeX_Typewriter'; + src: url('fonts/KaTeX_Typewriter-Regular.eot'); + src: url('fonts/KaTeX_Typewriter-Regular.eot?#iefix') format('embedded-opentype'), + url('fonts/KaTeX_Typewriter-Regular.woff') format('woff'), + url('fonts/KaTeX_Typewriter-Regular.ttf') format('truetype'); + font-weight: normal; + font-style: normal; +} diff --git a/static/fonts/fonts.css b/static/fonts/fonts.css deleted file mode 100644 index 873b0a58c..000000000 --- a/static/fonts/fonts.css +++ /dev/null @@ -1,239 +0,0 @@ -@font-face { - font-family: 'KaTeX_AMS'; - src: url('KaTeX_AMS-Regular.eot'); - src: url('KaTeX_AMS-Regular.eot?#iefix') format('embedded-opentype'), - url('KaTeX_AMS-Regular.woff') format('woff'), - url('KaTeX_AMS-Regular.ttf') format('truetype'); - font-weight: normal; - font-style: normal; -} - -@font-face { - font-family: 'KaTeX_Caligraphic'; - src: url('KaTeX_Caligraphic-Bold.eot'); - src: url('KaTeX_Caligraphic-Bold.eot?#iefix') format('embedded-opentype'), - url('KaTeX_Caligraphic-Bold.woff') format('woff'), - url('KaTeX_Caligraphic-Bold.ttf') format('truetype'); - font-weight: bold; - font-style: normal; -} - -@font-face { - font-family: 'KaTeX_Caligraphic'; - src: url('KaTeX_Caligraphic-Regular.eot'); - src: url('KaTeX_Caligraphic-Regular.eot?#iefix') format('embedded-opentype'), - url('KaTeX_Caligraphic-Regular.woff') format('woff'), - url('KaTeX_Caligraphic-Regular.ttf') format('truetype'); - font-weight: normal; - font-style: normal; -} - -@font-face { - font-family: 'KaTeX_Fraktur'; - src: url('KaTeX_Fraktur-Bold.eot'); - src: url('KaTeX_Fraktur-Bold.eot?#iefix') format('embedded-opentype'), - url('KaTeX_Fraktur-Bold.woff') format('woff'), - url('KaTeX_Fraktur-Bold.ttf') format('truetype'); - font-weight: bold; - font-style: normal; -} - -@font-face { - font-family: 'KaTeX_Fraktur'; - src: url('KaTeX_Fraktur-Regular.eot'); - src: url('KaTeX_Fraktur-Regular.eot?#iefix') format('embedded-opentype'), - url('KaTeX_Fraktur-Regular.woff') format('woff'), - url('KaTeX_Fraktur-Regular.ttf') format('truetype'); - font-weight: normal; - font-style: normal; -} - -@font-face { - font-family: 'KaTeX_Greek'; - src: url('KaTeX_Greek-Bold.eot'); - src: url('KaTeX_Greek-Bold.eot?#iefix') format('embedded-opentype'), - url('KaTeX_Greek-Bold.woff') format('woff'), - url('KaTeX_Greek-Bold.ttf') format('truetype'); - font-weight: bold; - font-style: normal; -} - -@font-face { - font-family: 'KaTeX_Greek'; - src: url('KaTeX_Greek-BoldItalic.eot'); - src: url('KaTeX_Greek-BoldItalic.eot?#iefix') format('embedded-opentype'), - url('KaTeX_Greek-BoldItalic.woff') format('woff'), - url('KaTeX_Greek-BoldItalic.ttf') format('truetype'); - font-weight: bold; - font-style: italic; -} - -@font-face { - font-family: 'KaTeX_Greek'; - src: url('KaTeX_Greek-Italic.eot'); - src: url('KaTeX_Greek-Italic.eot?#iefix') format('embedded-opentype'), - url('KaTeX_Greek-Italic.woff') format('woff'), - url('KaTeX_Greek-Italic.ttf') format('truetype'); - font-weight: normal; - font-style: italic; -} - -@font-face { - font-family: 'KaTeX_Greek'; - src: url('KaTeX_Greek-Regular.eot'); - src: url('KaTeX_Greek-Regular.eot?#iefix') format('embedded-opentype'), - url('KaTeX_Greek-Regular.woff') format('woff'), - url('KaTeX_Greek-Regular.ttf') format('truetype'); - font-weight: normal; - font-style: normal; -} - -@font-face { - font-family: 'KaTeX_Main'; - src: url('KaTeX_Main-Bold.eot'); - src: url('KaTeX_Main-Bold.eot?#iefix') format('embedded-opentype'), - url('KaTeX_Main-Bold.woff') format('woff'), - url('KaTeX_Main-Bold.ttf') format('truetype'); - font-weight: bold; - font-style: normal; -} - -@font-face { - font-family: 'KaTeX_Main'; - src: url('KaTeX_Main-Italic.eot'); - src: url('KaTeX_Main-Italic.eot?#iefix') format('embedded-opentype'), - url('KaTeX_Main-Italic.woff') format('woff'), - url('KaTeX_Main-Italic.ttf') format('truetype'); - font-weight: normal; - font-style: italic; -} - -@font-face { - font-family: 'KaTeX_Main'; - src: url('KaTeX_Main-Regular.eot'); - src: url('KaTeX_Main-Regular.eot?#iefix') format('embedded-opentype'), - url('KaTeX_Main-Regular.woff') format('woff'), - url('KaTeX_Main-Regular.ttf') format('truetype'); - font-weight: normal; - font-style: normal; -} - -@font-face { - font-family: 'KaTeX_Math'; - src: url('KaTeX_Math-BoldItalic.eot'); - src: url('KaTeX_Math-BoldItalic.eot?#iefix') format('embedded-opentype'), - url('KaTeX_Math-BoldItalic.woff') format('woff'), - url('KaTeX_Math-BoldItalic.ttf') format('truetype'); - font-weight: bold; - font-style: italic; -} - -@font-face { - font-family: 'KaTeX_Math'; - src: url('KaTeX_Math-Italic.eot'); - src: url('KaTeX_Math-Italic.eot?#iefix') format('embedded-opentype'), - url('KaTeX_Math-Italic.woff') format('woff'), - url('KaTeX_Math-Italic.ttf') format('truetype'); - font-weight: normal; - font-style: italic; -} - -@font-face { - font-family: 'KaTeX_Math'; - src: url('KaTeX_Math-Regular.eot'); - src: url('KaTeX_Math-Regular.eot?#iefix') format('embedded-opentype'), - url('KaTeX_Math-Regular.woff') format('woff'), - url('KaTeX_Math-Regular.ttf') format('truetype'); - font-weight: normal; - font-style: normal; -} - -@font-face { - font-family: 'KaTeX_SansSerif'; - src: url('KaTeX_SansSerif-Bold.eot'); - src: url('KaTeX_SansSerif-Bold.eot?#iefix') format('embedded-opentype'), - url('KaTeX_SansSerif-Bold.woff') format('woff'), - url('KaTeX_SansSerif-Bold.ttf') format('truetype'); - font-weight: bold; - font-style: normal; -} - -@font-face { - font-family: 'KaTeX_SansSerif'; - src: url('KaTeX_SansSerif-Italic.eot'); - src: url('KaTeX_SansSerif-Italic.eot?#iefix') format('embedded-opentype'), - url('KaTeX_SansSerif-Italic.woff') format('woff'), - url('KaTeX_SansSerif-Italic.ttf') format('truetype'); - font-weight: normal; - font-style: italic; -} - -@font-face { - font-family: 'KaTeX_SansSerif'; - src: url('KaTeX_SansSerif-Regular.eot'); - src: url('KaTeX_SansSerif-Regular.eot?#iefix') format('embedded-opentype'), - url('KaTeX_SansSerif-Regular.woff') format('woff'), - url('KaTeX_SansSerif-Regular.ttf') format('truetype'); - font-weight: normal; - font-style: normal; -} - -@font-face { - font-family: 'KaTeX_Script'; - src: url('KaTeX_Script-Regular.eot'); - src: url('KaTeX_Script-Regular.eot?#iefix') format('embedded-opentype'), - url('KaTeX_Script-Regular.woff') format('woff'), - url('KaTeX_Script-Regular.ttf') format('truetype'); - font-weight: normal; - font-style: normal; -} - -@font-face { - font-family: 'KaTeX_Size1'; - src: url('KaTeX_Size1-Regular.eot'); - src: url('KaTeX_Size1-Regular.eot?#iefix') format('embedded-opentype'), - url('KaTeX_Size1-Regular.woff') format('woff'), - url('KaTeX_Size1-Regular.ttf') format('truetype'); - font-weight: normal; - font-style: normal; -} - -@font-face { - font-family: 'KaTeX_Size2'; - src: url('KaTeX_Size2-Regular.eot'); - src: url('KaTeX_Size2-Regular.eot?#iefix') format('embedded-opentype'), - url('KaTeX_Size2-Regular.woff') format('woff'), - url('KaTeX_Size2-Regular.ttf') format('truetype'); - font-weight: normal; - font-style: normal; -} - -@font-face { - font-family: 'KaTeX_Size3'; - src: url('KaTeX_Size3-Regular.eot'); - src: url('KaTeX_Size3-Regular.eot?#iefix') format('embedded-opentype'), - url('KaTeX_Size3-Regular.woff') format('woff'), - url('KaTeX_Size3-Regular.ttf') format('truetype'); - font-weight: normal; - font-style: normal; -} - -@font-face { - font-family: 'KaTeX_Size4'; - src: url('KaTeX_Size4-Regular.eot'); - src: url('KaTeX_Size4-Regular.eot?#iefix') format('embedded-opentype'), - url('KaTeX_Size4-Regular.woff') format('woff'), - url('KaTeX_Size4-Regular.ttf') format('truetype'); - font-weight: normal; - font-style: normal; -} - -@font-face { - font-family: 'KaTeX_Typewriter'; - src: url('KaTeX_Typewriter-Regular.eot'); - src: url('KaTeX_Typewriter-Regular.eot?#iefix') format('embedded-opentype'), - url('KaTeX_Typewriter-Regular.woff') format('woff'), - url('KaTeX_Typewriter-Regular.ttf') format('truetype'); - font-weight: normal; - font-style: normal; -} diff --git a/static/index.html b/static/index.html index 4178607c3..3183ef3ef 100644 --- a/static/index.html +++ b/static/index.html @@ -3,7 +3,7 @@ KaTeX Test - + diff --git a/static/katex.less b/static/katex.less index 20761ea0a..2bd18924e 100644 --- a/static/katex.less +++ b/static/katex.less @@ -1,12 +1,5 @@ -/* -things to do: -\sum, \int, \lim -\sqrt -big parens -*/ - .katex { - font: normal 1.21em katex_main; + font: normal 1.21em KaTeX_Main; line-height: 1.2; white-space: nowrap; diff --git a/test/huxley/test.html b/test/huxley/test.html index b71267181..35be79c01 100644 --- a/test/huxley/test.html +++ b/test/huxley/test.html @@ -3,7 +3,7 @@ Huxley test - +