@fredlackey/devutils 0.0.18 → 0.0.19

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.
Files changed (331) hide show
  1. package/README.md +32 -150
  2. package/package.json +5 -82
  3. package/bin/dev.js +0 -16
  4. package/files/README.md +0 -0
  5. package/files/claude/.claude/commands/setup-context.md +0 -3
  6. package/files/monorepos/_archive/README.md +0 -36
  7. package/files/monorepos/_legacy/README.md +0 -36
  8. package/files/monorepos/ai-docs/README.md +0 -33
  9. package/files/monorepos/apps/README.md +0 -24
  10. package/files/monorepos/docs/README.md +0 -40
  11. package/files/monorepos/packages/README.md +0 -25
  12. package/files/monorepos/research/README.md +0 -29
  13. package/files/monorepos/scripts/README.md +0 -24
  14. package/src/cli.js +0 -72
  15. package/src/commands/README.md +0 -41
  16. package/src/commands/configure.js +0 -199
  17. package/src/commands/identity.js +0 -1630
  18. package/src/commands/ignore.js +0 -247
  19. package/src/commands/install.js +0 -526
  20. package/src/commands/setup.js +0 -246
  21. package/src/commands/status.js +0 -223
  22. package/src/commands/update.js +0 -142
  23. package/src/commands/version.js +0 -100
  24. package/src/completion.js +0 -284
  25. package/src/constants.js +0 -45
  26. package/src/ignore/claude-code.txt +0 -10
  27. package/src/ignore/docker.txt +0 -18
  28. package/src/ignore/linux.txt +0 -23
  29. package/src/ignore/macos.txt +0 -36
  30. package/src/ignore/node.txt +0 -55
  31. package/src/ignore/terraform.txt +0 -37
  32. package/src/ignore/vscode.txt +0 -18
  33. package/src/ignore/windows.txt +0 -35
  34. package/src/index.js +0 -0
  35. package/src/installs/README.md +0 -399
  36. package/src/installs/adobe-creative-cloud.js +0 -546
  37. package/src/installs/adobe-creative-cloud.md +0 -605
  38. package/src/installs/appcleaner.js +0 -321
  39. package/src/installs/appcleaner.md +0 -699
  40. package/src/installs/apt-transport-https.js +0 -390
  41. package/src/installs/apt-transport-https.md +0 -678
  42. package/src/installs/atomicparsley.js +0 -642
  43. package/src/installs/atomicparsley.md +0 -795
  44. package/src/installs/aws-cli.js +0 -797
  45. package/src/installs/aws-cli.md +0 -727
  46. package/src/installs/balena-etcher.js +0 -710
  47. package/src/installs/balena-etcher.md +0 -761
  48. package/src/installs/bambu-studio.js +0 -1143
  49. package/src/installs/bambu-studio.md +0 -780
  50. package/src/installs/bash-completion.js +0 -575
  51. package/src/installs/bash-completion.md +0 -833
  52. package/src/installs/bash.js +0 -417
  53. package/src/installs/bash.md +0 -993
  54. package/src/installs/beyond-compare.js +0 -603
  55. package/src/installs/beyond-compare.md +0 -813
  56. package/src/installs/brave-browser.js +0 -968
  57. package/src/installs/brave-browser.md +0 -650
  58. package/src/installs/build-essential.js +0 -529
  59. package/src/installs/build-essential.md +0 -977
  60. package/src/installs/ca-certificates.js +0 -618
  61. package/src/installs/ca-certificates.md +0 -937
  62. package/src/installs/caffeine.js +0 -508
  63. package/src/installs/caffeine.md +0 -839
  64. package/src/installs/camtasia.js +0 -596
  65. package/src/installs/camtasia.md +0 -762
  66. package/src/installs/chatgpt.js +0 -476
  67. package/src/installs/chatgpt.md +0 -814
  68. package/src/installs/chocolatey.js +0 -456
  69. package/src/installs/chocolatey.md +0 -661
  70. package/src/installs/chrome-canary.js +0 -419
  71. package/src/installs/chrome-canary.md +0 -641
  72. package/src/installs/chromium.js +0 -667
  73. package/src/installs/chromium.md +0 -838
  74. package/src/installs/claude-code.js +0 -576
  75. package/src/installs/claude-code.md +0 -1173
  76. package/src/installs/cloudflare-warp.js +0 -900
  77. package/src/installs/cloudflare-warp.md +0 -1047
  78. package/src/installs/comet-browser.js +0 -588
  79. package/src/installs/comet-browser.md +0 -731
  80. package/src/installs/curl.js +0 -379
  81. package/src/installs/curl.md +0 -714
  82. package/src/installs/cursor.js +0 -579
  83. package/src/installs/cursor.md +0 -970
  84. package/src/installs/dbeaver.js +0 -924
  85. package/src/installs/dbeaver.md +0 -939
  86. package/src/installs/dbschema.js +0 -692
  87. package/src/installs/dbschema.md +0 -925
  88. package/src/installs/dependencies.md +0 -453
  89. package/src/installs/development-tools.js +0 -600
  90. package/src/installs/development-tools.md +0 -977
  91. package/src/installs/docker.js +0 -1029
  92. package/src/installs/docker.md +0 -1109
  93. package/src/installs/drawio.js +0 -1019
  94. package/src/installs/drawio.md +0 -795
  95. package/src/installs/elmedia-player.js +0 -347
  96. package/src/installs/elmedia-player.md +0 -556
  97. package/src/installs/ffmpeg.js +0 -889
  98. package/src/installs/ffmpeg.md +0 -852
  99. package/src/installs/file.js +0 -464
  100. package/src/installs/file.md +0 -987
  101. package/src/installs/gemini-cli.js +0 -811
  102. package/src/installs/gemini-cli.md +0 -1153
  103. package/src/installs/git.js +0 -400
  104. package/src/installs/git.md +0 -907
  105. package/src/installs/gitego.js +0 -949
  106. package/src/installs/gitego.md +0 -1172
  107. package/src/installs/go.js +0 -931
  108. package/src/installs/go.md +0 -958
  109. package/src/installs/google-antigravity.js +0 -913
  110. package/src/installs/google-antigravity.md +0 -1075
  111. package/src/installs/google-chrome.js +0 -833
  112. package/src/installs/google-chrome.md +0 -862
  113. package/src/installs/gpg.js +0 -480
  114. package/src/installs/gpg.md +0 -1056
  115. package/src/installs/homebrew.js +0 -1028
  116. package/src/installs/homebrew.md +0 -988
  117. package/src/installs/imageoptim.js +0 -968
  118. package/src/installs/imageoptim.md +0 -1119
  119. package/src/installs/installers.json +0 -4032
  120. package/src/installs/installers.json.tmp +0 -3953
  121. package/src/installs/jq.js +0 -400
  122. package/src/installs/jq.md +0 -809
  123. package/src/installs/keyboard-maestro.js +0 -719
  124. package/src/installs/keyboard-maestro.md +0 -825
  125. package/src/installs/kiro.js +0 -864
  126. package/src/installs/kiro.md +0 -1015
  127. package/src/installs/latex.js +0 -789
  128. package/src/installs/latex.md +0 -1095
  129. package/src/installs/lftp.js +0 -356
  130. package/src/installs/lftp.md +0 -907
  131. package/src/installs/lsb-release.js +0 -346
  132. package/src/installs/lsb-release.md +0 -814
  133. package/src/installs/messenger.js +0 -847
  134. package/src/installs/messenger.md +0 -900
  135. package/src/installs/microsoft-office.js +0 -568
  136. package/src/installs/microsoft-office.md +0 -760
  137. package/src/installs/microsoft-teams.js +0 -801
  138. package/src/installs/microsoft-teams.md +0 -886
  139. package/src/installs/moom.js +0 -326
  140. package/src/installs/moom.md +0 -570
  141. package/src/installs/node.js +0 -904
  142. package/src/installs/node.md +0 -1153
  143. package/src/installs/nordpass.js +0 -716
  144. package/src/installs/nordpass.md +0 -921
  145. package/src/installs/nordvpn.js +0 -892
  146. package/src/installs/nordvpn.md +0 -1052
  147. package/src/installs/nvm.js +0 -995
  148. package/src/installs/nvm.md +0 -1057
  149. package/src/installs/ohmyzsh.js +0 -529
  150. package/src/installs/ohmyzsh.md +0 -1094
  151. package/src/installs/openssh.js +0 -804
  152. package/src/installs/openssh.md +0 -1056
  153. package/src/installs/pandoc.js +0 -662
  154. package/src/installs/pandoc.md +0 -1036
  155. package/src/installs/parallels-desktop.js +0 -431
  156. package/src/installs/parallels-desktop.md +0 -446
  157. package/src/installs/pinentry.js +0 -510
  158. package/src/installs/pinentry.md +0 -1142
  159. package/src/installs/pngyu.js +0 -869
  160. package/src/installs/pngyu.md +0 -896
  161. package/src/installs/postman.js +0 -799
  162. package/src/installs/postman.md +0 -940
  163. package/src/installs/procps.js +0 -425
  164. package/src/installs/procps.md +0 -851
  165. package/src/installs/safari-tech-preview.js +0 -374
  166. package/src/installs/safari-tech-preview.md +0 -533
  167. package/src/installs/sfnt2woff.js +0 -658
  168. package/src/installs/sfnt2woff.md +0 -795
  169. package/src/installs/shellcheck.js +0 -481
  170. package/src/installs/shellcheck.md +0 -1005
  171. package/src/installs/slack.js +0 -741
  172. package/src/installs/slack.md +0 -865
  173. package/src/installs/snagit.js +0 -585
  174. package/src/installs/snagit.md +0 -844
  175. package/src/installs/software-properties-common.js +0 -372
  176. package/src/installs/software-properties-common.md +0 -805
  177. package/src/installs/spotify.js +0 -877
  178. package/src/installs/spotify.md +0 -901
  179. package/src/installs/studio-3t.js +0 -823
  180. package/src/installs/studio-3t.md +0 -918
  181. package/src/installs/sublime-text.js +0 -804
  182. package/src/installs/sublime-text.md +0 -914
  183. package/src/installs/superwhisper.js +0 -706
  184. package/src/installs/superwhisper.md +0 -630
  185. package/src/installs/tailscale.js +0 -745
  186. package/src/installs/tailscale.md +0 -1100
  187. package/src/installs/tar.js +0 -389
  188. package/src/installs/tar.md +0 -946
  189. package/src/installs/termius.js +0 -798
  190. package/src/installs/termius.md +0 -844
  191. package/src/installs/terraform.js +0 -779
  192. package/src/installs/terraform.md +0 -899
  193. package/src/installs/tfenv.js +0 -778
  194. package/src/installs/tfenv.md +0 -1091
  195. package/src/installs/tidal.js +0 -771
  196. package/src/installs/tidal.md +0 -864
  197. package/src/installs/tmux.js +0 -346
  198. package/src/installs/tmux.md +0 -1030
  199. package/src/installs/tree.js +0 -411
  200. package/src/installs/tree.md +0 -833
  201. package/src/installs/unzip.js +0 -460
  202. package/src/installs/unzip.md +0 -879
  203. package/src/installs/vim.js +0 -421
  204. package/src/installs/vim.md +0 -1040
  205. package/src/installs/vlc.js +0 -821
  206. package/src/installs/vlc.md +0 -927
  207. package/src/installs/vscode.js +0 -843
  208. package/src/installs/vscode.md +0 -1002
  209. package/src/installs/wget.js +0 -420
  210. package/src/installs/wget.md +0 -791
  211. package/src/installs/whatsapp.js +0 -729
  212. package/src/installs/whatsapp.md +0 -854
  213. package/src/installs/winpty.js +0 -352
  214. package/src/installs/winpty.md +0 -620
  215. package/src/installs/woff2.js +0 -553
  216. package/src/installs/woff2.md +0 -977
  217. package/src/installs/wsl.js +0 -572
  218. package/src/installs/wsl.md +0 -699
  219. package/src/installs/xcode-clt.js +0 -520
  220. package/src/installs/xcode-clt.md +0 -351
  221. package/src/installs/xcode.js +0 -560
  222. package/src/installs/xcode.md +0 -573
  223. package/src/installs/yarn.js +0 -824
  224. package/src/installs/yarn.md +0 -1074
  225. package/src/installs/yq.js +0 -654
  226. package/src/installs/yq.md +0 -944
  227. package/src/installs/yt-dlp.js +0 -701
  228. package/src/installs/yt-dlp.md +0 -946
  229. package/src/installs/yum-utils.js +0 -297
  230. package/src/installs/yum-utils.md +0 -648
  231. package/src/installs/zoom.js +0 -759
  232. package/src/installs/zoom.md +0 -884
  233. package/src/installs/zsh.js +0 -455
  234. package/src/installs/zsh.md +0 -1008
  235. package/src/scripts/README.md +0 -617
  236. package/src/scripts/STATUS.md +0 -208
  237. package/src/scripts/afk.js +0 -411
  238. package/src/scripts/backup-all.js +0 -746
  239. package/src/scripts/backup-source.js +0 -727
  240. package/src/scripts/brewd.js +0 -389
  241. package/src/scripts/brewi.js +0 -520
  242. package/src/scripts/brewr.js +0 -527
  243. package/src/scripts/brews.js +0 -477
  244. package/src/scripts/brewu.js +0 -504
  245. package/src/scripts/c.js +0 -201
  246. package/src/scripts/ccurl.js +0 -341
  247. package/src/scripts/certbot-crontab-init.js +0 -504
  248. package/src/scripts/certbot-init.js +0 -657
  249. package/src/scripts/ch.js +0 -355
  250. package/src/scripts/claude-danger.js +0 -268
  251. package/src/scripts/clean-dev.js +0 -435
  252. package/src/scripts/clear-dns-cache.js +0 -541
  253. package/src/scripts/clone.js +0 -435
  254. package/src/scripts/code-all.js +0 -437
  255. package/src/scripts/count-files.js +0 -211
  256. package/src/scripts/count-folders.js +0 -211
  257. package/src/scripts/count.js +0 -264
  258. package/src/scripts/d.js +0 -219
  259. package/src/scripts/datauri.js +0 -389
  260. package/src/scripts/delete-files.js +0 -380
  261. package/src/scripts/docker-clean.js +0 -426
  262. package/src/scripts/dp.js +0 -442
  263. package/src/scripts/e.js +0 -390
  264. package/src/scripts/empty-trash.js +0 -513
  265. package/src/scripts/evm.js +0 -444
  266. package/src/scripts/fetch-github-repos.js +0 -456
  267. package/src/scripts/get-channel.js +0 -345
  268. package/src/scripts/get-course.js +0 -399
  269. package/src/scripts/get-dependencies.js +0 -306
  270. package/src/scripts/get-folder.js +0 -799
  271. package/src/scripts/get-tunes.js +0 -426
  272. package/src/scripts/get-video.js +0 -367
  273. package/src/scripts/git-backup.js +0 -577
  274. package/src/scripts/git-clone.js +0 -493
  275. package/src/scripts/git-pup.js +0 -319
  276. package/src/scripts/git-push.js +0 -396
  277. package/src/scripts/h.js +0 -622
  278. package/src/scripts/hide-desktop-icons.js +0 -499
  279. package/src/scripts/hide-hidden-files.js +0 -538
  280. package/src/scripts/install-dependencies-from.js +0 -456
  281. package/src/scripts/ips.js +0 -663
  282. package/src/scripts/iso.js +0 -370
  283. package/src/scripts/killni.js +0 -577
  284. package/src/scripts/ll.js +0 -467
  285. package/src/scripts/local-ip.js +0 -325
  286. package/src/scripts/m.js +0 -524
  287. package/src/scripts/map.js +0 -309
  288. package/src/scripts/mkd.js +0 -351
  289. package/src/scripts/ncu-update-all.js +0 -457
  290. package/src/scripts/nginx-init.js +0 -718
  291. package/src/scripts/npmi.js +0 -382
  292. package/src/scripts/o.js +0 -511
  293. package/src/scripts/org-by-date.js +0 -338
  294. package/src/scripts/p.js +0 -224
  295. package/src/scripts/packages.js +0 -330
  296. package/src/scripts/path.js +0 -225
  297. package/src/scripts/ports.js +0 -597
  298. package/src/scripts/q.js +0 -305
  299. package/src/scripts/refresh-files.js +0 -394
  300. package/src/scripts/remove-smaller-files.js +0 -516
  301. package/src/scripts/rename-files-with-date.js +0 -533
  302. package/src/scripts/resize-image.js +0 -539
  303. package/src/scripts/rm-safe.js +0 -669
  304. package/src/scripts/s.js +0 -540
  305. package/src/scripts/set-git-public.js +0 -365
  306. package/src/scripts/show-desktop-icons.js +0 -475
  307. package/src/scripts/show-hidden-files.js +0 -472
  308. package/src/scripts/tpa.js +0 -280
  309. package/src/scripts/tpo.js +0 -280
  310. package/src/scripts/u.js +0 -505
  311. package/src/scripts/vpush.js +0 -437
  312. package/src/scripts/y.js +0 -283
  313. package/src/utils/README.md +0 -95
  314. package/src/utils/common/apps.js +0 -143
  315. package/src/utils/common/display.js +0 -157
  316. package/src/utils/common/network.js +0 -185
  317. package/src/utils/common/os.js +0 -294
  318. package/src/utils/common/package-manager.js +0 -301
  319. package/src/utils/common/privileges.js +0 -138
  320. package/src/utils/common/shell.js +0 -261
  321. package/src/utils/macos/apps.js +0 -228
  322. package/src/utils/macos/brew.js +0 -315
  323. package/src/utils/ubuntu/apt.js +0 -307
  324. package/src/utils/ubuntu/desktop.js +0 -292
  325. package/src/utils/ubuntu/snap.js +0 -344
  326. package/src/utils/ubuntu/systemd.js +0 -286
  327. package/src/utils/windows/choco.js +0 -465
  328. package/src/utils/windows/env.js +0 -246
  329. package/src/utils/windows/registry.js +0 -269
  330. package/src/utils/windows/shell.js +0 -240
  331. package/src/utils/windows/winget.js +0 -489
@@ -1,977 +0,0 @@
1
- # Installing woff2
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 run `dev install homebrew`
8
- - `Xcode Command Line Tools` - Install via `xcode-select --install`
9
- - **Optional:** None
10
- - **Auto-installed:**
11
- - `brotli` - Compression library automatically installed by Homebrew when installing woff2
12
-
13
- ### Ubuntu (APT/Snap)
14
- - **Required:**
15
- - `sudo privileges` - Required for running apt-get commands
16
- - **Optional:** None
17
- - **Auto-installed:**
18
- - All runtime dependencies are automatically handled by the APT package manager
19
-
20
- ### Raspberry Pi OS (APT/Snap)
21
- - **Required:**
22
- - `sudo privileges` - Required for running apt-get commands
23
- - **Optional:** None
24
- - **Auto-installed:**
25
- - All runtime dependencies are automatically handled by the APT package manager
26
-
27
- ### Amazon Linux (DNF/YUM)
28
- - **Required:**
29
- - `sudo privileges` - Required for installing build dependencies and binaries
30
- - `gcc-c++` - Install via `sudo dnf install -y gcc-c++` (AL2023) or `sudo yum install -y gcc-c++` (AL2)
31
- - `cmake` - Install via `sudo dnf install -y cmake` (AL2023) or `sudo yum install -y cmake3` (AL2)
32
- - `git` - Install via `sudo dnf install -y git` (AL2023) or `sudo yum install -y git` (AL2)
33
- - `brotli-devel` - Install via `sudo dnf install -y brotli-devel` (AL2023 only; AL2 uses bundled brotli)
34
- - **Optional:** None
35
- - **Auto-installed:**
36
- - `brotli` (bundled) - For Amazon Linux 2, brotli is included as a git submodule and compiled during the build process
37
-
38
- ### Windows (Chocolatey/winget)
39
- - **Required:** Installation not yet supported on this platform
40
- - **Optional:** None
41
- - **Auto-installed:** None
42
- - **Note:** The installer provides instructions to use WSL (Windows Subsystem for Linux) as an alternative. See the WSL section for WSL-specific dependencies.
43
-
44
- ### Git Bash (Manual/Portable)
45
- - **Required:** Installation not yet supported on this platform
46
- - **Optional:** None
47
- - **Auto-installed:** None
48
- - **Note:** The installer provides instructions to use WSL (Windows Subsystem for Linux) as an alternative, either by installing woff2 in WSL directly or by creating wrapper scripts in Git Bash that invoke WSL commands.
49
-
50
- ## Overview
51
-
52
- woff2 is Google's reference implementation of the Web Open Font Format 2.0 (WOFF2), a modern, highly compressed container format for packaging TrueType and OpenType fonts for efficient delivery over the web. WOFF2 uses the Brotli compression algorithm to achieve significantly better compression ratios than the original WOFF 1.0 format, typically reducing font file sizes by 30% compared to WOFF 1.0 and up to 50-70% compared to uncompressed TTF/OTF fonts.
53
-
54
- Key capabilities include:
55
-
56
- - **Font Compression**: Convert TTF and OTF fonts to highly compressed WOFF2 format using `woff2_compress`
57
- - **Font Decompression**: Convert WOFF2 files back to TTF format using `woff2_decompress`
58
- - **Font Information**: Display metadata and file information using `woff2_info`
59
- - **Brotli Compression**: Leverages Google's Brotli algorithm for superior compression ratios
60
- - **Variable Font Support**: Full support for modern variable fonts and OpenType features
61
-
62
- WOFF2 is the recommended format for web fonts due to its excellent browser support and compression efficiency. All modern browsers support WOFF2, making it the preferred choice for web developers optimizing font delivery.
63
-
64
- ## Prerequisites
65
-
66
- Before installing woff2 on any platform, ensure:
67
-
68
- 1. **Internet connectivity** - Required to download packages or source code
69
- 2. **Administrative privileges** - Required for system-wide installation
70
- 3. **Sufficient disk space** - At least 100 MB for installation with dependencies (more if compiling from source)
71
-
72
- ## Platform-Specific Installation
73
-
74
- ### macOS (Homebrew)
75
-
76
- #### Prerequisites
77
-
78
- - macOS 12 (Monterey) or later
79
- - Homebrew package manager installed
80
- - Xcode Command Line Tools installed
81
-
82
- If Homebrew is not installed, install it first:
83
-
84
- ```bash
85
- /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
86
- ```
87
-
88
- If Xcode Command Line Tools are not installed:
89
-
90
- ```bash
91
- xcode-select --install
92
- ```
93
-
94
- #### Installation Steps
95
-
96
- Run the following command to install woff2:
97
-
98
- ```bash
99
- brew install --quiet woff2
100
- ```
101
-
102
- The `--quiet` flag suppresses non-essential output for cleaner automation. Homebrew automatically installs the required dependency `brotli` (the compression library) if it is not already present.
103
-
104
- #### Verification
105
-
106
- Confirm the installation succeeded by checking the version:
107
-
108
- ```bash
109
- woff2_compress --version
110
- ```
111
-
112
- Expected output (version numbers may vary):
113
-
114
- ```
115
- woff2_compress 1.0.2
116
- ```
117
-
118
- Test that all tools are available:
119
-
120
- ```bash
121
- woff2_decompress --version
122
- woff2_info --version
123
- ```
124
-
125
- Verify the installation path:
126
-
127
- ```bash
128
- which woff2_compress
129
- ```
130
-
131
- Expected output: `/opt/homebrew/bin/woff2_compress` (Apple Silicon) or `/usr/local/bin/woff2_compress` (Intel).
132
-
133
- #### Troubleshooting
134
-
135
- **Problem**: `woff2_compress: command not found` after installation
136
-
137
- **Solution**: Homebrew may not be in your PATH. Add it to your shell profile:
138
-
139
- For Apple Silicon Macs (M1/M2/M3/M4):
140
-
141
- ```bash
142
- echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zshrc
143
- source ~/.zshrc
144
- ```
145
-
146
- For Intel Macs:
147
-
148
- ```bash
149
- echo 'eval "$(/usr/local/bin/brew shellenv)"' >> ~/.zshrc
150
- source ~/.zshrc
151
- ```
152
-
153
- **Problem**: Installation fails with permission errors
154
-
155
- **Solution**: Fix Homebrew permissions:
156
-
157
- ```bash
158
- sudo chown -R $(whoami) $(brew --prefix)/*
159
- ```
160
-
161
- **Problem**: Outdated version installed
162
-
163
- **Solution**: Update Homebrew and upgrade woff2:
164
-
165
- ```bash
166
- brew update && brew upgrade woff2
167
- ```
168
-
169
- ---
170
-
171
- ### Ubuntu/Debian (APT)
172
-
173
- #### Prerequisites
174
-
175
- - Ubuntu 20.04 LTS or later, or Debian 11 (Bullseye) or later
176
- - sudo privileges
177
- - At least 50 MB free disk space
178
-
179
- #### Installation Steps
180
-
181
- Run the following commands to update the package index and install woff2:
182
-
183
- ```bash
184
- sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
185
- sudo DEBIAN_FRONTEND=noninteractive apt-get install -y woff2
186
- ```
187
-
188
- The `DEBIAN_FRONTEND=noninteractive` environment variable and `-y` flag ensure fully unattended installation without prompts. The woff2 package includes three command-line utilities: `woff2_compress`, `woff2_decompress`, and `woff2_info`.
189
-
190
- **Package versions by distribution:**
191
-
192
- | Distribution | Version |
193
- |--------------|---------|
194
- | Ubuntu 24.04 (Noble) | 1.0.2-2build1 |
195
- | Ubuntu 22.04 (Jammy) | 1.0.2-1build4 |
196
- | Ubuntu 20.04 (Focal) | 1.0.2-1build2 |
197
- | Debian 12 (Bookworm) | 1.0.2-2 |
198
- | Debian 11 (Bullseye) | 1.0.2-1+b1 |
199
-
200
- #### Verification
201
-
202
- Confirm the installation succeeded:
203
-
204
- ```bash
205
- woff2_compress --version
206
- ```
207
-
208
- Expected output (version numbers may vary):
209
-
210
- ```
211
- woff2_compress 1.0.2
212
- ```
213
-
214
- Test that all tools are available:
215
-
216
- ```bash
217
- woff2_decompress --version
218
- woff2_info --version
219
- ```
220
-
221
- Verify the installation path:
222
-
223
- ```bash
224
- which woff2_compress
225
- ```
226
-
227
- Expected output: `/usr/bin/woff2_compress`
228
-
229
- #### Troubleshooting
230
-
231
- **Problem**: `E: Unable to locate package woff2`
232
-
233
- **Solution**: Update the package index:
234
-
235
- ```bash
236
- sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
237
- ```
238
-
239
- If still unavailable, verify your sources.list includes the universe repository (Ubuntu):
240
-
241
- ```bash
242
- sudo DEBIAN_FRONTEND=noninteractive add-apt-repository -y universe
243
- sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
244
- ```
245
-
246
- **Problem**: Need to install the development libraries
247
-
248
- **Solution**: Install the development package for linking against libwoff:
249
-
250
- ```bash
251
- sudo DEBIAN_FRONTEND=noninteractive apt-get install -y libwoff-dev
252
- ```
253
-
254
- ---
255
-
256
- ### Raspberry Pi OS (APT)
257
-
258
- #### Prerequisites
259
-
260
- - Raspberry Pi OS (Bookworm or Bullseye), 32-bit or 64-bit
261
- - Raspberry Pi 3 or later recommended
262
- - sudo privileges
263
- - At least 50 MB free disk space
264
-
265
- #### Installation Steps
266
-
267
- Raspberry Pi OS is based on Debian, so the installation process uses APT. Run the following commands:
268
-
269
- ```bash
270
- sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
271
- sudo DEBIAN_FRONTEND=noninteractive apt-get install -y woff2
272
- ```
273
-
274
- **ARM Architecture Note**: The woff2 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.
275
-
276
- **Available ARM architectures:**
277
-
278
- | Architecture | Description |
279
- |--------------|-------------|
280
- | arm64 | 64-bit Raspberry Pi OS (Pi 3, 4, 5 with 64-bit OS) |
281
- | armhf | 32-bit Raspberry Pi OS (Pi 2, 3, 4, 5 with 32-bit OS) |
282
-
283
- #### Verification
284
-
285
- Confirm the installation succeeded:
286
-
287
- ```bash
288
- woff2_compress --version
289
- ```
290
-
291
- Expected output (version numbers may vary):
292
-
293
- ```
294
- woff2_compress 1.0.2
295
- ```
296
-
297
- Verify your architecture:
298
-
299
- ```bash
300
- uname -m
301
- ```
302
-
303
- Expected output: `aarch64` (64-bit) or `armv7l` (32-bit).
304
-
305
- Test that all tools are available:
306
-
307
- ```bash
308
- woff2_decompress --version
309
- woff2_info --version
310
- ```
311
-
312
- #### Troubleshooting
313
-
314
- **Problem**: Package not found
315
-
316
- **Solution**: Ensure your package lists are current:
317
-
318
- ```bash
319
- sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
320
- ```
321
-
322
- **Problem**: Slow compression on older Raspberry Pi models
323
-
324
- **Solution**: Font compression is CPU-intensive. On Raspberry Pi 2 or earlier models, expect longer processing times. Consider processing large font collections on a more powerful machine.
325
-
326
- **Problem**: Out of memory during compression of large fonts
327
-
328
- **Solution**: Add swap space if needed:
329
-
330
- ```bash
331
- sudo fallocate -l 1G /swapfile
332
- sudo chmod 600 /swapfile
333
- sudo mkswap /swapfile
334
- sudo swapon /swapfile
335
- echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
336
- ```
337
-
338
- ---
339
-
340
- ### Amazon Linux (DNF/YUM)
341
-
342
- #### Prerequisites
343
-
344
- - Amazon Linux 2023 (AL2023) or Amazon Linux 2 (AL2)
345
- - sudo privileges
346
- - Development tools for compiling from source
347
- - At least 200 MB free disk space
348
-
349
- **Important**: woff2 is NOT available in the standard Amazon Linux repositories or SPAL (Supplementary Packages for Amazon Linux). This guide compiles from source using the official Google codebase.
350
-
351
- #### Installation Steps
352
-
353
- **Step 1: Install build dependencies**
354
-
355
- For Amazon Linux 2023:
356
-
357
- ```bash
358
- sudo dnf install -y gcc-c++ cmake git brotli-devel
359
- ```
360
-
361
- For Amazon Linux 2:
362
-
363
- ```bash
364
- sudo yum install -y gcc-c++ cmake3 git
365
- ```
366
-
367
- **Note**: Amazon Linux 2 does not have brotli-devel in its repositories. The build process will use the bundled brotli submodule.
368
-
369
- **Step 2: Clone the source repository with submodules**
370
-
371
- ```bash
372
- cd /tmp
373
- git clone --recursive https://github.com/google/woff2.git
374
- cd woff2
375
- ```
376
-
377
- The `--recursive` flag ensures the brotli submodule is also cloned.
378
-
379
- **Step 3: Build the tools**
380
-
381
- For Amazon Linux 2023:
382
-
383
- ```bash
384
- mkdir out
385
- cd out
386
- cmake ..
387
- make -j$(nproc)
388
- ```
389
-
390
- For Amazon Linux 2 (using cmake3):
391
-
392
- ```bash
393
- mkdir out
394
- cd out
395
- cmake3 ..
396
- make -j$(nproc)
397
- ```
398
-
399
- **Step 4: Install the binaries**
400
-
401
- ```bash
402
- sudo make install
403
- ```
404
-
405
- This installs the binaries to `/usr/local/bin` and libraries to `/usr/local/lib64` (or `/usr/local/lib`).
406
-
407
- **Step 5: Update the library cache**
408
-
409
- ```bash
410
- sudo ldconfig
411
- ```
412
-
413
- **Step 6: Clean up**
414
-
415
- ```bash
416
- cd /
417
- rm -rf /tmp/woff2
418
- ```
419
-
420
- #### Verification
421
-
422
- Confirm the installation succeeded:
423
-
424
- ```bash
425
- woff2_compress --version
426
- ```
427
-
428
- Expected output:
429
-
430
- ```
431
- woff2_compress 1.0.2
432
- ```
433
-
434
- Test that all tools are available:
435
-
436
- ```bash
437
- woff2_decompress --version
438
- woff2_info --version
439
- ```
440
-
441
- #### Troubleshooting
442
-
443
- **Problem**: `woff2_compress: command not found` after installation
444
-
445
- **Solution**: Ensure `/usr/local/bin` is in your PATH:
446
-
447
- ```bash
448
- echo $PATH | grep -q '/usr/local/bin' && echo "PATH OK" || echo "PATH missing /usr/local/bin"
449
- ```
450
-
451
- If missing, add it:
452
-
453
- ```bash
454
- echo 'export PATH="/usr/local/bin:$PATH"' >> ~/.bashrc
455
- source ~/.bashrc
456
- ```
457
-
458
- **Problem**: `error while loading shared libraries: libwoff2common.so.1.0.2`
459
-
460
- **Solution**: The library path may not be configured. Run:
461
-
462
- ```bash
463
- sudo ldconfig
464
- ```
465
-
466
- If the issue persists, add the library path explicitly:
467
-
468
- ```bash
469
- echo '/usr/local/lib64' | sudo tee /etc/ld.so.conf.d/woff2.conf
470
- sudo ldconfig
471
- ```
472
-
473
- **Problem**: CMake fails with "Could NOT find Brotli"
474
-
475
- **Solution**: For Amazon Linux 2023, install brotli-devel:
476
-
477
- ```bash
478
- sudo dnf install -y brotli-devel
479
- ```
480
-
481
- For Amazon Linux 2, use the bundled brotli by cloning with `--recursive`:
482
-
483
- ```bash
484
- git clone --recursive https://github.com/google/woff2.git
485
- ```
486
-
487
- **Problem**: Git clone fails
488
-
489
- **Solution**: Ensure git is installed:
490
-
491
- ```bash
492
- sudo dnf install -y git # AL2023
493
- sudo yum install -y git # AL2
494
- ```
495
-
496
- ---
497
-
498
- ### Windows (Chocolatey)
499
-
500
- #### Prerequisites
501
-
502
- - Windows 10 or later (64-bit)
503
- - Administrator PowerShell or Command Prompt
504
- - Visual Studio Build Tools or Visual Studio with C++ support
505
- - CMake and Git
506
-
507
- **Important**: woff2 is NOT available as a Chocolatey or winget package. This guide compiles from source using Visual Studio Build Tools. For a simpler approach, use WSL (Windows Subsystem for Linux) instead.
508
-
509
- #### Installation Steps
510
-
511
- **Step 1: Install build prerequisites via Chocolatey**
512
-
513
- Run the following commands in an Administrator PowerShell:
514
-
515
- ```powershell
516
- choco install git -y
517
- choco install cmake --installargs 'ADD_CMAKE_TO_PATH=System' -y
518
- choco install visualstudio2022buildtools -y --package-parameters "--add Microsoft.VisualStudio.Workload.VCTools --includeRecommended"
519
- ```
520
-
521
- Close and reopen PowerShell after installation to refresh the PATH.
522
-
523
- **Step 2: Clone the source repository**
524
-
525
- Open a new Administrator PowerShell and run:
526
-
527
- ```powershell
528
- cd $env:TEMP
529
- git clone --recursive https://github.com/google/woff2.git
530
- cd woff2
531
- ```
532
-
533
- **Step 3: Build using CMake and Visual Studio**
534
-
535
- ```powershell
536
- mkdir out
537
- cd out
538
- cmake .. -G "Visual Studio 17 2022" -A x64
539
- cmake --build . --config Release
540
- ```
541
-
542
- **Step 4: Install the binaries**
543
-
544
- Copy the built executables to a directory in your PATH:
545
-
546
- ```powershell
547
- New-Item -ItemType Directory -Force -Path "$env:USERPROFILE\bin"
548
- Copy-Item ".\Release\woff2_compress.exe" "$env:USERPROFILE\bin\"
549
- Copy-Item ".\Release\woff2_decompress.exe" "$env:USERPROFILE\bin\"
550
- Copy-Item ".\Release\woff2_info.exe" "$env:USERPROFILE\bin\"
551
- ```
552
-
553
- **Step 5: Add to PATH**
554
-
555
- ```powershell
556
- $userPath = [Environment]::GetEnvironmentVariable("PATH", "User")
557
- if ($userPath -notlike "*$env:USERPROFILE\bin*") {
558
- [Environment]::SetEnvironmentVariable("PATH", "$userPath;$env:USERPROFILE\bin", "User")
559
- }
560
- ```
561
-
562
- Close and reopen PowerShell to apply the PATH change.
563
-
564
- **Step 6: Clean up**
565
-
566
- ```powershell
567
- Remove-Item -Recurse -Force "$env:TEMP\woff2"
568
- ```
569
-
570
- #### Verification
571
-
572
- Open a new PowerShell window and run:
573
-
574
- ```powershell
575
- woff2_compress --version
576
- ```
577
-
578
- Expected output:
579
-
580
- ```
581
- woff2_compress 1.0.2
582
- ```
583
-
584
- Test that all tools are available:
585
-
586
- ```powershell
587
- woff2_decompress --version
588
- woff2_info --version
589
- ```
590
-
591
- #### Troubleshooting
592
-
593
- **Problem**: CMake fails to find Visual Studio
594
-
595
- **Solution**: Ensure Visual Studio Build Tools are installed with C++ support:
596
-
597
- ```powershell
598
- choco install visualstudio2022buildtools -y --package-parameters "--add Microsoft.VisualStudio.Workload.VCTools --includeRecommended"
599
- ```
600
-
601
- **Problem**: `woff2_compress` is not recognized
602
-
603
- **Solution**: Verify the binaries exist and PATH is set:
604
-
605
- ```powershell
606
- Test-Path "$env:USERPROFILE\bin\woff2_compress.exe"
607
- $env:PATH -split ';' | Select-String -Pattern 'bin'
608
- ```
609
-
610
- Open a new PowerShell window to pick up PATH changes.
611
-
612
- **Problem**: Build fails with linker errors
613
-
614
- **Solution**: Ensure you are using the Release configuration:
615
-
616
- ```powershell
617
- cmake --build . --config Release
618
- ```
619
-
620
- **Problem**: Prefer a simpler installation method
621
-
622
- **Solution**: Use WSL (Windows Subsystem for Linux) instead. See the WSL section below.
623
-
624
- ---
625
-
626
- ### WSL (Ubuntu)
627
-
628
- #### Prerequisites
629
-
630
- - Windows 10 version 2004 or higher, or Windows 11
631
- - WSL 2 enabled with Ubuntu distribution installed
632
- - sudo privileges within WSL
633
-
634
- **Note**: WSL provides a full Linux environment, allowing you to use the native Ubuntu package. This is the recommended approach for Windows users who want to avoid compiling from source.
635
-
636
- #### Installation Steps
637
-
638
- Open your WSL Ubuntu terminal and run:
639
-
640
- ```bash
641
- sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
642
- sudo DEBIAN_FRONTEND=noninteractive apt-get install -y woff2
643
- ```
644
-
645
- The installation process is identical to native Ubuntu since WSL Ubuntu uses the same package repositories.
646
-
647
- #### Verification
648
-
649
- Confirm the installation succeeded:
650
-
651
- ```bash
652
- woff2_compress --version
653
- ```
654
-
655
- Expected output (version numbers may vary):
656
-
657
- ```
658
- woff2_compress 1.0.2
659
- ```
660
-
661
- Test that all tools are available:
662
-
663
- ```bash
664
- woff2_decompress --version
665
- woff2_info --version
666
- ```
667
-
668
- #### Troubleshooting
669
-
670
- **Problem**: Package installation fails with network errors
671
-
672
- **Solution**: WSL may have DNS issues. Update the resolv.conf:
673
-
674
- ```bash
675
- echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf > /dev/null
676
- sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
677
- ```
678
-
679
- **Problem**: Need to process font files on Windows filesystem
680
-
681
- **Solution**: Access Windows files through `/mnt/c/`:
682
-
683
- ```bash
684
- # Example: Compress a font from Windows Downloads folder
685
- woff2_compress /mnt/c/Users/YourUsername/Downloads/myfont.ttf
686
- # Output will be /mnt/c/Users/YourUsername/Downloads/myfont.woff2
687
- ```
688
-
689
- **Problem**: WSL itself is not installed
690
-
691
- **Solution**: Install WSL from an Administrator PowerShell on Windows:
692
-
693
- ```powershell
694
- wsl --install
695
- ```
696
-
697
- Restart your computer after installation.
698
-
699
- **Problem**: Need to use woff2 from Windows command line
700
-
701
- **Solution**: You can call WSL commands from Windows:
702
-
703
- ```powershell
704
- wsl woff2_compress /mnt/c/Users/YourUsername/Downloads/myfont.ttf
705
- ```
706
-
707
- ---
708
-
709
- ### Git Bash (Manual/Portable)
710
-
711
- #### Prerequisites
712
-
713
- - Windows 10 or later (64-bit)
714
- - Git Bash installed (comes with Git for Windows)
715
- - WSL with Ubuntu installed (recommended approach)
716
-
717
- **Note**: Git Bash runs in a MinGW environment on Windows. Compiling woff2 natively in MinGW is complex due to build tool requirements. The recommended approach is to use WSL from within Git Bash.
718
-
719
- #### Installation Steps
720
-
721
- **Recommended: Use WSL from Git Bash**
722
-
723
- If WSL is installed with Ubuntu, you can use woff2 through WSL:
724
-
725
- **Step 1: Install woff2 in WSL**
726
-
727
- From Git Bash, run:
728
-
729
- ```bash
730
- wsl sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
731
- wsl sudo DEBIAN_FRONTEND=noninteractive apt-get install -y woff2
732
- ```
733
-
734
- **Step 2: Create wrapper scripts**
735
-
736
- Create wrapper scripts in Git Bash to call the WSL commands:
737
-
738
- ```bash
739
- mkdir -p ~/bin
740
-
741
- cat > ~/bin/woff2_compress << 'EOF'
742
- #!/bin/bash
743
- wsl woff2_compress "$@"
744
- EOF
745
- chmod +x ~/bin/woff2_compress
746
-
747
- cat > ~/bin/woff2_decompress << 'EOF'
748
- #!/bin/bash
749
- wsl woff2_decompress "$@"
750
- EOF
751
- chmod +x ~/bin/woff2_decompress
752
-
753
- cat > ~/bin/woff2_info << 'EOF'
754
- #!/bin/bash
755
- wsl woff2_info "$@"
756
- EOF
757
- chmod +x ~/bin/woff2_info
758
- ```
759
-
760
- **Step 3: Add to PATH**
761
-
762
- ```bash
763
- echo 'export PATH="$HOME/bin:$PATH"' >> ~/.bashrc
764
- source ~/.bashrc
765
- ```
766
-
767
- #### Verification
768
-
769
- Confirm the installation succeeded:
770
-
771
- ```bash
772
- woff2_compress --version
773
- ```
774
-
775
- Expected output (version numbers may vary):
776
-
777
- ```
778
- woff2_compress 1.0.2
779
- ```
780
-
781
- Test that all tools are available:
782
-
783
- ```bash
784
- woff2_decompress --version
785
- woff2_info --version
786
- ```
787
-
788
- #### Troubleshooting
789
-
790
- **Problem**: `wsl: command not found`
791
-
792
- **Solution**: WSL is not installed or not in PATH. Install WSL from an Administrator PowerShell:
793
-
794
- ```powershell
795
- wsl --install
796
- ```
797
-
798
- **Problem**: Path conversion issues with Windows-style paths
799
-
800
- **Solution**: Use WSL path format when calling the commands:
801
-
802
- ```bash
803
- # Convert Windows path to WSL path
804
- # Instead of: woff2_compress "C:\Users\Me\Fonts\font.ttf"
805
- woff2_compress "/mnt/c/Users/Me/Fonts/font.ttf"
806
- ```
807
-
808
- **Problem**: Need native Windows binaries
809
-
810
- **Solution**: Follow the Windows (Chocolatey) section to compile from source, or use pre-built binaries if available from third-party sources.
811
-
812
- ---
813
-
814
- ## Post-Installation Configuration
815
-
816
- After installing woff2 on any platform, review these usage examples and tips.
817
-
818
- ### Basic Usage
819
-
820
- **Compress a TrueType font to WOFF2:**
821
-
822
- ```bash
823
- woff2_compress myfont.ttf
824
- # Creates myfont.woff2 in the same directory
825
- ```
826
-
827
- **Decompress a WOFF2 font back to TrueType:**
828
-
829
- ```bash
830
- woff2_decompress myfont.woff2
831
- # Creates myfont.ttf in the same directory
832
- ```
833
-
834
- **Display information about a WOFF2 file:**
835
-
836
- ```bash
837
- woff2_info myfont.woff2
838
- ```
839
-
840
- ### Batch Processing
841
-
842
- Convert all TTF files in a directory to WOFF2:
843
-
844
- ```bash
845
- for f in *.ttf; do woff2_compress "$f"; done
846
- ```
847
-
848
- Convert all OTF files (note: OTF files work the same way):
849
-
850
- ```bash
851
- for f in *.otf; do woff2_compress "$f"; done
852
- ```
853
-
854
- ### Comparing Compression Results
855
-
856
- Check file sizes before and after compression:
857
-
858
- ```bash
859
- # Original file size
860
- ls -lh myfont.ttf
861
-
862
- # Compress
863
- woff2_compress myfont.ttf
864
-
865
- # Compressed file size
866
- ls -lh myfont.woff2
867
- ```
868
-
869
- Typical compression ratios:
870
- - WOFF2 is typically 30% smaller than WOFF 1.0
871
- - WOFF2 is typically 50-70% smaller than uncompressed TTF/OTF
872
-
873
- ### Integration with Build Tools
874
-
875
- For web development projects, you can integrate woff2 into your build process:
876
-
877
- ```bash
878
- # Example: Compress all fonts in a fonts directory
879
- find ./fonts -name "*.ttf" -exec woff2_compress {} \;
880
- find ./fonts -name "*.otf" -exec woff2_compress {} \;
881
- ```
882
-
883
- ---
884
-
885
- ## Common Issues
886
-
887
- ### Issue: Compression Fails with No Output
888
-
889
- **Symptoms**: `woff2_compress` runs but no .woff2 file is created
890
-
891
- **Solutions**:
892
-
893
- - Verify the input file exists and is a valid TTF or OTF font:
894
-
895
- ```bash
896
- file myfont.ttf
897
- ```
898
-
899
- Expected output should indicate a TrueType or OpenType font.
900
-
901
- - Check file permissions on the output directory
902
- - Ensure sufficient disk space
903
-
904
- ### Issue: "Malformed font" or Compression Errors
905
-
906
- **Symptoms**: woff2_compress reports font data errors
907
-
908
- **Solutions**:
909
-
910
- - Verify the input file is a TrueType (.ttf) or OpenType (.otf) font, not already a WOFF or WOFF2 file
911
- - Some fonts with unusual table structures may not compress correctly
912
- - Try using a font editor (like FontForge) to re-export the font before compression
913
-
914
- ### Issue: Large Output File Size
915
-
916
- **Symptoms**: WOFF2 file is not significantly smaller than the original
917
-
918
- **Solutions**:
919
-
920
- - This can occur with already-optimized fonts or fonts with embedded bitmaps
921
- - WOFF2 works best with vector-based fonts
922
- - Consider subsetting the font to remove unused glyphs using tools like `pyftsubset` from fonttools
923
-
924
- ### Issue: Decompressed Font Differs from Original
925
-
926
- **Symptoms**: Round-trip compression/decompression produces a different file
927
-
928
- **Solutions**:
929
-
930
- - This is expected behavior. WOFF2 normalization may reorder tables or apply other transformations
931
- - The fonts should be visually and functionally identical
932
- - Compare glyphs using a font comparison tool rather than file hashes
933
-
934
- ### Issue: Variable Font Support
935
-
936
- **Symptoms**: Variable fonts fail to compress or decompress correctly
937
-
938
- **Solutions**:
939
-
940
- - Ensure you have woff2 version 1.0.2 or later, which includes improved variable font support
941
- - Complex variable fonts may require the latest version from the git repository
942
- - Check the Google woff2 GitHub issues for known limitations
943
-
944
- ### Issue: Cannot Find Shared Libraries on Linux
945
-
946
- **Symptoms**: `error while loading shared libraries: libwoff2common.so`
947
-
948
- **Solutions**:
949
-
950
- - Run `sudo ldconfig` to update the library cache
951
- - Verify the library path is configured:
952
-
953
- ```bash
954
- echo '/usr/local/lib64' | sudo tee /etc/ld.so.conf.d/woff2.conf
955
- sudo ldconfig
956
- ```
957
-
958
- - Alternatively, set LD_LIBRARY_PATH:
959
-
960
- ```bash
961
- export LD_LIBRARY_PATH="/usr/local/lib64:$LD_LIBRARY_PATH"
962
- ```
963
-
964
- ---
965
-
966
- ## References
967
-
968
- - [Google woff2 GitHub Repository](https://github.com/google/woff2)
969
- - [WOFF 2.0 W3C Recommendation](https://www.w3.org/TR/WOFF2/)
970
- - [WOFF 2.0 Evaluation Report](https://www.w3.org/TR/WOFF20ER/)
971
- - [Homebrew woff2 Formula](https://formulae.brew.sh/formula/woff2)
972
- - [Ubuntu Packages - woff2](https://packages.ubuntu.com/woff2)
973
- - [Debian Packages - woff2](https://packages.debian.org/woff2)
974
- - [Fedora Packages - woff2](https://packages.fedoraproject.org/pkgs/woff2/woff2/)
975
- - [Brotli Compression Algorithm](https://github.com/google/brotli)
976
- - [MDN Web Docs - WOFF2](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_fonts/WOFF)
977
- - [Can I Use - WOFF2 Browser Support](https://caniuse.com/woff2)