pkgsrc-Changes archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
CVS commit: pkgsrc/fonts/harfbuzz
Module Name: pkgsrc
Committed By: adam
Date: Mon Apr 20 05:11:38 UTC 2026
Modified Files:
pkgsrc/fonts/harfbuzz: Makefile.common PLIST distinfo
Log Message:
harfbuzz: updated to 14.2.0
Overview of changes leading to 14.2.0
In this release, the experimental raster, vector, and GPU libraries went
through several rounds of code review and cleanup to make sure they follow the
high standards expected of HarfBuzz code. The API has also been extensively
reviewed based on experience gained from using these libraries. We consider the
code and API to be ready for stabilization, and we expect to graduate them from
experimental in the near future. If you are using or planning to use these
libraries and have any concerns about the API, it is time to raise them. Once a
library is deemed stable, we will never change the API or ABI in an
incompatible way.
- GPU library:
* New color-glyph paint renderer, based on design by Lê Duy Quang.
`hb_gpu_paint_t` walks a font's paint tree (COLRv0 or COLRv1) and encodes
its layers (solid fills, linear / radial / sweep gradients, transforms,
composite groups) into a compact blob.
A new fragment-shader function `hb_gpu_paint()` renders the blob in
premultiplied RGBA; monochrome glyphs are handled transparently via a
synthesized foreground-colored layer.
Shader sources provided in GLSL, WGSL, MSL, and HLSL.
* Paint encoder limitations: the encoder sets `unsupported` and returns
`NULL` when `num_ops` would exceed 32767, `push_group` nests deeper than 4,
or the paint tree calls back through the image callback (PaintImage).
Nested glyph clips are intersected up to 3 levels; a few composite modes
use approximate fallbacks; `push_clip_rectangle` is silently ignored.
* Encode entry point now returns extents and auto-clears the encoder; the
standalone `get_extents()` is gone.
* Gradient color stop interpolation now happens in premultiplied space per
the OpenType COLR specification.
* The foreground color sentinel (`is_foreground`) now correctly preserves the
paint-tree alpha from the encoded color data instead of discarding it.
* The hb-gpu utility gains `--draw` / `--paint` flags with per-font
auto-detect, and `--output-file` / `-o` for headless single-frame rendering
to a PPM image.
- Vector library:
* New PDF output backend. Vector paint glyphs now render to PDF page content,
producing scalable COLRv0 / COLRv1 color-glyph artwork (solid fills, linear
/ radial / sweep gradients, blend modes, PNG images with transparency) that
can be embedded directly in PDF documents. Useful for PDF producers such as
LibreOffice that want crisp, resolution-independent color emoji.
* New SVG id prefix API on paint allows prefixing document references, which
allows for embedding multiple SVGs in the same page without name clashes
(`hb_vector_paint_set_svg_prefix`).
* Removed glyph path dedup from vector draw and paint. Each glyph is emitted
inline; no `<defs>` / `<use>` caching.
* `_glyph()` functions are now thin convenience wrappers documented as
equivalent expansions of the underlying font draw/paint API.
* Drop glyph-source rendering of SVG-in-OT fonts.
- Raster library:
* Drop glyph-source rendering of SVG-in-OT fonts.
- Across Draw / Paint subsystems:
* `_reset()` methods gain matching`_clear()` companions that drop accumulated
data while preserving user configuration. Getter companions added for
setters across raster, vector, and gpu types.
- Various fuzzer fixes for raster, vector, and GPU libraries.
- Paint API:
* New arbitrary-path clip: `hb_paint_push_clip_path_start` / `_end` let
callers clip to a caller-supplied outline, not just a font glyph.
`push_clip_path_start()` returns the draw-funcs (and matching draw data)
for the backend’s path accumulator; the caller drives `hb_draw_*()` into
it, then calls `push_clip_path_end()`, followed by painted ops, then
`hb_paint_pop_clip()` to release the clip. Implemented for all paint
backends: vector (SVG defs + clipPath + url ref), vector PDF (q / path / W
n), raster (path rendered to an alpha mask, intersected with the current
clip), and GPU (the path is encoded into a Slug sub-blob so the fragment
shader clips against it the same way it clips against glyph outlines).
- Shaping:
* Indic: categorize U+1CF5 and U+1CF6 as CS.
- Changed API
* GPU library:
- `hb_gpu_draw_glyph()` now returns `void` (was `hb_bool_t`). Use
`hb_gpu_draw_glyph_or_fail()` if you need the success status.
- `hb_gpu_paint_glyph()` now returns `void` (was `hb_bool_t`) and
internally synthesizes a foreground-colored layer for non-color glyphs
via `hb_font_paint_glyph()`, so every glyph with an outline produces
output. Use `hb_gpu_paint_glyph_or_fail()` (which delegates to
`hb_font_paint_glyph_or_fail()`) if you need to distinguish color vs
synthesized paint. Encoder-level limits (unsupported ops, group-stack
overflow) no longer fail paint_glyph; they surface from
`hb_gpu_paint_encode()` returning `NULL`.
- `hb_gpu_draw_encode()` now takes an `extents` out-parameter and
auto-clears the encoder on return.
- `hb_gpu_draw_darken()` renamed to `hb_gpu_stem_darken()`.
* Vector library:
- `hb_vector_svg_set_precision()` and its paint counterpart renamed to
`hb_vector_draw_set_precision()` / `hb_vector_paint_set_precision()`
(SVG-specific naming is inaccurate with the PDF backend added).
- `hb_vector_draw_glyph()` / `hb_vector_paint_glyph()` now return `void`
(were `hb_bool_t`). Paint additionally gains a draw fallback for
non-color glyphs. Use the matching `_or_fail()` variants for the
`hb_bool_t` return.
* Raster library:
- `hb_raster_draw_glyph()` / `hb_raster_paint_glyph()` now return `void`
(were `hb_bool_t`). Paint additionally gains a draw fallback for
non-color glyphs. Use the matching `_or_fail()` variants for the
`hb_bool_t` return.
* General:
- Many read-only getters gained const on their object argument.
- Six public draw / paint funcs getters across raster, vector, and gpu now
take a const-pointer to the relevant context instance instead of being
singletons:
hb_raster_draw_get_funcs (const hb_raster_draw_t *)`
hb_raster_paint_get_funcs (const hb_raster_paint_t *)
hb_vector_draw_get_funcs (const hb_vector_draw_t *)
hb_vector_paint_get_funcs (const hb_vector_paint_t *)
hb_gpu_draw_get_funcs (const hb_gpu_draw_t *)
hb_gpu_paint_get_funcs (const hb_gpu_paint_t *)
This is what lets vector_paint dispatch to SVG- vs PDF- flavored
callbacks transparently when called from outside code; the others
currently use the instance for symmetry only.
- New API
* Draw:
+HB_DRAW_LINE_CAP_BUTT
+HB_DRAW_LINE_CAP_ROUND
+HB_DRAW_LINE_CAP_SQUARE
+hb_draw_line_cap_t
+hb_draw_line()
+hb_draw_rectangle()
+hb_draw_circle()
* Paint:
+hb_paint_push_clip_path_start_func_t
+hb_paint_push_clip_path_end_func_t
+hb_paint_sweep_gradient_tile_func_t
+hb_paint_push_group_for_func_t
+hb_paint_push_group_for()
+hb_paint_funcs_set_push_group_for_func()
+hb_paint_reduce_linear_anchors()
+hb_paint_normalize_color_line()
+hb_paint_sweep_gradient_tiles()
+hb_paint_push_clip_path_start()
+hb_paint_push_clip_path_end()
+hb_paint_funcs_set_push_clip_path_start_func()
+hb_paint_funcs_set_push_clip_path_end_func()
* GPU library:
+HB_GPU_SHADER_STAGE_VERTEX
+HB_GPU_SHADER_STAGE_FRAGMENT
+HB_GPU_SHADER_LANG_INVALID
+hb_gpu_shader_stage_t
+hb_gpu_paint_t
+hb_gpu_paint_create_or_fail()
+hb_gpu_paint_reference()
+hb_gpu_paint_destroy()
+hb_gpu_paint_set_user_data()
+hb_gpu_paint_get_user_data()
+hb_gpu_paint_get_funcs()
+hb_gpu_paint_set_palette()
+hb_gpu_paint_get_palette()
+hb_gpu_paint_set_custom_palette_color()
+hb_gpu_paint_clear_custom_palette_colors()
+hb_gpu_paint_set_scale()
+hb_gpu_paint_get_scale()
+hb_gpu_paint_glyph()
+hb_gpu_paint_encode()
+hb_gpu_paint_clear()
+hb_gpu_paint_reset()
+hb_gpu_paint_recycle_blob()
+hb_gpu_paint_shader_source()
+hb_gpu_paint_glyph_or_fail()
+hb_gpu_shader_source()
+hb_gpu_draw_shader_source()
+hb_gpu_draw_clear()
+hb_gpu_draw_get_scale()
+hb_gpu_draw_glyph_or_fail()
* Raster library:
+hb_raster_draw_clear()
+hb_raster_draw_glyph_or_fail()
+hb_raster_paint_clear()
+hb_raster_paint_glyph_or_fail()
+hb_raster_paint_set_palette()
+hb_raster_paint_get_palette()
+hb_raster_paint_get_foreground()
+hb_raster_paint_set_background()
+hb_raster_paint_get_background()
* Vector library:
+HB_VECTOR_FORMAT_PDF
+hb_vector_draw_clear()
+hb_vector_draw_get_precision()
+hb_vector_draw_get_format()
+hb_vector_draw_glyph_or_fail()
+hb_vector_draw_new_path()
+hb_vector_draw_set_foreground()
+hb_vector_draw_get_foreground()
+hb_vector_draw_set_background()
+hb_vector_draw_get_background()
+hb_vector_paint_clear()
+hb_vector_paint_get_precision()
+hb_vector_paint_get_format()
+hb_vector_paint_get_foreground()
+hb_vector_paint_set_background()
+hb_vector_paint_get_background()
+hb_vector_paint_get_palette()
+hb_vector_paint_glyph_or_fail()
+hb_vector_paint_set_svg_prefix()
+hb_vector_paint_get_svg_prefix()
- Removed API
* GPU library:
-hb_gpu_shader_fragment_source() (replaced by hb_gpu_shader_source(stage))
-hb_gpu_shader_vertex_source() (replaced by hb_gpu_shader_source(stage))
-hb_gpu_draw_get_extents() (extents are now an out-parameter of hb_gpu_draw_encode())
* Vector library:
-hb_vector_draw_set_flat()
-hb_vector_draw_get_flat()
-hb_vector_paint_set_flat()
-hb_vector_paint_get_flat()
To generate a diff of this commit:
cvs rdiff -u -r1.81 -r1.82 pkgsrc/fonts/harfbuzz/Makefile.common
cvs rdiff -u -r1.91 -r1.92 pkgsrc/fonts/harfbuzz/PLIST
cvs rdiff -u -r1.171 -r1.172 pkgsrc/fonts/harfbuzz/distinfo
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: pkgsrc/fonts/harfbuzz/Makefile.common
diff -u pkgsrc/fonts/harfbuzz/Makefile.common:1.81 pkgsrc/fonts/harfbuzz/Makefile.common:1.82
--- pkgsrc/fonts/harfbuzz/Makefile.common:1.81 Sun Apr 5 11:27:00 2026
+++ pkgsrc/fonts/harfbuzz/Makefile.common Mon Apr 20 05:11:38 2026
@@ -1,7 +1,7 @@
-# $NetBSD: Makefile.common,v 1.81 2026/04/05 11:27:00 wiz Exp $
+# $NetBSD: Makefile.common,v 1.82 2026/04/20 05:11:38 adam Exp $
# used by fonts/harfbuzz-icu/Makefile
-DISTNAME= harfbuzz-14.1.0
+DISTNAME= harfbuzz-14.2.0
CATEGORIES= fonts
MASTER_SITES= ${MASTER_SITE_GITHUB:=harfbuzz/}
GITHUB_RELEASE= ${PKGVERSION_NOREV}
Index: pkgsrc/fonts/harfbuzz/PLIST
diff -u pkgsrc/fonts/harfbuzz/PLIST:1.91 pkgsrc/fonts/harfbuzz/PLIST:1.92
--- pkgsrc/fonts/harfbuzz/PLIST:1.91 Sun Apr 5 11:27:00 2026
+++ pkgsrc/fonts/harfbuzz/PLIST Mon Apr 20 05:11:38 2026
@@ -1,4 +1,4 @@
-@comment $NetBSD: PLIST,v 1.91 2026/04/05 11:27:00 wiz Exp $
+@comment $NetBSD: PLIST,v 1.92 2026/04/20 05:11:38 adam Exp $
${PLIST.introspection}bin/hb-info
${PLIST.introspection}bin/hb-raster
${PLIST.introspection}bin/hb-shape
@@ -55,7 +55,7 @@ ${PLIST.introspection}lib/libharfbuzz-go
${PLIST.introspection}lib/libharfbuzz-gobject.so.0.${SOVER}.0
lib/libharfbuzz-gpu.so
lib/libharfbuzz-gpu.so.0
-lib/libharfbuzz-gpu.so.0.61410.0
+lib/libharfbuzz-gpu.so.0.61420.0
lib/libharfbuzz-raster.so
lib/libharfbuzz-raster.so.0
lib/libharfbuzz-raster.so.0.${SOVER}.0
Index: pkgsrc/fonts/harfbuzz/distinfo
diff -u pkgsrc/fonts/harfbuzz/distinfo:1.171 pkgsrc/fonts/harfbuzz/distinfo:1.172
--- pkgsrc/fonts/harfbuzz/distinfo:1.171 Sun Apr 5 11:27:00 2026
+++ pkgsrc/fonts/harfbuzz/distinfo Mon Apr 20 05:11:38 2026
@@ -1,7 +1,7 @@
-$NetBSD: distinfo,v 1.171 2026/04/05 11:27:00 wiz Exp $
+$NetBSD: distinfo,v 1.172 2026/04/20 05:11:38 adam Exp $
-BLAKE2s (harfbuzz-14.1.0.tar.xz) = 57647312d36ec8129a063944e77276917bb7495eb12951c9b30d3de1cb8498a1
-SHA512 (harfbuzz-14.1.0.tar.xz) = 27860cc2a33baac6c9efb205ef2aa6c9cca53b145b7a5cdcce8c464bd973f1ed72b2c2e02cff4dbed9769fb4d0e7245a2c79682a33eec6df0e771d8b63ede3c6
-Size (harfbuzz-14.1.0.tar.xz) = 19499908 bytes
+BLAKE2s (harfbuzz-14.2.0.tar.xz) = 367b080600f18233bd5151a2dd6da28a8a47a65b106d732d5f06643796a109cf
+SHA512 (harfbuzz-14.2.0.tar.xz) = 5c9367cf28516c5932c84bcd392dba737cd7e451c864c4fe3bd38c49b38c822fdaa07b197c24e361ce14e2bbec2dc018e220693a0bfe39cefc5336e928b8b4c9
+Size (harfbuzz-14.2.0.tar.xz) = 19555096 bytes
SHA1 (patch-src_meson.build) = 5b46f9933d5dea1f842fccf63eb92faae1f7c90f
SHA1 (patch-util_meson.build) = 50c5146c723a734ee42609dcc384de0feb46369e
Home |
Main Index |
Thread Index |
Old Index