├── LICENSE.md
├── README.md
├── Woffle.app
└── Contents
│ ├── Info.plist
│ ├── MacOS
│ └── Woffle
│ └── Resources
│ ├── AppSettings.plist
│ ├── Credits.html
│ ├── MainMenu.nib
│ ├── appIcon.icns
│ ├── docIcon.icns
│ ├── script
│ ├── sfnt2woff-zopfli
│ └── woff2_compress
├── dmg-builder.sh
├── docs
└── Credits.html
├── img
├── GenericFontIcon.icns
├── logo-head-crunch.png
├── waffle.png
└── woffle.gif
├── installer
└── Woffle-Installer.dmg
├── profile
└── Woffle.platypus
├── settings.py
└── src
├── include
├── sfnt2woff-zopfli
└── woff2_compress
└── woffle.sh
/LICENSE.md:
--------------------------------------------------------------------------------
1 | ### Woffle License
2 |
3 | Copyright (c) 2017 Christopher Simpkins
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
23 |
24 | ### sfnt2woff-zopfli License
25 |
26 | Copyright 2011 Google Inc. All Rights Reserved.
27 |
28 | Licensed under the Apache License, Version 2.0 (the "License");
29 | you may not use this file except in compliance with the License.
30 | You may obtain a copy of the License at
31 |
32 | http://www.apache.org/licenses/LICENSE-2.0
33 |
34 | Unless required by applicable law or agreed to in writing, software
35 | distributed under the License is distributed on an "AS IS" BASIS,
36 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
37 | See the License for the specific language governing permissions and
38 | limitations under the License.
39 |
40 | ---------------------------------------------------------------------------
41 |
42 | Version: MPL 1.1/GPL 2.0/LGPL 2.1
43 |
44 | The contents of this file are subject to the Mozilla Public License Version
45 | 1.1 (the "License"); you may not use this file except in compliance with
46 | the License. You may obtain a copy of the License at
47 | http://www.mozilla.org/MPL/
48 |
49 | Software distributed under the License is distributed on an "AS IS" basis,
50 | WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
51 | for the specific language governing rights and limitations under the
52 | License.
53 |
54 | The Original Code is WOFF font packaging code.
55 |
56 | The Initial Developer of the Original Code is Mozilla Corporation.
57 | Portions created by the Initial Developer are Copyright (C) 2009
58 | the Initial Developer. All Rights Reserved.
59 |
60 |
61 |
62 | ### woff2_compress License
63 |
64 | Copyright 2017 Google Inc. All Rights Reserved.
65 |
66 | Licensed under the Apache License, Version 2.0 (the "License");
67 | you may not use this file except in compliance with the License.
68 | You may obtain a copy of the License at
69 |
70 | http://www.apache.org/licenses/LICENSE-2.0
71 |
72 | Unless required by applicable law or agreed to in writing, software
73 | distributed under the License is distributed on an "AS IS" BASIS,
74 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
75 | See the License for the specific language governing permissions and
76 | limitations under the License.
77 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | 
2 |
3 | ## About
4 |
5 | Woffle is a GUI application that supports woff and woff2 web font compilation on OS X. Drag and drop your ttf or otf font file on the GUI window and Woffle does the rest!
6 |
7 | Woffle is built with the open source [sfnt2woff-zopfli](https://github.com/bramstein/sfnt2woff-zopfli) and [woff2_compress](https://github.com/google/woff2) font compilers and implements the same web font build approach that we use in [Hack](https://github.com/source-foundry/Hack), all in a tidy little GUI package.
8 |
9 | 
10 |
11 | ## Installation
12 |
13 | Select either of the following approaches to install Woffle on your OS X system.
14 |
15 | ### Download and Use the Installer (.dmg)
16 |
17 | Download the installer for [the latest release](https://github.com/source-foundry/Woffle/releases/latest). Double click the installer file and then drag the Woffle icon to the Applications directory when prompted to do so.
18 |
19 | Click Launchpad and you will find Woffle on your desktop.
20 |
21 | ### Clone Repository with git and Install
22 |
23 | Use the following commands to pull the Woffle repository to your system and open the repository in your Finder:
24 |
25 | ```
26 | $ git clone https://github.com/source-foundry/Woffle.git
27 | $ cd Woffle
28 | $ open .
29 | ```
30 |
31 | Drag and drop Woffle (in the top level of the repository directory) into your Applications directory.
32 |
33 | Click Launchpad and you will find Woffle on your desktop.
34 |
35 | ## Usage
36 |
37 | Drag and drop one or more ttf or otf font files onto the Woffle GUI window after you open it. The compiled woff and woff2 files are located in the directory where your original fonts are located. The original font files are not altered in any fashion during this process.
38 |
39 | ## License
40 |
41 | Woffle is licensed under the MIT license.
42 |
43 | sfnt2woff-zopfli is licensed under the Apache and Mozilla Public licenses
44 |
45 | woff2_compress is licensed under the Apache license.
46 |
47 | See [LICENSE.md](https://github.com/source-foundry/Woffle/blob/master/LICENSE.md) for details.
48 |
49 |
--------------------------------------------------------------------------------
/Woffle.app/Contents/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleDocumentTypes
8 |
9 |
10 | CFBundleTypeExtensions
11 |
12 | CFBundleTypeIconFile
13 | docIcon.icns
14 | CFBundleTypeRole
15 | Viewer
16 | LSItemContentTypes
17 |
18 | public.item
19 | public.folder
20 |
21 |
22 |
23 | CFBundleExecutable
24 | Woffle
25 | CFBundleIconFile
26 | appIcon.icns
27 | CFBundleIdentifier
28 | com.csimpkins.Woffle
29 | CFBundleInfoDictionaryVersion
30 | 6.0
31 | CFBundleName
32 | Woffle
33 | CFBundlePackageType
34 | APPL
35 | CFBundleShortVersionString
36 | 0.9
37 | CFBundleSignature
38 | ????
39 | CFBundleVersion
40 | 0.9
41 | LSMinimumSystemVersion
42 | 10.7.0
43 | LSUIElement
44 |
45 | NSAppTransportSecurity
46 |
47 | NSAllowsArbitraryLoads
48 |
49 |
50 | NSHumanReadableCopyright
51 | © 2017 Christopher Simpkins
52 | NSMainNibFile
53 | MainMenu
54 | NSPrincipalClass
55 | NSApplication
56 |
57 |
58 |
--------------------------------------------------------------------------------
/Woffle.app/Contents/MacOS/Woffle:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/source-foundry/Woffle/c807a55f3a65c5070e8900913bc5f44f834f536c/Woffle.app/Contents/MacOS/Woffle
--------------------------------------------------------------------------------
/Woffle.app/Contents/Resources/AppSettings.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | AcceptsFiles
6 |
7 | AcceptsText
8 |
9 | Authentication
10 |
11 | Creator
12 | Platypus-5.2
13 | Droppable
14 |
15 | InterfaceType
16 | Text Window
17 | InterpreterArgs
18 |
19 | InterpreterPath
20 | /bin/sh
21 | PromptForFileOnLaunch
22 |
23 | RemainRunning
24 |
25 | ScriptArgs
26 |
27 | Suffixes
28 |
29 | TextBackground
30 | #16adff
31 | TextFont
32 | AndaleMono
33 | TextForeground
34 | #ffffff
35 | TextSize
36 | 13
37 | URISchemes
38 |
39 | UniformTypes
40 |
41 | public.item
42 | public.folder
43 |
44 |
45 |
46 |
--------------------------------------------------------------------------------
/Woffle.app/Contents/Resources/Credits.html:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/Woffle.app/Contents/Resources/MainMenu.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/source-foundry/Woffle/c807a55f3a65c5070e8900913bc5f44f834f536c/Woffle.app/Contents/Resources/MainMenu.nib
--------------------------------------------------------------------------------
/Woffle.app/Contents/Resources/appIcon.icns:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/source-foundry/Woffle/c807a55f3a65c5070e8900913bc5f44f834f536c/Woffle.app/Contents/Resources/appIcon.icns
--------------------------------------------------------------------------------
/Woffle.app/Contents/Resources/docIcon.icns:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/source-foundry/Woffle/c807a55f3a65c5070e8900913bc5f44f834f536c/Woffle.app/Contents/Resources/docIcon.icns
--------------------------------------------------------------------------------
/Woffle.app/Contents/Resources/script:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | WOFFLE_TITLE="
4 |
5 | ██╗ ██╗ ██████╗ ███████╗███████╗██╗ ███████╗
6 | ██║ ██║██╔═══██╗██╔════╝██╔════╝██║ ██╔════╝
7 | ██║ █╗ ██║██║ ██║█████╗ █████╗ ██║ █████╗
8 | ██║███╗██║██║ ██║██╔══╝ ██╔══╝ ██║ ██╔══╝
9 | ╚███╔███╔╝╚██████╔╝██║ ██║ ███████╗███████╗
10 | ╚══╝╚══╝ ╚═════╝ ╚═╝ ╚═╝ ╚══════╝╚══════╝
11 |
12 | v0.9.0"
13 |
14 |
15 | SUCCESS_THUMB="
16 | ┈┈┈┈┈┈▕▔╲
17 | ┈┈┈┈┈┈┈▏▕
18 | ┈┈┈┈┈┈┈▏▕▂▂▂
19 | ▂▂▂▂▂▂╱┈▕▂▂▂▏
20 | ▉▉▉▉▉┈┈┈▕▂▂▂▏
21 | ▉▉▉▉▉┈┈┈▕▂▂▂▏
22 | ▔▔▔▔▔▔╲▂▕▂▂▂▏
23 | "
24 |
25 | SFNTWOFF_BIN="./sfnt2woff-zopfli"
26 | ZOPFLI_ITERATIONS="3"
27 |
28 | WOFF2_BIN="./woff2_compress"
29 |
30 | # Message on application open (no arguments passed to script on initial open)
31 | if [ $# -eq 0 ]; then
32 | echo " "
33 | echo " "
34 | printf "%s\n" "$WOFFLE_TITLE"
35 | echo "woff and woff2 web font generator"
36 | echo "Built with sfnt2woff-zopfli and woff2 compilers"
37 | echo "======================================================"
38 | echo "Copyright 2017 Christopher Simpkins"
39 | echo "MIT License"
40 | echo "Source: github.com/source-foundry/Woffle"
41 | echo "Issues: github.com/source-foundry/Woffle/issues"
42 | echo "======================================================"
43 | echo " "
44 | echo "Drag and drop your ttf or otf files on this window to begin."
45 | fi
46 |
47 | # test file extensions to confirm dealing with appropriate font files
48 | for FONTPATH in "$@"
49 | do
50 | FILE_EXTENSION="${FONTPATH##*.}"
51 | if [ "$FILE_EXTENSION" = "ttf" ] || [ "$FILE_EXTENSION" = "otf" ]; then
52 | echo " " >/dev/null # do nothing...
53 | else
54 | echo " "
55 | echo "ERROR: You appear to have dropped a file on the window that is not a ttf or otf font. Please try again."
56 | exit
57 | fi
58 | done
59 |
60 |
61 | # woff compilation
62 |
63 | if [ $# -eq 1 ]; then
64 | echo "===> Beginning compilation of woff file..."
65 | echo " "
66 | elif [ $# -gt 1 ]; then
67 | echo "===> Beginning compilation of woff files..."
68 | echo " "
69 | fi
70 |
71 | for FONTPATH in "$@"
72 | do
73 | FILE_EXTENSION="${FONTPATH##*.}"
74 | if ! "$SFNTWOFF_BIN" -n $ZOPFLI_ITERATIONS "$FONTPATH" 2>&1 >/dev/null; then
75 | echo "ERROR: Unable to build woff from $FONTPATH." 1>&2
76 | exit
77 | else
78 | echo "[NEW] ${FONTPATH%.*}.woff"
79 | echo " "
80 | fi
81 | done
82 |
83 |
84 | # woff2 compilation
85 |
86 | if [ $# -eq 1 ]; then
87 | echo "===> Beginning compilation of woff2 file..."
88 | echo " "
89 | elif [ $# -gt 1 ]; then
90 | echo "===> Beginning compilation of woff2 files..."
91 | echo " "
92 | fi
93 |
94 | for FONTPATH in "$@"
95 | do
96 | if ! "$WOFF2_BIN" "$FONTPATH" >/dev/null 2>&1; then
97 | echo "ERROR: Unable to build woff2 from $FONTPATH." 1>&2
98 | exit
99 | else
100 | echo "[NEW] ${FONTPATH%.*}.woff2"
101 | echo " "
102 | fi
103 | done
104 |
105 | if [ $# -gt 0 ]; then
106 | echo " "
107 | echo "✓ Complete!"
108 | echo " "
109 | printf "%s\n" "$SUCCESS_THUMB"
110 | fi
111 |
--------------------------------------------------------------------------------
/Woffle.app/Contents/Resources/sfnt2woff-zopfli:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/source-foundry/Woffle/c807a55f3a65c5070e8900913bc5f44f834f536c/Woffle.app/Contents/Resources/sfnt2woff-zopfli
--------------------------------------------------------------------------------
/Woffle.app/Contents/Resources/woff2_compress:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/source-foundry/Woffle/c807a55f3a65c5070e8900913bc5f44f834f536c/Woffle.app/Contents/Resources/woff2_compress
--------------------------------------------------------------------------------
/dmg-builder.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 |
4 | dmgbuild -s settings.py -D app=Woffle.app "Woffle" Woffle-Installer.dmg
5 |
6 | if [ -f Woffle-Installer.dmg ]; then
7 | mv Woffle-Installer.dmg installer/Woffle-Installer.dmg
8 | fi
9 |
--------------------------------------------------------------------------------
/docs/Credits.html:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/img/GenericFontIcon.icns:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/source-foundry/Woffle/c807a55f3a65c5070e8900913bc5f44f834f536c/img/GenericFontIcon.icns
--------------------------------------------------------------------------------
/img/logo-head-crunch.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/source-foundry/Woffle/c807a55f3a65c5070e8900913bc5f44f834f536c/img/logo-head-crunch.png
--------------------------------------------------------------------------------
/img/waffle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/source-foundry/Woffle/c807a55f3a65c5070e8900913bc5f44f834f536c/img/waffle.png
--------------------------------------------------------------------------------
/img/woffle.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/source-foundry/Woffle/c807a55f3a65c5070e8900913bc5f44f834f536c/img/woffle.gif
--------------------------------------------------------------------------------
/installer/Woffle-Installer.dmg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/source-foundry/Woffle/c807a55f3a65c5070e8900913bc5f44f834f536c/installer/Woffle-Installer.dmg
--------------------------------------------------------------------------------
/profile/Woffle.platypus:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | AcceptsFiles
6 |
7 | AcceptsText
8 |
9 | Authentication
10 |
11 | Author
12 | Christopher Simpkins
13 | BundledFiles
14 |
15 | /Users/ces/Desktop/code/Woffle/src/include/sfnt2woff-zopfli
16 | /Users/ces/Desktop/code/Woffle/src/include/woff2_compress
17 | /Users/ces/Desktop/code/Woffle/docs/Credits.html
18 |
19 | Creator
20 | Platypus-5.2
21 | DeclareService
22 |
23 | Destination
24 | /Users/ces/Desktop/Application.app
25 | DevelopmentVersion
26 |
27 | DocIconPath
28 | /Users/ces/Desktop/code/Woffle/img/GenericFontIcon.icns
29 | Droppable
30 |
31 | ExecutablePath
32 | /usr/local/share/platypus/ScriptExec
33 | IconPath
34 | /Users/ces/Library/Application Support/Platypus/PlatypusIcon-47128.icns
35 | Identifier
36 | com.csimpkins.Woffle
37 | InterfaceType
38 | Text Window
39 | InterpreterArgs
40 |
41 | InterpreterPath
42 | /bin/sh
43 | Name
44 | Woffle
45 | NibPath
46 | /usr/local/share/platypus/MainMenu.nib
47 | OptimizeApplication
48 |
49 | Overwrite
50 |
51 | PromptForFileOnLaunch
52 |
53 | RemainRunning
54 |
55 | RunInBackground
56 |
57 | ScriptArgs
58 |
59 | ScriptPath
60 | /Users/ces/Desktop/code/Woffle/src/woffle.sh
61 | StatusItemDisplayType
62 | Text
63 | StatusItemIcon
64 |
65 | TU0AKgAAFEj///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////
66 | AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
67 | /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wAA
68 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIwAAACuAAAAAAAAAAAAAAAA
69 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
70 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
71 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAogAAAP8AAADOAAAAAAAAAAAAAAAAAAAAAQAAABAA
72 | AAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
73 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
74 | UgAAAB8AAAA5AAAA/wAAAN8AAAAAAAAAPgAAAKcAAADNAAAAzgMBAMUCAADJAAAAzwAA
75 | ALoAAABrAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
76 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAAAAAAAAAAAAAAACAAAA/wAAAMEAAACV
77 | AAAA/wAAAK8AAAC0AgEA+B0EAsQ4BAN1OgQCQBoLCCcZBQQ1JAgEYicFAqgNAwHrAAAA
78 | 9gAAAIYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
79 | AAAAAAAAAAAAAAAAAAAAAADmAAAA0AAAAEAAAAAAAAAA8AAAAP8AAADhAAAA/wAAAP8j
80 | DAWvPAsFIE0HAwBgBQUATAMCABkNCgAaBAUANQsGAFIKBQBJDQYAPwoEcA8EAP0AAADc
81 | AAAAMwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
82 | AAAAAAAAAABgAAAA/wAAAP8AAACkAAAA1AAAAO4AAAD/CQMA40IZCDxVIA0ANAADADoB
83 | AgBFCAQAPQcDAB8JBQAbBwMALAoFAEIFAQBKCwUAexAHAFsaDAUQBgTSAAAA/wAAANsA
84 | AABKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
85 | 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
153 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0AAABJAAAAXQAAAGsAAACFAAAA
154 | uxADAeRLEgZdNgkAnwAAAP8CAgXTAQIC9lYdHDlKHx4ABwQEXAwBAu4AAAL/AAAAfAAA
155 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
156 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkzEw10
157 | lCsbAAwAAIgAAAD/AgEE8gAAAtEMCAqcAAAB9QAAAf8AAAD/AAAAJwAAAAAAAAAAAAAA
158 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
159 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAuFREAjDAjAEMtGQAb
160 | GxBsAAAA/wAABt8DBgzXAAAA/wAAAN0AAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
161 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
162 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAuEw8AhywfAEs3IABBPCUAGRQNOAsJ
163 | Bb0HAgLQLyILkEo+HQgAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/
164 | //8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A
165 | ////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////
166 | AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wAADgEAAAMAAAAB
167 | ACQAAAEBAAMAAAABACQAAAECAAMAAAAEAAAU9gEDAAMAAAABAAEAAAEGAAMAAAABAAIA
168 | AAERAAQAAAABAAAACAESAAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABACQAAAEX
169 | AAQAAAABAAAUQAEcAAMAAAABAAEAAAFSAAMAAAABAAIAAAFTAAMAAAAEAAAU/odzAAcA
170 | AAxIAAAVBgAAAAAACAAIAAgACAABAAEAAQABAAAMSExpbm8CEAAAbW50clJHQiBYWVog
171 | B84AAgAJAAYAMQAAYWNzcE1TRlQAAAAASUVDIHNSR0IAAAAAAAAAAAAAAAAAAPbWAAEA
172 | AAAA0y1IUCAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
173 | AAAAAAARY3BydAAAAVAAAAAzZGVzYwAAAYQAAABsd3RwdAAAAfAAAAAUYmtwdAAAAgQA
174 | AAAUclhZWgAAAhgAAAAUZ1hZWgAAAiwAAAAUYlhZWgAAAkAAAAAUZG1uZAAAAlQAAABw
175 | ZG1kZAAAAsQAAACIdnVlZAAAA0wAAACGdmlldwAAA9QAAAAkbHVtaQAAA/gAAAAUbWVh
176 | cwAABAwAAAAkdGVjaAAABDAAAAAMclRSQwAABDwAAAgMZ1RSQwAABDwAAAgMYlRSQwAA
177 | BDwAAAgMdGV4dAAAAABDb3B5cmlnaHQgKGMpIDE5OTggSGV3bGV0dC1QYWNrYXJkIENv
178 | bXBhbnkAAGRlc2MAAAAAAAAAEnNSR0IgSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAASc1JH
179 | QiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
180 | AAAAAAAAAAAAAAAAAFhZWiAAAAAAAADzUQABAAAAARbMWFlaIAAAAAAAAAAAAAAAAAAA
181 | AABYWVogAAAAAAAAb6IAADj1AAADkFhZWiAAAAAAAABimQAAt4UAABjaWFlaIAAAAAAA
182 | ACSgAAAPhAAAts9kZXNjAAAAAAAAABZJRUMgaHR0cDovL3d3dy5pZWMuY2gAAAAAAAAA
183 | AAAAABZJRUMgaHR0cDovL3d3dy5pZWMuY2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
184 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAZGVzYwAAAAAAAAAuSUVDIDYxOTY2LTIuMSBEZWZh
185 | dWx0IFJHQiBjb2xvdXIgc3BhY2UgLSBzUkdCAAAAAAAAAAAAAAAuSUVDIDYxOTY2LTIu
186 | MSBEZWZhdWx0IFJHQiBjb2xvdXIgc3BhY2UgLSBzUkdCAAAAAAAAAAAAAAAAAAAAAAAA
187 | AAAAAGRlc2MAAAAAAAAALFJlZmVyZW5jZSBWaWV3aW5nIENvbmRpdGlvbiBpbiBJRUM2
188 | MTk2Ni0yLjEAAAAAAAAAAAAAACxSZWZlcmVuY2UgVmlld2luZyBDb25kaXRpb24gaW4g
189 | SUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB2aWV3AAAAAAATpP4A
190 | FF8uABDPFAAD7cwABBMLAANcngAAAAFYWVogAAAAAABMCVYAUAAAAFcf521lYXMAAAAA
191 | AAAAAQAAAAAAAAAAAAAAAAAAAAAAAAKPAAAAAnNpZyAAAAAAQ1JUIGN1cnYAAAAAAAAE
192 | AAAAAAUACgAPABQAGQAeACMAKAAtADIANwA7AEAARQBKAE8AVABZAF4AYwBoAG0AcgB3
193 | AHwAgQCGAIsAkACVAJoAnwCkAKkArgCyALcAvADBAMYAywDQANUA2wDgAOUA6wDwAPYA
194 | +wEBAQcBDQETARkBHwElASsBMgE4AT4BRQFMAVIBWQFgAWcBbgF1AXwBgwGLAZIBmgGh
195 | AakBsQG5AcEByQHRAdkB4QHpAfIB+gIDAgwCFAIdAiYCLwI4AkECSwJUAl0CZwJxAnoC
196 | hAKOApgCogKsArYCwQLLAtUC4ALrAvUDAAMLAxYDIQMtAzgDQwNPA1oDZgNyA34DigOW
197 | A6IDrgO6A8cD0wPgA+wD+QQGBBMEIAQtBDsESARVBGMEcQR+BIwEmgSoBLYExATTBOEE
198 | 8AT+BQ0FHAUrBToFSQVYBWcFdwWGBZYFpgW1BcUF1QXlBfYGBgYWBicGNwZIBlkGagZ7
199 | BowGnQavBsAG0QbjBvUHBwcZBysHPQdPB2EHdAeGB5kHrAe/B9IH5Qf4CAsIHwgyCEYI
200 | WghuCIIIlgiqCL4I0gjnCPsJEAklCToJTwlkCXkJjwmkCboJzwnlCfsKEQonCj0KVApq
201 | CoEKmAquCsUK3ArzCwsLIgs5C1ELaQuAC5gLsAvIC+EL+QwSDCoMQwxcDHUMjgynDMAM
202 | 2QzzDQ0NJg1ADVoNdA2ODakNww3eDfgOEw4uDkkOZA5/DpsOtg7SDu4PCQ8lD0EPXg96
203 | D5YPsw/PD+wQCRAmEEMQYRB+EJsQuRDXEPURExExEU8RbRGMEaoRyRHoEgcSJhJFEmQS
204 | hBKjEsMS4xMDEyMTQxNjE4MTpBPFE+UUBhQnFEkUahSLFK0UzhTwFRIVNBVWFXgVmxW9
205 | FeAWAxYmFkkWbBaPFrIW1hb6Fx0XQRdlF4kXrhfSF/cYGxhAGGUYihivGNUY+hkgGUUZ
206 | axmRGbcZ3RoEGioaURp3Gp4axRrsGxQbOxtjG4obshvaHAIcKhxSHHscoxzMHPUdHh1H
207 | HXAdmR3DHeweFh5AHmoelB6+HukfEx8+H2kflB+/H+ogFSBBIGwgmCDEIPAhHCFIIXUh
208 | oSHOIfsiJyJVIoIiryLdIwojOCNmI5QjwiPwJB8kTSR8JKsk2iUJJTglaCWXJccl9yYn
209 | Jlcmhya3JugnGCdJJ3onqyfcKA0oPyhxKKIo1CkGKTgpaymdKdAqAio1KmgqmyrPKwIr
210 | NitpK50r0SwFLDksbiyiLNctDC1BLXYtqy3hLhYuTC6CLrcu7i8kL1ovkS/HL/4wNTBs
211 | MKQw2zESMUoxgjG6MfIyKjJjMpsy1DMNM0YzfzO4M/E0KzRlNJ402DUTNU01hzXCNf02
212 | NzZyNq426TckN2A3nDfXOBQ4UDiMOMg5BTlCOX85vDn5OjY6dDqyOu87LTtrO6o76Dwn
213 | PGU8pDzjPSI9YT2hPeA+ID5gPqA+4D8hP2E/oj/iQCNAZECmQOdBKUFqQaxB7kIwQnJC
214 | tUL3QzpDfUPARANER0SKRM5FEkVVRZpF3kYiRmdGq0bwRzVHe0fASAVIS0iRSNdJHUlj
215 | SalJ8Eo3Sn1KxEsMS1NLmkviTCpMcky6TQJNSk2TTdxOJU5uTrdPAE9JT5NP3VAnUHFQ
216 | u1EGUVBRm1HmUjFSfFLHUxNTX1OqU/ZUQlSPVNtVKFV1VcJWD1ZcVqlW91dEV5JX4Fgv
217 | WH1Yy1kaWWlZuFoHWlZaplr1W0VblVvlXDVchlzWXSddeF3JXhpebF69Xw9fYV+zYAVg
218 | V2CqYPxhT2GiYfViSWKcYvBjQ2OXY+tkQGSUZOllPWWSZedmPWaSZuhnPWeTZ+loP2iW
219 | aOxpQ2maafFqSGqfavdrT2una/9sV2yvbQhtYG25bhJua27Ebx5veG/RcCtwhnDgcTpx
220 | lXHwcktypnMBc11zuHQUdHB0zHUodYV14XY+dpt2+HdWd7N4EXhueMx5KnmJeed6Rnql
221 | ewR7Y3vCfCF8gXzhfUF9oX4BfmJ+wn8jf4R/5YBHgKiBCoFrgc2CMIKSgvSDV4O6hB2E
222 | gITjhUeFq4YOhnKG14c7h5+IBIhpiM6JM4mZif6KZIrKizCLlov8jGOMyo0xjZiN/45m
223 | js6PNo+ekAaQbpDWkT+RqJIRknqS45NNk7aUIJSKlPSVX5XJljSWn5cKl3WX4JhMmLiZ
224 | JJmQmfyaaJrVm0Kbr5wcnImc951kndKeQJ6unx2fi5/6oGmg2KFHobaiJqKWowajdqPm
225 | pFakx6U4pammGqaLpv2nbqfgqFKoxKk3qamqHKqPqwKrdavprFys0K1ErbiuLa6hrxav
226 | i7AAsHWw6rFgsdayS7LCszizrrQltJy1E7WKtgG2ebbwt2i34LhZuNG5SrnCuju6tbsu
227 | u6e8IbybvRW9j74KvoS+/796v/XAcMDswWfB48JfwtvDWMPUxFHEzsVLxcjGRsbDx0HH
228 | v8g9yLzJOsm5yjjKt8s2y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ
229 | 1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp22vvbgNwF3IrdEN2W3hzeot8p36/gNuC94UTh
230 | zOJT4tvjY+Pr5HPk/OWE5g3mlucf56noMui86Ubp0Opb6uXrcOv77IbtEe2c7ijutO9A
231 | 78zwWPDl8XLx//KM8xnzp/Q09ML1UPXe9m32+/eK+Bn4qPk4+cf6V/rn+3f8B/yY/Sn9
232 | uv5L/tz/bf//
233 |
234 | StatusItemIconIsTemplate
235 |
236 | StatusItemTitle
237 | Title
238 | StatusItemUseSystemFont
239 |
240 | Suffixes
241 |
242 | TextBackground
243 | #16adff
244 | TextFont
245 | AndaleMono
246 | TextForeground
247 | #ffffff
248 | TextSize
249 | 13
250 | URISchemes
251 |
252 | UniformTypes
253 |
254 | public.item
255 | public.folder
256 |
257 | UseXMLPlistFormat
258 |
259 | Version
260 | 0.9
261 |
262 |
263 |
--------------------------------------------------------------------------------
/settings.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 | from __future__ import unicode_literals
3 |
4 | import biplist
5 | import os.path
6 |
7 | #
8 | # Example settings file for dmgbuild
9 | #
10 |
11 | # Use like this: dmgbuild -s settings.py "Test Volume" test.dmg
12 |
13 | # You can actually use this file for your own application (not just TextEdit)
14 | # by doing e.g.
15 | #
16 | # dmgbuild -s settings.py -D app=/path/to/My.app "My Application" MyApp.dmg
17 |
18 | # .. Useful stuff ..............................................................
19 |
20 | application = defines.get('app', '/Applications/Woffle.app')
21 | appname = os.path.basename(application)
22 |
23 | def icon_from_app(app_path):
24 | plist_path = os.path.join(app_path, 'Contents', 'Info.plist')
25 | plist = biplist.readPlist(plist_path)
26 | icon_name = plist['CFBundleIconFile']
27 | icon_root,icon_ext = os.path.splitext(icon_name)
28 | if not icon_ext:
29 | icon_ext = '.icns'
30 | icon_name = icon_root + icon_ext
31 | return os.path.join(app_path, 'Contents', 'Resources', icon_name)
32 |
33 | # .. Basics ....................................................................
34 |
35 | # Uncomment to override the output filename
36 | # filename = 'test.dmg'
37 |
38 | # Uncomment to override the output volume name
39 | # volume_name = 'Test'
40 |
41 | # Volume format (see hdiutil create -help)
42 | format = defines.get('format', 'UDBZ')
43 |
44 | # Volume size
45 | size = defines.get('size', None)
46 |
47 | # Files to include
48 | files = [ application ]
49 |
50 | # Symlinks to create
51 | symlinks = { 'Applications': '/Applications' }
52 |
53 | # Volume icon
54 | #
55 | # You can either define icon, in which case that icon file will be copied to the
56 | # image, *or* you can define badge_icon, in which case the icon file you specify
57 | # will be used to badge the system's Removable Disk icon
58 | #
59 | #icon = '/path/to/icon.icns'
60 | badge_icon = icon_from_app(application)
61 |
62 | # Where to put the icons
63 | icon_locations = {
64 | appname: (140, 120),
65 | 'Applications': (500, 120)
66 | }
67 |
68 | # .. Window configuration ......................................................
69 |
70 | # Background
71 | #
72 | # This is a STRING containing any of the following:
73 | #
74 | # #3344ff - web-style RGB color
75 | # #34f - web-style RGB color, short form (#34f == #3344ff)
76 | # rgb(1,0,0) - RGB color, each value is between 0 and 1
77 | # hsl(120,1,.5) - HSL (hue saturation lightness) color
78 | # hwb(300,0,0) - HWB (hue whiteness blackness) color
79 | # cmyk(0,1,0,0) - CMYK color
80 | # goldenrod - X11/SVG named color
81 | # builtin-arrow - A simple built-in background with a blue arrow
82 | # /foo/bar/baz.png - The path to an image file
83 | #
84 | # The hue component in hsl() and hwb() may include a unit; it defaults to
85 | # degrees ('deg'), but also supports radians ('rad') and gradians ('grad'
86 | # or 'gon').
87 | #
88 | # Other color components may be expressed either in the range 0 to 1, or
89 | # as percentages (e.g. 60% is equivalent to 0.6).
90 | background = 'builtin-arrow'
91 |
92 | show_status_bar = False
93 | show_tab_view = False
94 | show_toolbar = False
95 | show_pathbar = False
96 | show_sidebar = False
97 | sidebar_width = 180
98 |
99 | # Window position in ((x, y), (w, h)) format
100 | window_rect = ((100, 100), (640, 280))
101 |
102 | # Select the default view; must be one of
103 | #
104 | # 'icon-view'
105 | # 'list-view'
106 | # 'column-view'
107 | # 'coverflow'
108 | #
109 | default_view = 'icon-view'
110 |
111 | # General view configuration
112 | show_icon_preview = False
113 |
114 | # Set these to True to force inclusion of icon/list view settings (otherwise
115 | # we only include settings for the default view)
116 | include_icon_view_settings = 'auto'
117 | include_list_view_settings = 'auto'
118 |
119 | # .. Icon view configuration ...................................................
120 |
121 | arrange_by = None
122 | grid_offset = (0, 0)
123 | grid_spacing = 100
124 | scroll_position = (0, 0)
125 | label_pos = 'bottom' # or 'right'
126 | text_size = 16
127 | icon_size = 128
128 |
129 | # .. List view configuration ...................................................
130 |
131 | # Column names are as follows:
132 | #
133 | # name
134 | # date-modified
135 | # date-created
136 | # date-added
137 | # date-last-opened
138 | # size
139 | # kind
140 | # label
141 | # version
142 | # comments
143 | #
144 | list_icon_size = 16
145 | list_text_size = 12
146 | list_scroll_position = (0, 0)
147 | list_sort_by = 'name'
148 | list_use_relative_dates = True
149 | list_calculate_all_sizes = False,
150 | list_columns = ('name', 'date-modified', 'size', 'kind', 'date-added')
151 | list_column_widths = {
152 | 'name': 300,
153 | 'date-modified': 181,
154 | 'date-created': 181,
155 | 'date-added': 181,
156 | 'date-last-opened': 181,
157 | 'size': 97,
158 | 'kind': 115,
159 | 'label': 100,
160 | 'version': 75,
161 | 'comments': 300,
162 | }
163 | list_column_sort_directions = {
164 | 'name': 'ascending',
165 | 'date-modified': 'descending',
166 | 'date-created': 'descending',
167 | 'date-added': 'descending',
168 | 'date-last-opened': 'descending',
169 | 'size': 'descending',
170 | 'kind': 'ascending',
171 | 'label': 'ascending',
172 | 'version': 'ascending',
173 | 'comments': 'ascending',
174 | }
175 |
176 | # .. License configuration .....................................................
177 |
178 | # Text in the license configuration is stored in the resources, which means
179 | # it gets stored in a legacy Mac encoding according to the language. dmgbuild
180 | # will *try* to convert Unicode strings to the appropriate encoding, *but*
181 | # you should be aware that Python doesn't support all of the necessary encodings;
182 | # in many cases you will need to encode the text yourself and use byte strings
183 | # instead here.
184 |
185 | # Recognized language names are:
186 | #
187 | # af_ZA, ar, be_BY, bg_BG, bn, bo, br, ca_ES, cs_CZ, cy, da_DK, de_AT, de_CH,
188 | # de_DE, dz_BT, el_CY, el_GR, en_AU, en_CA, en_GB, en_IE, en_SG, en_US, eo,
189 | # es_419, es_ES, et_EE, fa_IR, fi_FI, fo_FO, fr_001, fr_BE, fr_CA, fr_CH,
190 | # fr_FR, ga-Latg_IE, ga_IE, gd, grc, gu_IN, gv, he_IL, hi_IN, hr_HR, hu_HU,
191 | # hy_AM, is_IS, it_CH, it_IT, iu_CA, ja_JP, ka_GE, kl, ko_KR, lt_LT, lv_LV,
192 | # mk_MK, mr_IN, mt_MT, nb_NO, ne_NP, nl_BE, nl_NL, nn_NO, pa, pl_PL, pt_BR,
193 | # pt_PT, ro_RO, ru_RU, se, sk_SK, sl_SI, sr_RS, sv_SE, th_TH, to_TO, tr_TR,
194 | # uk_UA, ur_IN, ur_PK, uz_UZ, vi_VN, zh_CN, zh_TW
195 |
196 | # license = {
197 | # 'default-language': 'en_US',
198 | # 'licenses': {
199 | # # For each language, the text of the license. This can be plain text,
200 | # # RTF (in which case it must start "{\rtf1"), or a path to a file
201 | # # containing the license text. If you're using RTF,
202 | # # watch out for Python escaping (or read it from a file).
203 | # 'English': b'''{\\rtf1\\ansi\\ansicpg1252\\cocoartf1504\\cocoasubrtf820
204 | # {\\fonttbl\\f0\\fnil\\fcharset0 Helvetica-Bold;\\f1\\fnil\\fcharset0 Helvetica;}
205 | # {\\colortbl;\\red255\\green255\\blue255;\\red0\\green0\\blue0;}
206 | # {\\*\\expandedcolortbl;;\\cssrgb\\c0\\c0\\c0;}
207 | # \\paperw11905\\paperh16837\\margl1133\\margr1133\\margb1133\\margt1133
208 | # \\deftab720
209 | # \\pard\\pardeftab720\\sa160\\partightenfactor0
210 |
211 | # \\f0\\b\\fs60 \\cf2 \\expnd0\\expndtw0\\kerning0
212 | # \\up0 \\nosupersub \\ulnone \\outl0\\strokewidth0 \\strokec2 Test License\\
213 | # \\pard\\pardeftab720\\sa160\\partightenfactor0
214 |
215 | # \\fs36 \\cf2 \\strokec2 What is this?\\
216 | # \\pard\\pardeftab720\\sa160\\partightenfactor0
217 |
218 | # \\f1\\b0\\fs22 \\cf2 \\strokec2 This is the English license. It says what you are allowed to do with this software.\\
219 | # \\
220 | # }''',
221 | # },
222 | # 'buttons': {
223 | # # For each language, text for the buttons on the licensing window.
224 | # #
225 | # # Default buttons and text are built-in for the following languages:
226 | # #
227 | # # English (en_US), German (de_DE), Spanish (es_ES), French (fr_FR),
228 | # # Italian (it_IT), Japanese (ja_JP), Dutch (nl_NL), Swedish (sv_SE),
229 | # # Brazilian Portuguese (pt_BR), Simplified Chinese (zh_CN),
230 | # # Traditional Chinese (zh_TW), Danish (da_DK), Finnish (fi_FI),
231 | # # Korean (ko_KR), Norwegian (nb_NO)
232 | # #
233 | # # You don't need to specify them for those languages; if you fail to
234 | # # specify them for some other language, English will be used instead.
235 |
236 | # 'en_US': (
237 | # b'English',
238 | # b'Agree',
239 | # b'Disagree',
240 | # b'Print',
241 | # b'Save',
242 | # b'If you agree with the terms of this license, press "Agree" to '
243 | # b'install the software. If you do not agree, press "Disagree".'
244 | # ),
245 | # },
246 | # }
247 |
--------------------------------------------------------------------------------
/src/include/sfnt2woff-zopfli:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/source-foundry/Woffle/c807a55f3a65c5070e8900913bc5f44f834f536c/src/include/sfnt2woff-zopfli
--------------------------------------------------------------------------------
/src/include/woff2_compress:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/source-foundry/Woffle/c807a55f3a65c5070e8900913bc5f44f834f536c/src/include/woff2_compress
--------------------------------------------------------------------------------
/src/woffle.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | WOFFLE_TITLE="
4 |
5 | ██╗ ██╗ ██████╗ ███████╗███████╗██╗ ███████╗
6 | ██║ ██║██╔═══██╗██╔════╝██╔════╝██║ ██╔════╝
7 | ██║ █╗ ██║██║ ██║█████╗ █████╗ ██║ █████╗
8 | ██║███╗██║██║ ██║██╔══╝ ██╔══╝ ██║ ██╔══╝
9 | ╚███╔███╔╝╚██████╔╝██║ ██║ ███████╗███████╗
10 | ╚══╝╚══╝ ╚═════╝ ╚═╝ ╚═╝ ╚══════╝╚══════╝
11 |
12 | v0.9.0"
13 |
14 |
15 | SUCCESS_THUMB="
16 | ┈┈┈┈┈┈▕▔╲
17 | ┈┈┈┈┈┈┈▏▕
18 | ┈┈┈┈┈┈┈▏▕▂▂▂
19 | ▂▂▂▂▂▂╱┈▕▂▂▂▏
20 | ▉▉▉▉▉┈┈┈▕▂▂▂▏
21 | ▉▉▉▉▉┈┈┈▕▂▂▂▏
22 | ▔▔▔▔▔▔╲▂▕▂▂▂▏
23 | "
24 |
25 | SFNTWOFF_BIN="./sfnt2woff-zopfli"
26 | ZOPFLI_ITERATIONS="3"
27 |
28 | WOFF2_BIN="./woff2_compress"
29 |
30 | # Message on application open (no arguments passed to script on initial open)
31 | if [ $# -eq 0 ]; then
32 | echo " "
33 | echo " "
34 | printf "%s\n" "$WOFFLE_TITLE"
35 | echo "woff and woff2 web font generator"
36 | echo "Built with sfnt2woff-zopfli and woff2 compilers"
37 | echo "======================================================"
38 | echo "Copyright 2017 Christopher Simpkins"
39 | echo "MIT License"
40 | echo "Source: github.com/source-foundry/Woffle"
41 | echo "Issues: github.com/source-foundry/Woffle/issues"
42 | echo "======================================================"
43 | echo " "
44 | echo "Drag and drop your ttf or otf files on this window to begin."
45 | fi
46 |
47 | # test file extensions to confirm dealing with appropriate font files
48 | for FONTPATH in "$@"
49 | do
50 | FILE_EXTENSION="${FONTPATH##*.}"
51 | if [ "$FILE_EXTENSION" = "ttf" ] || [ "$FILE_EXTENSION" = "otf" ]; then
52 | echo " " >/dev/null # do nothing...
53 | else
54 | echo " "
55 | echo "ERROR: You appear to have dropped a file on the window that is not a ttf or otf font. Please try again."
56 | exit
57 | fi
58 | done
59 |
60 |
61 | # woff compilation
62 |
63 | if [ $# -eq 1 ]; then
64 | echo "===> Beginning compilation of woff file..."
65 | echo " "
66 | elif [ $# -gt 1 ]; then
67 | echo "===> Beginning compilation of woff files..."
68 | echo " "
69 | fi
70 |
71 | for FONTPATH in "$@"
72 | do
73 | FILE_EXTENSION="${FONTPATH##*.}"
74 | if ! "$SFNTWOFF_BIN" -n $ZOPFLI_ITERATIONS "$FONTPATH" 2>&1 >/dev/null; then
75 | echo "ERROR: Unable to build woff from $FONTPATH." 1>&2
76 | exit
77 | else
78 | echo "[NEW] ${FONTPATH%.*}.woff"
79 | echo " "
80 | fi
81 | done
82 |
83 |
84 | # woff2 compilation
85 |
86 | if [ $# -eq 1 ]; then
87 | echo "===> Beginning compilation of woff2 file..."
88 | echo " "
89 | elif [ $# -gt 1 ]; then
90 | echo "===> Beginning compilation of woff2 files..."
91 | echo " "
92 | fi
93 |
94 | for FONTPATH in "$@"
95 | do
96 | if ! "$WOFF2_BIN" "$FONTPATH" >/dev/null 2>&1; then
97 | echo "ERROR: Unable to build woff2 from $FONTPATH." 1>&2
98 | exit
99 | else
100 | echo "[NEW] ${FONTPATH%.*}.woff2"
101 | echo " "
102 | fi
103 | done
104 |
105 | if [ $# -gt 0 ]; then
106 | echo " "
107 | echo "✓ Complete!"
108 | echo " "
109 | printf "%s\n" "$SUCCESS_THUMB"
110 | fi
111 |
--------------------------------------------------------------------------------