================================================================================ Plume — vendored third-party binary: hb-subset.wasm ================================================================================ WHAT THIS IS A same-origin copy of HarfBuzz's font-subsetting engine compiled to WebAssembly. Plume's Edit-PDF "click-to-edit existing text" feature (P2-5, font ladder Tier 2) fetches it lazily — ONLY when it must re-embed a fully embedded TrueType font to cover characters the original text did not use — and instantiates it from these bytes. It is never loaded from a CDN and makes zero network requests of its own (the wasm module has no imports). PROVENANCE (pin this so the binary is verifiable against the published artifact) npm package : harfbuzzjs version : 1.4.0 artifact in pkg : dist/harfbuzz-subset.wasm vendored as : public/hb-subset/1.4.0/hb-subset.wasm (byte-identical copy) size : 507610 bytes SHA-256 : 88756f9d9bb92e27d71a6344b55a53c944a9e7bf1ce53136004a93786c1c3b9f upstream repo : https://github.com/harfbuzz/harfbuzzjs HarfBuzz : https://github.com/harfbuzz/harfbuzz (the C++ library this wraps) REPRODUCE (verify the vendored bytes match the published npm artifact) npm pack harfbuzzjs@1.4.0 tar xzf harfbuzzjs-1.4.0.tgz shasum -a 256 package/dist/harfbuzz-subset.wasm # => 88756f9d9bb92e27d71a6344b55a53c944a9e7bf1ce53136004a93786c1c3b9f cmp package/dist/harfbuzz-subset.wasm public/hb-subset/1.4.0/hb-subset.wasm # => (no output: identical) WHY THE .wasm ONLY (not the npm package as a runtime dependency) harfbuzzjs' own JS entry points read the wasm via fs.readFile. This repo's Turbopack config aliases `fs` to lib/empty.ts for the browser bundle, which would silently null that read. Plume therefore vendors the wasm and loads it from a same-origin fetch in its own tiny loader (lib/fonts/hbSubset.ts), whose ~exports-only subsetting routine is ported from subset-font (see the BSD-3-Clause attribution below). No harfbuzzjs JS is bundled or executed. -------------------------------------------------------------------------------- LICENSE 1 of 3 — harfbuzzjs (the npm package that ships this wasm) [MIT] -------------------------------------------------------------------------------- Copyright (c) 2019-2026 The harfbuzzjs project authors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- LICENSE 2 of 3 — HarfBuzz (the C++ library compiled into the wasm) ["Old MIT"] -------------------------------------------------------------------------------- HarfBuzz is released under the "Old MIT" license. Full text: https://github.com/harfbuzz/harfbuzz/blob/main/COPYING Copyright © 2010-2022 Google, Inc. Copyright © 2015-2020 Ebrahim Byagowi Copyright © 2019,2020 Facebook, Inc. Copyright © 2012,2015 Mozilla Foundation Copyright © 2011 Codethink Limited Copyright © 2008,2010 Nokia Corporation and/or its subsidiary(-ies) Copyright © 2009 Keith Stribley Copyright © 2011 Martin Hosken and SIL International Copyright © 2007 Chris Wilson Copyright © 2005,2006,2020,2021,2022,2023 Behdad Esfahbod Copyright © 2004,2007,2008,2009,2010,2013,2021,2022,2023 Red Hat, Inc. Copyright © 1998-2005 David Turner and Werner Lemberg Copyright © 2016 Igalia S.L. Copyright © 2022 Matthias Clasen Copyright © 2018,2021 Khaled Hosny Copyright © 2018,2019,2020 Adobe, Inc. Copyright © 2013-2015 Alexei Podtelezhnikov Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- LICENSE 3 of 3 — subset-font (source of the ported subsetting routine) [BSD-3] -------------------------------------------------------------------------------- Plume's lib/fonts/hbSubset.ts ports the raw-exports subsetting sequence from the `subset-font` npm package (the fontverter round-trip is intentionally omitted — Plume only feeds already-TrueType programs to it). Original license: Copyright (c) 2012, Andreas Lind Petersen All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the author nor the names of contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.