@fredlackey/devutils 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -5
- package/package.json +1 -1
- package/src/commands/install.js +374 -36
- package/src/installs/adobe-creative-cloud.js +527 -25
- package/src/installs/adobe-creative-cloud.md +605 -0
- package/src/installs/appcleaner.js +303 -26
- package/src/installs/appcleaner.md +699 -0
- package/src/installs/apt-transport-https.js +390 -0
- package/src/installs/apt-transport-https.md +678 -0
- package/src/installs/atomicparsley.js +624 -26
- package/src/installs/atomicparsley.md +795 -0
- package/src/installs/aws-cli.js +779 -26
- package/src/installs/aws-cli.md +727 -0
- package/src/installs/balena-etcher.js +688 -26
- package/src/installs/balena-etcher.md +761 -0
- package/src/installs/bambu-studio.js +912 -26
- package/src/installs/bambu-studio.md +780 -0
- package/src/installs/bash-completion.js +554 -23
- package/src/installs/bash-completion.md +833 -0
- package/src/installs/bash.js +399 -26
- package/src/installs/bash.md +993 -0
- package/src/installs/beyond-compare.js +585 -26
- package/src/installs/beyond-compare.md +813 -0
- package/src/installs/build-essential.js +511 -26
- package/src/installs/build-essential.md +977 -0
- package/src/installs/ca-certificates.js +618 -0
- package/src/installs/ca-certificates.md +937 -0
- package/src/installs/caffeine.js +490 -26
- package/src/installs/caffeine.md +839 -0
- package/src/installs/camtasia.js +577 -25
- package/src/installs/camtasia.md +762 -0
- package/src/installs/chatgpt.js +458 -26
- package/src/installs/chatgpt.md +814 -0
- package/src/installs/chocolatey.js +447 -0
- package/src/installs/chocolatey.md +661 -0
- package/src/installs/chrome-canary.js +472 -26
- package/src/installs/chrome-canary.md +641 -0
- package/src/installs/chromium.js +645 -26
- package/src/installs/chromium.md +838 -0
- package/src/installs/claude-code.js +558 -26
- package/src/installs/claude-code.md +1173 -0
- package/src/installs/curl.js +361 -26
- package/src/installs/curl.md +714 -0
- package/src/installs/cursor.js +561 -26
- package/src/installs/cursor.md +970 -0
- package/src/installs/dbschema.js +674 -26
- package/src/installs/dbschema.md +925 -0
- package/src/installs/dependencies.md +435 -0
- package/src/installs/development-tools.js +600 -0
- package/src/installs/development-tools.md +977 -0
- package/src/installs/docker.js +1010 -25
- package/src/installs/docker.md +1109 -0
- package/src/installs/drawio.js +1001 -26
- package/src/installs/drawio.md +795 -0
- package/src/installs/elmedia-player.js +328 -25
- package/src/installs/elmedia-player.md +556 -0
- package/src/installs/ffmpeg.js +870 -25
- package/src/installs/ffmpeg.md +852 -0
- package/src/installs/file.js +464 -0
- package/src/installs/file.md +987 -0
- package/src/installs/gemini-cli.js +793 -26
- package/src/installs/gemini-cli.md +1153 -0
- package/src/installs/git.js +382 -26
- package/src/installs/git.md +907 -0
- package/src/installs/gitego.js +931 -26
- package/src/installs/gitego.md +1172 -0
- package/src/installs/go.js +913 -26
- package/src/installs/go.md +958 -0
- package/src/installs/google-chrome.js +801 -25
- package/src/installs/google-chrome.md +862 -0
- package/src/installs/gpg.js +412 -73
- package/src/installs/gpg.md +1056 -0
- package/src/installs/homebrew.js +1015 -26
- package/src/installs/homebrew.md +988 -0
- package/src/installs/imageoptim.js +950 -26
- package/src/installs/imageoptim.md +1119 -0
- package/src/installs/installers.json +2297 -0
- package/src/installs/jq.js +382 -26
- package/src/installs/jq.md +809 -0
- package/src/installs/keyboard-maestro.js +701 -26
- package/src/installs/keyboard-maestro.md +825 -0
- package/src/installs/latex.js +771 -26
- package/src/installs/latex.md +1095 -0
- package/src/installs/lftp.js +338 -26
- package/src/installs/lftp.md +907 -0
- package/src/installs/lsb-release.js +346 -0
- package/src/installs/lsb-release.md +814 -0
- package/src/installs/messenger.js +829 -26
- package/src/installs/messenger.md +900 -0
- package/src/installs/microsoft-office.js +550 -26
- package/src/installs/microsoft-office.md +760 -0
- package/src/installs/microsoft-teams.js +782 -25
- package/src/installs/microsoft-teams.md +886 -0
- package/src/installs/node.js +886 -26
- package/src/installs/node.md +1153 -0
- package/src/installs/nordpass.js +698 -26
- package/src/installs/nordpass.md +921 -0
- package/src/installs/nvm.js +977 -26
- package/src/installs/nvm.md +1057 -0
- package/src/installs/openssh.js +734 -64
- package/src/installs/openssh.md +1056 -0
- package/src/installs/pandoc.js +644 -26
- package/src/installs/pandoc.md +1036 -0
- package/src/installs/pinentry.js +492 -26
- package/src/installs/pinentry.md +1142 -0
- package/src/installs/pngyu.js +851 -26
- package/src/installs/pngyu.md +896 -0
- package/src/installs/postman.js +781 -26
- package/src/installs/postman.md +940 -0
- package/src/installs/procps.js +425 -0
- package/src/installs/procps.md +851 -0
- package/src/installs/safari-tech-preview.js +355 -25
- package/src/installs/safari-tech-preview.md +533 -0
- package/src/installs/sfnt2woff.js +640 -26
- package/src/installs/sfnt2woff.md +795 -0
- package/src/installs/shellcheck.js +463 -26
- package/src/installs/shellcheck.md +1005 -0
- package/src/installs/slack.js +722 -25
- package/src/installs/slack.md +865 -0
- package/src/installs/snagit.js +566 -25
- package/src/installs/snagit.md +844 -0
- package/src/installs/software-properties-common.js +372 -0
- package/src/installs/software-properties-common.md +805 -0
- package/src/installs/spotify.js +858 -25
- package/src/installs/spotify.md +901 -0
- package/src/installs/studio-3t.js +803 -26
- package/src/installs/studio-3t.md +918 -0
- package/src/installs/sublime-text.js +780 -25
- package/src/installs/sublime-text.md +914 -0
- package/src/installs/superwhisper.js +687 -25
- package/src/installs/superwhisper.md +630 -0
- package/src/installs/tailscale.js +727 -26
- package/src/installs/tailscale.md +1100 -0
- package/src/installs/tar.js +389 -0
- package/src/installs/tar.md +946 -0
- package/src/installs/termius.js +780 -26
- package/src/installs/termius.md +844 -0
- package/src/installs/terraform.js +761 -26
- package/src/installs/terraform.md +899 -0
- package/src/installs/tidal.js +752 -25
- package/src/installs/tidal.md +864 -0
- package/src/installs/tmux.js +328 -26
- package/src/installs/tmux.md +1030 -0
- package/src/installs/tree.js +393 -26
- package/src/installs/tree.md +833 -0
- package/src/installs/unzip.js +460 -0
- package/src/installs/unzip.md +879 -0
- package/src/installs/vim.js +403 -26
- package/src/installs/vim.md +1040 -0
- package/src/installs/vlc.js +803 -26
- package/src/installs/vlc.md +927 -0
- package/src/installs/vscode.js +825 -26
- package/src/installs/vscode.md +1002 -0
- package/src/installs/wget.js +415 -0
- package/src/installs/wget.md +791 -0
- package/src/installs/whatsapp.js +710 -25
- package/src/installs/whatsapp.md +854 -0
- package/src/installs/winpty.js +352 -0
- package/src/installs/winpty.md +620 -0
- package/src/installs/woff2.js +535 -26
- package/src/installs/woff2.md +977 -0
- package/src/installs/wsl.js +572 -0
- package/src/installs/wsl.md +699 -0
- package/src/installs/xcode-clt.js +520 -0
- package/src/installs/xcode-clt.md +351 -0
- package/src/installs/xcode.js +542 -26
- package/src/installs/xcode.md +573 -0
- package/src/installs/yarn.js +806 -26
- package/src/installs/yarn.md +1074 -0
- package/src/installs/yq.js +636 -26
- package/src/installs/yq.md +944 -0
- package/src/installs/yt-dlp.js +683 -26
- package/src/installs/yt-dlp.md +946 -0
- package/src/installs/yum-utils.js +297 -0
- package/src/installs/yum-utils.md +648 -0
- package/src/installs/zoom.js +740 -25
- package/src/installs/zoom.md +884 -0
- package/src/scripts/README.md +567 -45
- package/src/scripts/STATUS.md +208 -0
- package/src/scripts/afk.js +395 -7
- package/src/scripts/backup-all.js +731 -9
- package/src/scripts/backup-source.js +711 -8
- package/src/scripts/brewd.js +373 -7
- package/src/scripts/brewi.js +505 -9
- package/src/scripts/brewr.js +512 -9
- package/src/scripts/brews.js +462 -9
- package/src/scripts/brewu.js +488 -7
- package/src/scripts/c.js +185 -7
- package/src/scripts/ccurl.js +325 -8
- package/src/scripts/certbot-crontab-init.js +488 -8
- package/src/scripts/certbot-init.js +641 -9
- package/src/scripts/ch.js +339 -7
- package/src/scripts/claude-danger.js +253 -8
- package/src/scripts/clean-dev.js +419 -8
- package/src/scripts/clear-dns-cache.js +525 -7
- package/src/scripts/clone.js +417 -7
- package/src/scripts/code-all.js +420 -7
- package/src/scripts/count-files.js +195 -8
- package/src/scripts/count-folders.js +195 -8
- package/src/scripts/count.js +248 -8
- package/src/scripts/d.js +203 -7
- package/src/scripts/datauri.js +373 -8
- package/src/scripts/delete-files.js +363 -7
- package/src/scripts/docker-clean.js +410 -8
- package/src/scripts/dp.js +426 -7
- package/src/scripts/e.js +375 -9
- package/src/scripts/empty-trash.js +497 -7
- package/src/scripts/evm.js +428 -9
- package/src/scripts/fetch-github-repos.js +441 -10
- package/src/scripts/get-channel.js +329 -8
- package/src/scripts/get-course.js +384 -11
- package/src/scripts/get-dependencies.js +290 -9
- package/src/scripts/get-folder.js +783 -10
- package/src/scripts/get-tunes.js +411 -10
- package/src/scripts/get-video.js +352 -9
- package/src/scripts/git-backup.js +561 -9
- package/src/scripts/git-clone.js +477 -9
- package/src/scripts/git-pup.js +303 -7
- package/src/scripts/git-push.js +380 -8
- package/src/scripts/h.js +607 -9
- package/src/scripts/hide-desktop-icons.js +483 -7
- package/src/scripts/hide-hidden-files.js +522 -7
- package/src/scripts/install-dependencies-from.js +440 -9
- package/src/scripts/ips.js +647 -10
- package/src/scripts/iso.js +354 -8
- package/src/scripts/killni.js +561 -7
- package/src/scripts/ll.js +451 -8
- package/src/scripts/local-ip.js +310 -8
- package/src/scripts/m.js +508 -8
- package/src/scripts/map.js +293 -8
- package/src/scripts/mkd.js +287 -7
- package/src/scripts/ncu-update-all.js +441 -8
- package/src/scripts/nginx-init.js +702 -12
- package/src/scripts/npmi.js +366 -7
- package/src/scripts/o.js +495 -8
- package/src/scripts/org-by-date.js +321 -7
- package/src/scripts/p.js +208 -7
- package/src/scripts/packages.js +313 -8
- package/src/scripts/path.js +209 -7
- package/src/scripts/ports.js +582 -8
- package/src/scripts/q.js +290 -8
- package/src/scripts/refresh-files.js +378 -10
- package/src/scripts/remove-smaller-files.js +500 -8
- package/src/scripts/rename-files-with-date.js +517 -9
- package/src/scripts/resize-image.js +523 -9
- package/src/scripts/rm-safe.js +653 -8
- package/src/scripts/s.js +525 -9
- package/src/scripts/set-git-public.js +349 -7
- package/src/scripts/show-desktop-icons.js +459 -7
- package/src/scripts/show-hidden-files.js +456 -7
- package/src/scripts/tpa.js +265 -8
- package/src/scripts/tpo.js +264 -7
- package/src/scripts/u.js +489 -7
- package/src/scripts/vpush.js +422 -8
- package/src/scripts/y.js +267 -7
- package/src/utils/common/os.js +94 -2
- package/src/utils/ubuntu/apt.js +13 -7
|
@@ -0,0 +1,795 @@
|
|
|
1
|
+
# Installing sfnt2woff
|
|
2
|
+
|
|
3
|
+
## Dependencies
|
|
4
|
+
|
|
5
|
+
### macOS (Homebrew)
|
|
6
|
+
- **Required:**
|
|
7
|
+
- Homebrew - Install via `/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"` or `dev install homebrew`
|
|
8
|
+
- Xcode Command Line Tools - Install via `xcode-select --install` (required by Homebrew for building native packages)
|
|
9
|
+
- **Optional:** None
|
|
10
|
+
- **Auto-installed:**
|
|
11
|
+
- woff2sfnt (reverse conversion tool, included in the sfnt2woff Homebrew formula)
|
|
12
|
+
|
|
13
|
+
### Ubuntu (APT/Snap)
|
|
14
|
+
- **Required:**
|
|
15
|
+
- sudo privileges (for package installation)
|
|
16
|
+
- **Optional:** None
|
|
17
|
+
- **Auto-installed:**
|
|
18
|
+
- woff2sfnt (reverse conversion tool, included in the woff-tools APT package)
|
|
19
|
+
|
|
20
|
+
### Raspberry Pi OS (APT/Snap)
|
|
21
|
+
- **Required:**
|
|
22
|
+
- sudo privileges (for package installation)
|
|
23
|
+
- **Optional:** None
|
|
24
|
+
- **Auto-installed:**
|
|
25
|
+
- woff2sfnt (reverse conversion tool, included in the woff-tools APT package)
|
|
26
|
+
|
|
27
|
+
### Amazon Linux (DNF/YUM)
|
|
28
|
+
- **Required:**
|
|
29
|
+
- gcc - Install via `sudo dnf install -y gcc` (AL2023) or `sudo yum install -y gcc` (AL2)
|
|
30
|
+
- make - Install via `sudo dnf install -y make` (AL2023) or `sudo yum install -y make` (AL2)
|
|
31
|
+
- zlib-devel - Install via `sudo dnf install -y zlib-devel` (AL2023) or `sudo yum install -y zlib-devel` (AL2)
|
|
32
|
+
- git - Install via `sudo dnf install -y git` (AL2023) or `sudo yum install -y git` (AL2)
|
|
33
|
+
- sudo privileges (for installing build dependencies)
|
|
34
|
+
- **Optional:** None
|
|
35
|
+
- **Auto-installed:**
|
|
36
|
+
- woff2sfnt (compiled alongside sfnt2woff from the same source repository)
|
|
37
|
+
|
|
38
|
+
### Windows (Chocolatey/winget)
|
|
39
|
+
- **Required:**
|
|
40
|
+
- Node.js - Install via `choco install nodejs-lts -y` or `dev install node`
|
|
41
|
+
- npm - Installed automatically with Node.js
|
|
42
|
+
- **Optional:** None
|
|
43
|
+
- **Auto-installed:** None
|
|
44
|
+
|
|
45
|
+
### Git Bash (Manual/Portable)
|
|
46
|
+
- **Required:**
|
|
47
|
+
- Node.js - Download from https://nodejs.org/ or install via `dev install node`
|
|
48
|
+
- npm - Installed automatically with Node.js
|
|
49
|
+
- **Optional:** None
|
|
50
|
+
- **Auto-installed:** None
|
|
51
|
+
|
|
52
|
+
## Overview
|
|
53
|
+
|
|
54
|
+
sfnt2woff is a command-line utility that converts TrueType and OpenType font files (TTF/OTF) to Web Open Font Format (WOFF). Originally developed by Jonathan Kew at Mozilla, this tool enables web developers to compress fonts for faster web page loading while maintaining visual fidelity. The tool works in conjunction with woff2sfnt, which performs the reverse conversion.
|
|
55
|
+
|
|
56
|
+
Key capabilities include:
|
|
57
|
+
|
|
58
|
+
- **Font Conversion**: Convert TTF and OTF files to WOFF format
|
|
59
|
+
- **Metadata Support**: Optionally embed XML metadata in WOFF files
|
|
60
|
+
- **Private Data**: Include private data blocks for font-specific information
|
|
61
|
+
- **Compression**: Apply zlib compression to reduce file sizes (typically 40-60% smaller than original)
|
|
62
|
+
|
|
63
|
+
**Note**: This tool produces WOFF 1.0 files. For WOFF 2.0 (which offers better compression), use the `woff2` tool instead.
|
|
64
|
+
|
|
65
|
+
## Prerequisites
|
|
66
|
+
|
|
67
|
+
Before installing sfnt2woff on any platform, ensure:
|
|
68
|
+
|
|
69
|
+
1. **Internet connectivity** - Required to download packages
|
|
70
|
+
2. **Administrative privileges** - Required for system-wide installation
|
|
71
|
+
3. **Sufficient disk space** - At least 50 MB for installation with dependencies
|
|
72
|
+
|
|
73
|
+
## Platform-Specific Installation
|
|
74
|
+
|
|
75
|
+
### macOS (Homebrew)
|
|
76
|
+
|
|
77
|
+
#### Prerequisites
|
|
78
|
+
|
|
79
|
+
- macOS 12 (Monterey) or later
|
|
80
|
+
- Homebrew package manager installed
|
|
81
|
+
- Xcode Command Line Tools installed
|
|
82
|
+
|
|
83
|
+
If Homebrew is not installed, install it first:
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
If Xcode Command Line Tools are not installed:
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
xcode-select --install
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
#### Installation Steps
|
|
96
|
+
|
|
97
|
+
Run the following commands to add the webfonttools tap and install sfnt2woff:
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
brew tap bramstein/webfonttools
|
|
101
|
+
brew install --quiet sfnt2woff
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
The first command adds a third-party Homebrew repository containing web font tools. The second command installs sfnt2woff along with its companion tool woff2sfnt (for reverse conversion). The `--quiet` flag suppresses non-essential output for cleaner automation.
|
|
105
|
+
|
|
106
|
+
#### Verification
|
|
107
|
+
|
|
108
|
+
Confirm the installation succeeded:
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
sfnt2woff
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
Expected output:
|
|
115
|
+
|
|
116
|
+
```
|
|
117
|
+
Usage: sfnt2woff [-v <maj>.<min>] [-m <metadata.xml>] [-p <private.dat>] <otffile>
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
Test the reverse tool is also available:
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
woff2sfnt
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
#### Troubleshooting
|
|
127
|
+
|
|
128
|
+
**Problem**: `sfnt2woff: command not found` after installation
|
|
129
|
+
|
|
130
|
+
**Solution**: Homebrew may not be in your PATH. Add it to your shell profile:
|
|
131
|
+
|
|
132
|
+
For Apple Silicon Macs (M1/M2/M3):
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zshrc
|
|
136
|
+
source ~/.zshrc
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
For Intel Macs:
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
echo 'eval "$(/usr/local/bin/brew shellenv)"' >> ~/.zshrc
|
|
143
|
+
source ~/.zshrc
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
**Problem**: Tap command fails
|
|
147
|
+
|
|
148
|
+
**Solution**: Update Homebrew and retry:
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
brew update
|
|
152
|
+
brew tap bramstein/webfonttools
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
**Problem**: Want better compression
|
|
156
|
+
|
|
157
|
+
**Solution**: Install sfnt2woff-zopfli, which uses Zopfli compression for 5-8% better compression:
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
brew install --quiet sfnt2woff-zopfli
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
---
|
|
164
|
+
|
|
165
|
+
### Ubuntu/Debian (APT)
|
|
166
|
+
|
|
167
|
+
#### Prerequisites
|
|
168
|
+
|
|
169
|
+
- Ubuntu 20.04 LTS or later, or Debian 11 (Bullseye) or later
|
|
170
|
+
- sudo privileges
|
|
171
|
+
- At least 50 MB free disk space
|
|
172
|
+
|
|
173
|
+
#### Installation Steps
|
|
174
|
+
|
|
175
|
+
Run the following commands to update the package index and install woff-tools (which provides sfnt2woff):
|
|
176
|
+
|
|
177
|
+
```bash
|
|
178
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
|
|
179
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y woff-tools
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
The `DEBIAN_FRONTEND=noninteractive` environment variable and `-y` flag ensure fully unattended installation without prompts. The woff-tools package includes both sfnt2woff (for conversion to WOFF) and woff2sfnt (for conversion from WOFF).
|
|
183
|
+
|
|
184
|
+
**Alternative (Better Compression)**: For 5-8% better compression, install sfnt2woff-zopfli instead:
|
|
185
|
+
|
|
186
|
+
```bash
|
|
187
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
|
|
188
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y sfnt2woff-zopfli
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
Note that sfnt2woff-zopfli installs commands named `sfnt2woff-zopfli` and `woff2sfnt-zopfli` rather than the standard `sfnt2woff` and `woff2sfnt`.
|
|
192
|
+
|
|
193
|
+
#### Verification
|
|
194
|
+
|
|
195
|
+
Confirm the installation succeeded:
|
|
196
|
+
|
|
197
|
+
```bash
|
|
198
|
+
sfnt2woff
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
Expected output:
|
|
202
|
+
|
|
203
|
+
```
|
|
204
|
+
Usage: sfnt2woff [-v <maj>.<min>] [-m <metadata.xml>] [-p <private.dat>] <otffile>
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
Test that the reverse tool is also available:
|
|
208
|
+
|
|
209
|
+
```bash
|
|
210
|
+
woff2sfnt
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
#### Troubleshooting
|
|
214
|
+
|
|
215
|
+
**Problem**: `E: Unable to locate package woff-tools`
|
|
216
|
+
|
|
217
|
+
**Solution**: Update the package index:
|
|
218
|
+
|
|
219
|
+
```bash
|
|
220
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
If still unavailable, verify your sources.list includes the universe repository:
|
|
224
|
+
|
|
225
|
+
```bash
|
|
226
|
+
sudo DEBIAN_FRONTEND=noninteractive add-apt-repository -y universe
|
|
227
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
**Problem**: Package version is outdated
|
|
231
|
+
|
|
232
|
+
**Solution**: The repository version is the original Mozilla implementation and is stable. For better compression, use sfnt2woff-zopfli which is more actively maintained.
|
|
233
|
+
|
|
234
|
+
---
|
|
235
|
+
|
|
236
|
+
### Raspberry Pi OS (APT)
|
|
237
|
+
|
|
238
|
+
#### Prerequisites
|
|
239
|
+
|
|
240
|
+
- Raspberry Pi OS (Bookworm or Bullseye), 32-bit or 64-bit
|
|
241
|
+
- Raspberry Pi 3 or later recommended
|
|
242
|
+
- sudo privileges
|
|
243
|
+
- At least 50 MB free disk space
|
|
244
|
+
|
|
245
|
+
#### Installation Steps
|
|
246
|
+
|
|
247
|
+
Raspberry Pi OS is based on Debian, so the installation process uses APT. Run the following commands:
|
|
248
|
+
|
|
249
|
+
```bash
|
|
250
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
|
|
251
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y woff-tools
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
**ARM Architecture Note**: The woff-tools package is available for ARM architectures (armhf, arm64) in the Debian/Raspberry Pi OS repositories. The package is compiled natively for ARM, so no special considerations are required.
|
|
255
|
+
|
|
256
|
+
**Alternative (Better Compression)**: The sfnt2woff-zopfli package is also available for ARM:
|
|
257
|
+
|
|
258
|
+
```bash
|
|
259
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
|
|
260
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y sfnt2woff-zopfli
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
Supported ARM architectures for sfnt2woff-zopfli:
|
|
264
|
+
- arm64 (64-bit Raspberry Pi OS)
|
|
265
|
+
- armhf (32-bit Raspberry Pi OS)
|
|
266
|
+
- armel (older 32-bit ARM systems)
|
|
267
|
+
|
|
268
|
+
#### Verification
|
|
269
|
+
|
|
270
|
+
Confirm the installation succeeded:
|
|
271
|
+
|
|
272
|
+
```bash
|
|
273
|
+
sfnt2woff
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
Expected output:
|
|
277
|
+
|
|
278
|
+
```
|
|
279
|
+
Usage: sfnt2woff [-v <maj>.<min>] [-m <metadata.xml>] [-p <private.dat>] <otffile>
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
Test that the reverse tool is also available:
|
|
283
|
+
|
|
284
|
+
```bash
|
|
285
|
+
woff2sfnt
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
#### Troubleshooting
|
|
289
|
+
|
|
290
|
+
**Problem**: Package not found
|
|
291
|
+
|
|
292
|
+
**Solution**: Ensure your package lists are current:
|
|
293
|
+
|
|
294
|
+
```bash
|
|
295
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
**Problem**: Slow font conversion on older Raspberry Pi models
|
|
299
|
+
|
|
300
|
+
**Solution**: Font conversion is CPU-intensive. On Raspberry Pi 2 or earlier, expect longer processing times. Consider processing fonts on a more powerful machine if converting many files.
|
|
301
|
+
|
|
302
|
+
---
|
|
303
|
+
|
|
304
|
+
### Amazon Linux (DNF/YUM)
|
|
305
|
+
|
|
306
|
+
#### Prerequisites
|
|
307
|
+
|
|
308
|
+
- Amazon Linux 2023 (AL2023) or Amazon Linux 2 (AL2)
|
|
309
|
+
- sudo privileges
|
|
310
|
+
- Development tools for compiling from source
|
|
311
|
+
- At least 100 MB free disk space
|
|
312
|
+
|
|
313
|
+
**Important**: sfnt2woff is not available in the standard Amazon Linux repositories. This guide compiles from source using the original Mozilla codebase.
|
|
314
|
+
|
|
315
|
+
#### Installation Steps
|
|
316
|
+
|
|
317
|
+
**Step 1: Install build dependencies**
|
|
318
|
+
|
|
319
|
+
For Amazon Linux 2023:
|
|
320
|
+
|
|
321
|
+
```bash
|
|
322
|
+
sudo dnf install -y gcc make zlib-devel git
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
For Amazon Linux 2:
|
|
326
|
+
|
|
327
|
+
```bash
|
|
328
|
+
sudo yum install -y gcc make zlib-devel git
|
|
329
|
+
```
|
|
330
|
+
|
|
331
|
+
**Step 2: Clone the source repository**
|
|
332
|
+
|
|
333
|
+
```bash
|
|
334
|
+
cd /tmp
|
|
335
|
+
git clone https://github.com/wget/sfnt2woff.git
|
|
336
|
+
cd sfnt2woff
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
**Step 3: Compile the tools**
|
|
340
|
+
|
|
341
|
+
```bash
|
|
342
|
+
make
|
|
343
|
+
```
|
|
344
|
+
|
|
345
|
+
This compiles both sfnt2woff (OTF/TTF to WOFF) and woff2sfnt (WOFF to OTF/TTF).
|
|
346
|
+
|
|
347
|
+
**Step 4: Install the binaries**
|
|
348
|
+
|
|
349
|
+
```bash
|
|
350
|
+
sudo cp sfnt2woff woff2sfnt /usr/local/bin/
|
|
351
|
+
sudo chmod 755 /usr/local/bin/sfnt2woff /usr/local/bin/woff2sfnt
|
|
352
|
+
```
|
|
353
|
+
|
|
354
|
+
**Step 5: Clean up**
|
|
355
|
+
|
|
356
|
+
```bash
|
|
357
|
+
cd /
|
|
358
|
+
rm -rf /tmp/sfnt2woff
|
|
359
|
+
```
|
|
360
|
+
|
|
361
|
+
#### Verification
|
|
362
|
+
|
|
363
|
+
Confirm the installation succeeded:
|
|
364
|
+
|
|
365
|
+
```bash
|
|
366
|
+
sfnt2woff
|
|
367
|
+
```
|
|
368
|
+
|
|
369
|
+
Expected output:
|
|
370
|
+
|
|
371
|
+
```
|
|
372
|
+
Usage: sfnt2woff [-v <maj>.<min>] [-m <metadata.xml>] [-p <private.dat>] <otffile>
|
|
373
|
+
```
|
|
374
|
+
|
|
375
|
+
Test that the reverse tool is also available:
|
|
376
|
+
|
|
377
|
+
```bash
|
|
378
|
+
woff2sfnt
|
|
379
|
+
```
|
|
380
|
+
|
|
381
|
+
#### Troubleshooting
|
|
382
|
+
|
|
383
|
+
**Problem**: `make` fails with "zlib.h: No such file or directory"
|
|
384
|
+
|
|
385
|
+
**Solution**: Install the zlib development package:
|
|
386
|
+
|
|
387
|
+
For Amazon Linux 2023:
|
|
388
|
+
|
|
389
|
+
```bash
|
|
390
|
+
sudo dnf install -y zlib-devel
|
|
391
|
+
```
|
|
392
|
+
|
|
393
|
+
For Amazon Linux 2:
|
|
394
|
+
|
|
395
|
+
```bash
|
|
396
|
+
sudo yum install -y zlib-devel
|
|
397
|
+
```
|
|
398
|
+
|
|
399
|
+
**Problem**: `sfnt2woff: command not found` after installation
|
|
400
|
+
|
|
401
|
+
**Solution**: Ensure `/usr/local/bin` is in your PATH:
|
|
402
|
+
|
|
403
|
+
```bash
|
|
404
|
+
echo $PATH | grep -q '/usr/local/bin' && echo "PATH OK" || echo "PATH missing /usr/local/bin"
|
|
405
|
+
```
|
|
406
|
+
|
|
407
|
+
If missing, add it:
|
|
408
|
+
|
|
409
|
+
```bash
|
|
410
|
+
echo 'export PATH="/usr/local/bin:$PATH"' >> ~/.bashrc
|
|
411
|
+
source ~/.bashrc
|
|
412
|
+
```
|
|
413
|
+
|
|
414
|
+
**Problem**: Git clone fails
|
|
415
|
+
|
|
416
|
+
**Solution**: Ensure git is installed and you have internet connectivity:
|
|
417
|
+
|
|
418
|
+
```bash
|
|
419
|
+
sudo dnf install -y git # AL2023
|
|
420
|
+
sudo yum install -y git # AL2
|
|
421
|
+
```
|
|
422
|
+
|
|
423
|
+
---
|
|
424
|
+
|
|
425
|
+
### Windows (Chocolatey)
|
|
426
|
+
|
|
427
|
+
#### Prerequisites
|
|
428
|
+
|
|
429
|
+
- Windows 10 or later (64-bit)
|
|
430
|
+
- Administrator PowerShell or Command Prompt
|
|
431
|
+
- Development tools for compiling from source
|
|
432
|
+
|
|
433
|
+
**Important**: sfnt2woff is not available as a Chocolatey or winget package. This guide uses Node.js with an npm package that provides sfnt2woff functionality.
|
|
434
|
+
|
|
435
|
+
#### Installation Steps
|
|
436
|
+
|
|
437
|
+
**Step 1: Install Node.js via Chocolatey**
|
|
438
|
+
|
|
439
|
+
If Node.js is not already installed, run in an Administrator PowerShell:
|
|
440
|
+
|
|
441
|
+
```powershell
|
|
442
|
+
choco install nodejs-lts -y
|
|
443
|
+
```
|
|
444
|
+
|
|
445
|
+
Close and reopen PowerShell to refresh the PATH.
|
|
446
|
+
|
|
447
|
+
**Step 2: Install sfnt2woff via npm**
|
|
448
|
+
|
|
449
|
+
```powershell
|
|
450
|
+
npm install -g sfnt2woff
|
|
451
|
+
```
|
|
452
|
+
|
|
453
|
+
The `-g` flag installs the package globally, making the command available system-wide.
|
|
454
|
+
|
|
455
|
+
**Note**: The npm package provides equivalent functionality to the original Mozilla tool but is implemented in JavaScript/Node.js.
|
|
456
|
+
|
|
457
|
+
#### Verification
|
|
458
|
+
|
|
459
|
+
Confirm the installation succeeded:
|
|
460
|
+
|
|
461
|
+
```powershell
|
|
462
|
+
npx sfnt2woff --help
|
|
463
|
+
```
|
|
464
|
+
|
|
465
|
+
Expected behavior: The command should display usage information or process fonts when given appropriate arguments.
|
|
466
|
+
|
|
467
|
+
Test basic functionality by converting a font file:
|
|
468
|
+
|
|
469
|
+
```powershell
|
|
470
|
+
# If you have a TTF file available:
|
|
471
|
+
npx sfnt2woff input.ttf output.woff
|
|
472
|
+
```
|
|
473
|
+
|
|
474
|
+
#### Troubleshooting
|
|
475
|
+
|
|
476
|
+
**Problem**: `npm: The term 'npm' is not recognized`
|
|
477
|
+
|
|
478
|
+
**Solution**: Node.js is not installed or not in PATH. Install Node.js:
|
|
479
|
+
|
|
480
|
+
```powershell
|
|
481
|
+
choco install nodejs-lts -y
|
|
482
|
+
```
|
|
483
|
+
|
|
484
|
+
Then close and reopen your terminal.
|
|
485
|
+
|
|
486
|
+
**Problem**: Permission errors during npm install
|
|
487
|
+
|
|
488
|
+
**Solution**: Run the command in an Administrator PowerShell, or configure npm to use a different global directory:
|
|
489
|
+
|
|
490
|
+
```powershell
|
|
491
|
+
npm config set prefix %USERPROFILE%\npm
|
|
492
|
+
```
|
|
493
|
+
|
|
494
|
+
**Problem**: Need the original C-based tool instead of Node.js version
|
|
495
|
+
|
|
496
|
+
**Solution**: Use WSL (Windows Subsystem for Linux) to run the native Linux version. See the WSL section below.
|
|
497
|
+
|
|
498
|
+
---
|
|
499
|
+
|
|
500
|
+
### WSL (Ubuntu)
|
|
501
|
+
|
|
502
|
+
#### Prerequisites
|
|
503
|
+
|
|
504
|
+
- Windows 10 version 2004 or higher, or Windows 11
|
|
505
|
+
- WSL 2 enabled with Ubuntu distribution installed
|
|
506
|
+
- sudo privileges within WSL
|
|
507
|
+
|
|
508
|
+
**Note**: WSL provides a full Linux environment, allowing you to use the native woff-tools package.
|
|
509
|
+
|
|
510
|
+
#### Installation Steps
|
|
511
|
+
|
|
512
|
+
Open your WSL Ubuntu terminal and run:
|
|
513
|
+
|
|
514
|
+
```bash
|
|
515
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
|
|
516
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y woff-tools
|
|
517
|
+
```
|
|
518
|
+
|
|
519
|
+
The installation process is identical to native Ubuntu since WSL Ubuntu uses the same package repositories.
|
|
520
|
+
|
|
521
|
+
**Alternative (Better Compression)**:
|
|
522
|
+
|
|
523
|
+
```bash
|
|
524
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y sfnt2woff-zopfli
|
|
525
|
+
```
|
|
526
|
+
|
|
527
|
+
#### Verification
|
|
528
|
+
|
|
529
|
+
Confirm the installation succeeded:
|
|
530
|
+
|
|
531
|
+
```bash
|
|
532
|
+
sfnt2woff
|
|
533
|
+
```
|
|
534
|
+
|
|
535
|
+
Expected output:
|
|
536
|
+
|
|
537
|
+
```
|
|
538
|
+
Usage: sfnt2woff [-v <maj>.<min>] [-m <metadata.xml>] [-p <private.dat>] <otffile>
|
|
539
|
+
```
|
|
540
|
+
|
|
541
|
+
Test that the reverse tool is also available:
|
|
542
|
+
|
|
543
|
+
```bash
|
|
544
|
+
woff2sfnt
|
|
545
|
+
```
|
|
546
|
+
|
|
547
|
+
#### Troubleshooting
|
|
548
|
+
|
|
549
|
+
**Problem**: Package installation fails with network errors
|
|
550
|
+
|
|
551
|
+
**Solution**: WSL may have DNS issues. Update the resolv.conf:
|
|
552
|
+
|
|
553
|
+
```bash
|
|
554
|
+
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf > /dev/null
|
|
555
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
|
|
556
|
+
```
|
|
557
|
+
|
|
558
|
+
**Problem**: Need to process font files on Windows filesystem
|
|
559
|
+
|
|
560
|
+
**Solution**: Access Windows files through `/mnt/c/`:
|
|
561
|
+
|
|
562
|
+
```bash
|
|
563
|
+
# Example: Convert a font from Windows Downloads folder
|
|
564
|
+
sfnt2woff /mnt/c/Users/YourUsername/Downloads/myfont.ttf
|
|
565
|
+
# Output will be /mnt/c/Users/YourUsername/Downloads/myfont.woff
|
|
566
|
+
```
|
|
567
|
+
|
|
568
|
+
**Problem**: Output file created in wrong location
|
|
569
|
+
|
|
570
|
+
**Solution**: By default, sfnt2woff creates the output file in the same directory as the input file with a `.woff` extension. Navigate to the input file's directory or specify the full path.
|
|
571
|
+
|
|
572
|
+
---
|
|
573
|
+
|
|
574
|
+
### Git Bash (Manual/Portable)
|
|
575
|
+
|
|
576
|
+
#### Prerequisites
|
|
577
|
+
|
|
578
|
+
- Windows 10 or later (64-bit)
|
|
579
|
+
- Git Bash installed (comes with Git for Windows)
|
|
580
|
+
- Node.js installed
|
|
581
|
+
- Internet access
|
|
582
|
+
|
|
583
|
+
**Note**: Git Bash runs in a MinGW environment. The simplest approach is using the npm package since native compilation requires additional setup.
|
|
584
|
+
|
|
585
|
+
#### Installation Steps
|
|
586
|
+
|
|
587
|
+
**Step 1: Verify Node.js is available**
|
|
588
|
+
|
|
589
|
+
Open Git Bash and run:
|
|
590
|
+
|
|
591
|
+
```bash
|
|
592
|
+
node --version
|
|
593
|
+
npm --version
|
|
594
|
+
```
|
|
595
|
+
|
|
596
|
+
If Node.js is not installed, download and install it from https://nodejs.org/ or use the Windows Chocolatey method first.
|
|
597
|
+
|
|
598
|
+
**Step 2: Install sfnt2woff via npm**
|
|
599
|
+
|
|
600
|
+
```bash
|
|
601
|
+
npm install -g sfnt2woff
|
|
602
|
+
```
|
|
603
|
+
|
|
604
|
+
**Step 3: Verify npm global bin is in PATH**
|
|
605
|
+
|
|
606
|
+
```bash
|
|
607
|
+
npm config get prefix
|
|
608
|
+
```
|
|
609
|
+
|
|
610
|
+
Add the npm bin directory to your PATH if not already present:
|
|
611
|
+
|
|
612
|
+
```bash
|
|
613
|
+
echo 'export PATH="$(npm config get prefix)/bin:$PATH"' >> ~/.bashrc
|
|
614
|
+
source ~/.bashrc
|
|
615
|
+
```
|
|
616
|
+
|
|
617
|
+
#### Verification
|
|
618
|
+
|
|
619
|
+
Confirm the installation succeeded:
|
|
620
|
+
|
|
621
|
+
```bash
|
|
622
|
+
npx sfnt2woff --help
|
|
623
|
+
```
|
|
624
|
+
|
|
625
|
+
Test basic functionality:
|
|
626
|
+
|
|
627
|
+
```bash
|
|
628
|
+
# If you have a TTF file available:
|
|
629
|
+
npx sfnt2woff input.ttf output.woff
|
|
630
|
+
```
|
|
631
|
+
|
|
632
|
+
#### Troubleshooting
|
|
633
|
+
|
|
634
|
+
**Problem**: `npm: command not found`
|
|
635
|
+
|
|
636
|
+
**Solution**: Node.js is not installed or not in Git Bash's PATH. Install Node.js for Windows and ensure it's in your system PATH.
|
|
637
|
+
|
|
638
|
+
**Problem**: Path conversion issues with Windows-style paths
|
|
639
|
+
|
|
640
|
+
**Solution**: Use forward slashes and the MSYS path format:
|
|
641
|
+
|
|
642
|
+
```bash
|
|
643
|
+
# Instead of C:\Users\Me\Fonts\font.ttf
|
|
644
|
+
npx sfnt2woff /c/Users/Me/Fonts/font.ttf
|
|
645
|
+
```
|
|
646
|
+
|
|
647
|
+
**Problem**: Need the native C-based tool
|
|
648
|
+
|
|
649
|
+
**Solution**: For the native tool in Git Bash, you would need MSYS2 with a full MinGW development environment. A simpler approach is to use WSL instead.
|
|
650
|
+
|
|
651
|
+
---
|
|
652
|
+
|
|
653
|
+
## Post-Installation Configuration
|
|
654
|
+
|
|
655
|
+
After installing sfnt2woff on any platform, review these optional but useful configurations.
|
|
656
|
+
|
|
657
|
+
### Basic Usage
|
|
658
|
+
|
|
659
|
+
Convert a TrueType or OpenType font to WOFF:
|
|
660
|
+
|
|
661
|
+
```bash
|
|
662
|
+
sfnt2woff myfont.ttf
|
|
663
|
+
# Creates myfont.woff in the same directory
|
|
664
|
+
```
|
|
665
|
+
|
|
666
|
+
Convert with a specific version number:
|
|
667
|
+
|
|
668
|
+
```bash
|
|
669
|
+
sfnt2woff -v 1.0 myfont.ttf
|
|
670
|
+
```
|
|
671
|
+
|
|
672
|
+
Include XML metadata:
|
|
673
|
+
|
|
674
|
+
```bash
|
|
675
|
+
sfnt2woff -m metadata.xml myfont.ttf
|
|
676
|
+
```
|
|
677
|
+
|
|
678
|
+
### Reverse Conversion
|
|
679
|
+
|
|
680
|
+
Convert a WOFF file back to OTF/TTF:
|
|
681
|
+
|
|
682
|
+
```bash
|
|
683
|
+
woff2sfnt myfont.woff > myfont.ttf
|
|
684
|
+
```
|
|
685
|
+
|
|
686
|
+
Extract just the metadata from a WOFF file:
|
|
687
|
+
|
|
688
|
+
```bash
|
|
689
|
+
woff2sfnt -m myfont.woff
|
|
690
|
+
```
|
|
691
|
+
|
|
692
|
+
### Batch Processing
|
|
693
|
+
|
|
694
|
+
Convert all TTF files in a directory:
|
|
695
|
+
|
|
696
|
+
```bash
|
|
697
|
+
for f in *.ttf; do sfnt2woff "$f"; done
|
|
698
|
+
```
|
|
699
|
+
|
|
700
|
+
Convert all OTF files:
|
|
701
|
+
|
|
702
|
+
```bash
|
|
703
|
+
for f in *.otf; do sfnt2woff "$f"; done
|
|
704
|
+
```
|
|
705
|
+
|
|
706
|
+
---
|
|
707
|
+
|
|
708
|
+
## Common Issues
|
|
709
|
+
|
|
710
|
+
### Issue: Output File Not Created
|
|
711
|
+
|
|
712
|
+
**Symptoms**: No error message but no .woff file appears
|
|
713
|
+
|
|
714
|
+
**Solutions**:
|
|
715
|
+
|
|
716
|
+
- Verify the input file exists and is a valid TTF/OTF:
|
|
717
|
+
|
|
718
|
+
```bash
|
|
719
|
+
file myfont.ttf
|
|
720
|
+
```
|
|
721
|
+
|
|
722
|
+
- Check file permissions on the output directory
|
|
723
|
+
- Ensure sufficient disk space
|
|
724
|
+
|
|
725
|
+
### Issue: "Malformed font" or "Invalid font data" Errors
|
|
726
|
+
|
|
727
|
+
**Symptoms**: sfnt2woff reports font data errors
|
|
728
|
+
|
|
729
|
+
**Solutions**:
|
|
730
|
+
|
|
731
|
+
- Verify the input file is a valid TrueType or OpenType font, not WOFF or WOFF2
|
|
732
|
+
- Some fonts with unusual table structures may not convert correctly
|
|
733
|
+
- Try using a font editor to re-export the font before conversion
|
|
734
|
+
|
|
735
|
+
### Issue: Large Output File Size
|
|
736
|
+
|
|
737
|
+
**Symptoms**: WOFF file is not significantly smaller than the original
|
|
738
|
+
|
|
739
|
+
**Solutions**:
|
|
740
|
+
|
|
741
|
+
- This is normal for some fonts, especially those already optimized
|
|
742
|
+
- For better compression, use sfnt2woff-zopfli (5-8% smaller):
|
|
743
|
+
|
|
744
|
+
```bash
|
|
745
|
+
# Ubuntu/Debian/Raspberry Pi OS
|
|
746
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y sfnt2woff-zopfli
|
|
747
|
+
sfnt2woff-zopfli myfont.ttf
|
|
748
|
+
```
|
|
749
|
+
|
|
750
|
+
```bash
|
|
751
|
+
# macOS
|
|
752
|
+
brew install --quiet sfnt2woff-zopfli
|
|
753
|
+
sfnt2woff-zopfli myfont.ttf
|
|
754
|
+
```
|
|
755
|
+
|
|
756
|
+
### Issue: WOFF2 Needed Instead of WOFF
|
|
757
|
+
|
|
758
|
+
**Symptoms**: Need WOFF2 format for better browser support or compression
|
|
759
|
+
|
|
760
|
+
**Solutions**:
|
|
761
|
+
|
|
762
|
+
- sfnt2woff only produces WOFF 1.0 files
|
|
763
|
+
- For WOFF2, install the woff2 tool instead:
|
|
764
|
+
|
|
765
|
+
```bash
|
|
766
|
+
# Ubuntu/Debian
|
|
767
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y woff2
|
|
768
|
+
|
|
769
|
+
# macOS
|
|
770
|
+
brew tap bramstein/webfonttools
|
|
771
|
+
brew install --quiet woff2
|
|
772
|
+
```
|
|
773
|
+
|
|
774
|
+
### Issue: Cannot Convert Variable Fonts
|
|
775
|
+
|
|
776
|
+
**Symptoms**: Variable font (with font variations) fails to convert
|
|
777
|
+
|
|
778
|
+
**Solutions**:
|
|
779
|
+
|
|
780
|
+
- The original sfnt2woff tool predates variable fonts and may not handle them correctly
|
|
781
|
+
- Use Google's woff2 tools which have better support for modern font features
|
|
782
|
+
|
|
783
|
+
---
|
|
784
|
+
|
|
785
|
+
## References
|
|
786
|
+
|
|
787
|
+
- [WOFF File Format Specification (W3C)](https://www.w3.org/TR/WOFF/)
|
|
788
|
+
- [MDN Web Docs - WOFF](https://developer.mozilla.org/en-US/docs/Web/CSS/Guides/Fonts/WOFF)
|
|
789
|
+
- [GitHub - woff-tools (wget fork)](https://github.com/wget/sfnt2woff)
|
|
790
|
+
- [GitHub - sfnt2woff-zopfli](https://github.com/bramstein/sfnt2woff-zopfli)
|
|
791
|
+
- [Homebrew webfonttools Tap](https://github.com/bramstein/homebrew-webfonttools)
|
|
792
|
+
- [Ubuntu Packages - woff-tools](https://packages.ubuntu.com/woff-tools)
|
|
793
|
+
- [Debian Packages - sfnt2woff-zopfli](https://packages.debian.org/sfnt2woff-zopfli)
|
|
794
|
+
- [npm - sfnt2woff](https://www.npmjs.com/package/sfnt2woff)
|
|
795
|
+
- [Ubuntu Manpage - sfnt2woff](https://manpages.ubuntu.com/manpages/jammy/man1/sfnt2woff.1.html)
|