| - Support instancing axes not referenced by retained `VARC` data. | |
| Overview of changes leading to 14.6.0 | |
| Monday, October 5, 2026 | |
| ===================================== | |
| - Fix shaping failures caused by out-of-range glyph IDs, a regression from | |
| 11.4.0. | |
| - Update experimental beyond-64k support to the final ISO Open Font Format | |
| 5th edition. This support remains disabled by default. | |
| - Add support for the `DMAP` table. | |
| - Support `FeatureVariations` 1.1 lookup variations, including subsetting and | |
| instancing. | |
| - Update `VARC` to the revised variation-store format. The new format is | |
| incompatible with the previous one. | |
| - Various `VARC` fixes. | |
| - Fix background color and stride handling in the experimental raster library. | |
| - Improve the experimental Rust shaper (HarfRust) and font functions | |
| (`fontations`), and update HarfRust to 0.14. | |
| - Various subsetting fixes and improvements. | |
| - Various fixes for malformed fonts. | |
| - Various build and CI fixes. | |
| Overview of changes leading to 14.5.1 | |
| Thursday, October 1, 2026 | |
| ===================================== | |
| - Map the `fonupa` (Uralic Phonetic Alphabet) BCP 47 variant to the `UPPH` | |
| OpenType language system tag. | |
| - Produce smaller `cmap` subtables and drop no-op variation device tables when | |
| subsetting. | |
| - Fix possible deadlock in `hb_font_destroy()` after `hb_ft_font_set_funcs()`, | |
| a regression from 14.5.0. | |
| - Fix signed integer overflows when scaling glyph extents and applying | |
| synthetic slant and emboldening. | |
| - Fix float-to-int overflow in `VARC` component axis coordinates with | |
| malformed fonts. | |
| - Fix a memory leak in the experimental WebAssembly shaper when shaping with | |
| features. | |
| - Fix accumulator overflows in the experimental raster library when rendering | |
| glyphs with very many overlapping edges. | |
| - Fix heap buffer overflow in the experimental GPU library with malicious | |
| `COLR` fonts. | |
| - Various build and CI fixes. | |
| Overview of changes leading to 14.5.0 | |
| Monday, September 21, 2026 | |
| ===================================== | |
| - Update Unicode 18.0 data and script support, including script values for | |
| Jurchen, Proto-Cuneiform, and Seal, and the corresponding shaping support. | |
| - Add support for VARC table subsetting, including pruning auxiliary data, | |
| remapping glyph IDs, and guarding the feature in lean builds. | |
| - Add rendering work budgets to the draw and paint APIs and share them across | |
| the raster, vector, GPU, and Cairo renderers so nested outline work remains | |
| bounded. | |
| - Improve performance in set iteration, lookup traversal, and the repacker, and | |
| add coverage for new benchmarks and fuzzing seeds. | |
| - Fix various correctness and robustness issues across the CFF, Graphite, | |
| DirectWrite, and repacker code paths, including memory leaks, overflow checks, | |
| bounds issues, and malformed-font handling. | |
| - Various build, portability, and CI fixes. | |
| - New API: | |
| * Common: | |
| +HB_BUDGET_DEFAULT | |
| +HB_BUDGET_UNLIMITED | |
| +HB_SCRIPT_JURCHEN | |
| +HB_SCRIPT_PROTO_CUNEIFORM | |
| +HB_SCRIPT_SEAL | |
| * Draw: | |
| +hb_draw_set_budget_func_t | |
| +hb_draw_get_budget_func_t | |
| +hb_draw_get_budget_remaining_func_t | |
| +hb_draw_funcs_set_set_budget_func() | |
| +hb_draw_funcs_set_get_budget_func() | |
| +hb_draw_funcs_set_get_budget_remaining_func() | |
| +hb_draw_set_budget() | |
| +hb_draw_get_budget() | |
| +hb_draw_get_budget_remaining() | |
| * Paint: | |
| +hb_paint_set_budget_func_t | |
| +hb_paint_get_budget_func_t | |
| +hb_paint_get_budget_remaining_func_t | |
| +hb_paint_funcs_set_set_budget_func() | |
| +hb_paint_funcs_set_get_budget_func() | |
| +hb_paint_funcs_set_get_budget_remaining_func() | |
| +hb_paint_set_budget() | |
| +hb_paint_get_budget() | |
| +hb_paint_get_budget_remaining() | |
| Overview of changes leading to 14.4.0 | |
| Wednesday, August 26, 2026 | |
| ===================================== | |
| - Glyph positions and extents now saturate instead of overflowing. | |
| - Arabic Windows-1256 fallback shaping is now enabled on all platforms. | |
| - Fix cluster values and a dropped glyph advance in the Graphite shaper. | |
| - Fix `avar` axis value mapping in fonts that repeat the boundary entries. | |
| - Fix `avar` version 2 partial instancing. | |
| - Fix `COLR` sweep gradient truncation and unbounded memory use. | |
| - Faster subsetting, especially for large `GSUB`/`GPOS` and `CFF` tables. | |
| - Faster extraction of the experimental glyph dependency graph. | |
| - Various shaping speedups. | |
| - Various fixes for crashes and hangs with malformed fonts. | |
| - Various fixes to the experimental raster, vector, and GPU libraries. | |
| - Various improvements to the HarfRust integration shaper. | |
| - The DirectWrite backend no longer uses the C++ runtime. | |
| - Various build, portability, and fuzzing fixes. | |
| - New API: | |
| +hb_set_intersects() | |
| Overview of changes leading to 14.3.1 | |
| Thursday, August 13, 2026 | |
| ===================================== | |
| - Various fuzzing and build fixes. | |
| - Various subsetting fixes. | |
| - Fix AAT insertion at the end of the text. | |
| - Fix various rendering bugs in the experimental GPU library. | |
| - WASM shaper code can now read the user features. | |
| Overview of changes leading to 14.3.0 | |
| Friday, July 31, 2026 | |
| ===================================== | |
| - Changes affecting shaping output: | |
| * Lookup order is now respected for mark positioning in the cross-direction | |
| (y in horizontal text, x in vertical text): marks no longer follow a | |
| cross-direction shift that a later lookup applies to the base. This | |
| improves compatibility with DirectWrite and Core Text. | |
| * Fix mark attachment to ligatures formed from decomposed glyphs. | |
| * The `calt` feature in Hangul text is now disabled only for the Jamos, | |
| not the whole buffer. | |
| - Support for partially instancing version of `avar` table, as well as `CFF2` | |
| table. | |
| - New fill-glyph paint operation and APIs for the common case of filling a | |
| glyph with a solid color. | |
| - New API to fetch assorted raw values from the `OS/2`, `head`, and `post` | |
| tables. | |
| - New experimental API to extract a font’s glyph dependency graph, that | |
| applications can use to compute glyph closures themselves without running the | |
| subsetter. | |
| - New subset flag to convert the charset of a subsetted CID-keyed `CFF` fonts | |
| into identity charset, and a matching `hb-subset` option. Useful for | |
| embedding fonts in PDF. | |
| - Command-line utilities now handle non-ASCII arguments correctly on Windows. | |
| - Various instancing and subsetting fixes. | |
| - Various fixes to the experimental `harfbuzz-vector`, `harfbuzz-raster` and | |
| `harfbuzz-gpu` libraries. | |
| - Various improvements to the HarfRust integration shaper. | |
| - Various build, CI, portability, and fuzzing fixes. | |
| - New API: | |
| * OpenType: | |
| +HB_OT_BITS_TAG_FS_TYPE | |
| +HB_OT_BITS_TAG_FS_SELECTION | |
| +HB_OT_BITS_TAG_MAC_STYLE | |
| +HB_OT_BITS_TAG_IS_FIXED_PITCH | |
| +HB_OT_BITS_TAG_UNICODE_RANGE_1 | |
| +HB_OT_BITS_TAG_UNICODE_RANGE_2 | |
| +HB_OT_BITS_TAG_UNICODE_RANGE_3 | |
| +HB_OT_BITS_TAG_UNICODE_RANGE_4 | |
| +HB_OT_BITS_TAG_CODE_PAGE_RANGE_1 | |
| +HB_OT_BITS_TAG_CODE_PAGE_RANGE_2 | |
| +HB_OT_NUMBER_TAG_FONT_X_MIN | |
| +HB_OT_NUMBER_TAG_FONT_Y_MIN | |
| +HB_OT_NUMBER_TAG_FONT_X_MAX | |
| +HB_OT_NUMBER_TAG_FONT_Y_MAX | |
| +hb_ot_bits_tag_t | |
| +hb_ot_fetch_bits() | |
| +hb_ot_number_tag_t | |
| +hb_ot_fetch_number() | |
| * Paint: | |
| +hb_paint_fill_glyph_func_t | |
| +hb_paint_fill_glyph() | |
| +hb_paint_funcs_set_fill_glyph_func() | |
| * Subset library: | |
| +HB_SUBSET_FLAGS_CFF_IDENTITY_CHARSET | |
| Overview of changes leading to 14.2.1 | |
| Tuesday, June 2, 2026 | |
| ===================================== | |
| - Various AAT shaping fixes: legacy `mort` contextual offsets (which could | |
| produce out-of-font glyph IDs), in-place deleted-glyph replacements, and | |
| overflow in obsolete offset math. | |
| - Fix Arabic PUA fallback shaping for the isolated lam-alef-maksura ligature. | |
| - Fix float-to-int overflow in `avar2` mapping with malformed fonts. | |
| - Harden buffer verification after detecting non-monotone clusters. | |
| - Various `COLR` v1 fixes: fix handling of `.notdef` without paint, round alpha | |
| consistently, and report the root clip under the font transform. | |
| - Various Glyph-extents fixes: inclusive rounding, and floating-point scaling | |
| before rounding so the reported box always covers the glyph. | |
| - Various Subsetting fixes: keep the `palt` spacing feature by default, raise | |
| the repacker `MAX_SPACES` limit, fix a repacker crash on shared `LigatureSet` | |
| nodes, guard `gvar` size overflow on 32-bit, and fix the `post` glyph-name | |
| sort comparator on macOS. | |
| - Replace `std::sort` with an internal quicksort, removing leaked `std::` | |
| symbols from the `libharfbuzz` ABI. | |
| - Harden size computations with saturating arithmetic against 32-bit overflow. | |
| - Various improvements to the experimental Rust shaper (HarfRust) and font | |
| functions (`fontations`): honor custom font funcs, key shape plans on | |
| features, faster buffer handling, and update to HarfRust 0.8. | |
| - Various fixes to the experimental `harfbuzz-gpu` and `harfbuzz-vector` | |
| libraries, including a `harfbuzz-vector` heap buffer overflow and Windows | |
| build fixes. | |
| - Map the `Hrkt` (Katakana or Hiragana) script tag to the `kana` OpenType tag. | |
| - Build configuration: new `HB_CONFIG_OVERRIDE_LAST_H` override header, | |
| decouple `HB_NO_DRAW` from `HB_NO_CFF`, and an optional `hb-allocator` Cargo | |
| feature. | |
| - Various build, CI, and fuzzing fixes. | |
| Overview of changes leading to 14.2.0 | |
| Monday, April 20, 2026 | |
| ===================================== | |
| 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() | |
| Overview of changes leading to 14.1.0 | |
| Saturday, April 4, 2026 | |
| ===================================== | |
| - GPU library improvements: | |
| * Add anti-aliased rendering for small sizes. | |
| * Store font scale in blob header. | |
| * Port scale/ppem support to MSL, WGSL, and HLSL shaders. | |
| * Fix contour breaks and bounds quantization in encode. | |
| * Fix garbled rendering after font change in web demo. | |
| * Various robustness fixes. | |
| - Various fuzzing fixes for `harfbuzz-raster`, `harfbuzz-gpu` and | |
| `harfbuzz-vector` libraries. | |
| - Move `HB_NO_CFF` from `HB_LEAN` to `HB_NO_DRAW` closure, and fix | |
| `HB_TINY` build. | |
| - New API: | |
| +hb_gpu_draw_set_scale() | |
| Overview of changes leading to 14.0.0 | |
| Wednesday, April 1, 2026 | |
| ===================================== | |
| - New `libharfbuzz-gpu` library: GPU text rasterization based on the | |
| Slug algorithm by Eric Lengyel. Encodes glyph outlines on the CPU | |
| into compact blobs that the GPU decodes and rasterizes directly in | |
| the fragment shader, with no intermediate bitmap atlas. | |
| Shader sources provided in GLSL, WGSL, MSL, and HLSL. | |
| New `hb-gpu` installed utility for interactive GPU text rendering. | |
| Live web demo: https://harfbuzz.github.io/hb-gpu-demo/ | |
| - New `harfbuzz-world.cc` amalgamated source for building a subset of | |
| all HarfBuzz libraries into one compilation unit, driven by a custom | |
| `hb-features.h`. | |
| - Updated README with libraries overview and project description. | |
| - Various bug fixes. | |
| - New API: | |
| +hb_gpu_draw_t | |
| +hb_gpu_draw_create_or_fail() | |
| +hb_gpu_draw_reference() | |
| +hb_gpu_draw_destroy() | |
| +hb_gpu_draw_set_user_data() | |
| +hb_gpu_draw_get_user_data() | |
| +hb_gpu_draw_get_funcs() | |
| +hb_gpu_draw_glyph() | |
| +hb_gpu_draw_encode() | |
| +hb_gpu_draw_get_extents() | |
| +hb_gpu_draw_reset() | |
| +hb_gpu_draw_recycle_blob() | |
| +hb_gpu_shader_lang_t | |
| +hb_gpu_shader_fragment_source() | |
| +hb_gpu_shader_vertex_source() | |
| Overview of changes leading to 13.2.1 | |
| Thursday, March 19, 2026 | |
| ===================================== | |
| - Fix regression in tracing messages from previous release. | |
| Overview of changes leading to 13.2.0 | |
| Thursday, March 19, 2026 | |
| ===================================== | |
| - Fix `hb-view` glyph positioning with `--glyphs` input from `hb-shape --ned`. | |
| - Various fuzzing fixes for `harfbuzz-subset`, `harfbuzz-raster` and | |
| `harfbuzz-vector` libraries. | |
| - Various improvements to tracing messages. | |
| - Various documentation improvements. | |
| - New API: | |
| +HB_OT_SHAPE_BUFFER_FORMAT_SERIAL | |
| +hb_ot_shape_get_buffer_format_serial() | |
| Overview of changes leading to 13.1.1 | |
| Friday, March 13, 2026 | |
| ===================================== | |
| - Support gzip-compressed `SVG` glyphs in `harfbuzz-raster` and | |
| `harfbuzz-vector` libraries. This new functionality requires `zlib`, and will | |
| not be available if HarfBuzz is built without `zlib`. | |
| - Improve handling of `SVG` glyphs in `harfbuzz-raster` and | |
| `harfbuzz-vector` libraries. | |
| - Further harden application of `stch` feature against malicious fonts. | |
| - Various fuzzing fixes. | |
| - Various build fixes: | |
| * Add missing `chafa` dependency to `hb-raster` utility, and remove | |
| accidental `cairo` dependency. | |
| * Don’t build raster and vector fuzzers if the library is disabled. | |
| * Add meson options for enabling / disabling `libpng` and `zlib`. | |
| * Support building `harfbuzz-raster` and `harfbuzz-vector` libraries with | |
| CMake. | |
| Overview of changes leading to 13.1.0 | |
| Wednesday, March 11, 2026 | |
| ===================================== | |
| - The `harfbuzz-raster` library can now render bitmap color glyph formats | |
| (`CBDT` and `sbix`). It now also has an API to serialize / deserialize images | |
| to and from PNGs. This new functionality requires `libpng`, and will not be | |
| available if HarfBuzz is built without `libpng`. | |
| - Install `hb-raster` command line utility. | |
| - Fix overflow when applying `stch` feature with malicious fonts. | |
| - Fix memory leaks in `harfbuzz-raster` and `harfbuzz-vector` in error | |
| conditions, as well as more robust handling of allocation failures. | |
| - Various documentation improvements and build fixes. | |
| - New API: | |
| +hb_raster_image_serialize_to_png_or_fail() | |
| +hb_raster_image_deserialize_from_png_or_fail() | |
| Overview of changes leading to 13.0.1 | |
| Saturday, March 7, 2026 | |
| ===================================== | |
| - Bug fixes in rendering `COLR` v1 fonts. | |
| - Various build fixes. | |
| Overview of changes leading to 13.0.0 | |
| Wednesday, March 4, 2026 | |
| ===================================== | |
| - New experimental drawing and rendering libraries: | |
| * New public `hb-vector` API for vector output of glyph outlines. The only | |
| supported output format currently is SVG. | |
| The new API is available in a separate `harfbuzz-vector` library. | |
| * New public `hb-raster` API for rasterizing glyphs to A8 / BGRA32 images. | |
| The new API is available in a separate `harfbuzz-raster` library. | |
| * Both APIs are still experimental and subject to change. | |
| * Both libraries support monochrome as well as vector color glyph formats | |
| (`COLR` v0, v1, and `SVG`). | |
| * Additionally, `hb-vector` supports also bitmap color glyph formats (`CBDT` | |
| and `sbix`). | |
| * New command line utilities to accompany the new APIs: `hb-vector` and | |
| `hb-raster`. They share many of the same options as `hb-view`. | |
| - New subset flag `HB_SUBSET_FLAGS_DOWNGRADE_CFF2` to convert instantiated | |
| `CFF2` table to `CFF `. This options will desubroutinize `CFF2` table and | |
| convert it to CID-keyed `CFF` table. This is useful for compatibility with | |
| older renderers that do not support `CFF2` table, including embedding | |
| instantiated fonts in PDF documents. | |
| - The `hb-view` command-line utility got a few bells and whistles as well, | |
| including support for logical / ink extents (with the default being the union | |
| of both), stroke, and an option to rotate glyph foreground colors | |
| (rainbow coloring). | |
| - New API to inspect color-glyph documents in `SVG` table. | |
| - New API to signal that the buffer content was changed by the client in | |
| message callbacks. | |
| - Improve `VARC` drawing accuracy with multiple transform / rounding fixes. | |
| - Don’t reject malformed `cmap` subtables, a regression from 12.3.0 when we | |
| stopped sanitizing malformed tables. | |
| - Disallow calling `hb_buffer_set_message_func()` from within the message | |
| callback. | |
| - Various performance optimizations, fuzzing fixes, and documentation | |
| improvements. | |
| - New API: | |
| * harfbuzz: | |
| +hb_buffer_changed() | |
| +hb_ot_color_get_svg_document_count() | |
| +hb_ot_color_get_svg_document_glyph_range() | |
| +hb_ot_color_glyph_get_svg_document_index() | |
| * harfbuzz-subset: | |
| +HB_SUBSET_FLAGS_DOWNGRADE_CFF2 | |
| * harfbuzz-raster: | |
| +hb_raster_draw_t | |
| +hb_raster_extents_t | |
| +hb_raster_format_t | |
| +hb_raster_image_t | |
| +hb_raster_paint_t | |
| +hb_raster_draw_create_or_fail() | |
| +hb_raster_draw_destroy() | |
| +hb_raster_draw_get_extents() | |
| +hb_raster_draw_get_funcs() | |
| +hb_raster_draw_get_scale_factor() | |
| +hb_raster_draw_get_transform() | |
| +hb_raster_draw_get_user_data() | |
| +hb_raster_draw_glyph() | |
| +hb_raster_draw_recycle_image() | |
| +hb_raster_draw_reference() | |
| +hb_raster_draw_render() | |
| +hb_raster_draw_reset() | |
| +hb_raster_draw_set_extents() | |
| +hb_raster_draw_set_glyph_extents() | |
| +hb_raster_draw_set_scale_factor() | |
| +hb_raster_draw_set_transform() | |
| +hb_raster_draw_set_user_data() | |
| +hb_raster_image_clear() | |
| +hb_raster_image_configure() | |
| +hb_raster_image_create_or_fail() | |
| +hb_raster_image_destroy() | |
| +hb_raster_image_get_buffer() | |
| +hb_raster_image_get_extents() | |
| +hb_raster_image_get_format() | |
| +hb_raster_image_get_user_data() | |
| +hb_raster_image_reference() | |
| +hb_raster_image_set_user_data() | |
| +hb_raster_paint_clear_custom_palette_colors() | |
| +hb_raster_paint_create_or_fail() | |
| +hb_raster_paint_destroy() | |
| +hb_raster_paint_get_extents() | |
| +hb_raster_paint_get_funcs() | |
| +hb_raster_paint_get_scale_factor() | |
| +hb_raster_paint_get_transform() | |
| +hb_raster_paint_get_user_data() | |
| +hb_raster_paint_glyph() | |
| +hb_raster_paint_recycle_image() | |
| +hb_raster_paint_reference() | |
| +hb_raster_paint_render() | |
| +hb_raster_paint_reset() | |
| +hb_raster_paint_set_custom_palette_color() | |
| +hb_raster_paint_set_extents() | |
| +hb_raster_paint_set_foreground() | |
| +hb_raster_paint_set_glyph_extents() | |
| +hb_raster_paint_set_scale_factor() | |
| +hb_raster_paint_set_transform() | |
| +hb_raster_paint_set_user_data() | |
| * harfbuzz-vector: | |
| +hb_vector_draw_t | |
| +hb_vector_extents_mode_t | |
| +hb_vector_extents_t | |
| +hb_vector_format_t | |
| +hb_vector_paint_t | |
| +hb_vector_draw_create_or_fail() | |
| +hb_vector_draw_destroy() | |
| +hb_vector_draw_get_extents() | |
| +hb_vector_draw_get_funcs() | |
| +hb_vector_draw_get_scale_factor() | |
| +hb_vector_draw_get_transform() | |
| +hb_vector_draw_get_user_data() | |
| +hb_vector_draw_glyph() | |
| +hb_vector_draw_recycle_blob() | |
| +hb_vector_draw_reference() | |
| +hb_vector_draw_render() | |
| +hb_vector_draw_reset() | |
| +hb_vector_draw_set_extents() | |
| +hb_vector_draw_set_glyph_extents() | |
| +hb_vector_draw_set_scale_factor() | |
| +hb_vector_draw_set_transform() | |
| +hb_vector_draw_set_user_data() | |
| +hb_vector_paint_clear_custom_palette_colors() | |
| +hb_vector_paint_create_or_fail() | |
| +hb_vector_paint_destroy() | |
| +hb_vector_paint_get_extents() | |
| +hb_vector_paint_get_funcs() | |
| +hb_vector_paint_get_scale_factor() | |
| +hb_vector_paint_get_transform() | |
| +hb_vector_paint_get_user_data() | |
| +hb_vector_paint_glyph() | |
| +hb_vector_paint_recycle_blob() | |
| +hb_vector_paint_reference() | |
| +hb_vector_paint_render() | |
| +hb_vector_paint_reset() | |
| +hb_vector_paint_set_custom_palette_color() | |
| +hb_vector_paint_set_extents() | |
| +hb_vector_paint_set_foreground() | |
| +hb_vector_paint_set_glyph_extents() | |
| +hb_vector_paint_set_palette() | |
| +hb_vector_paint_set_scale_factor() | |
| +hb_vector_paint_set_transform() | |
| +hb_vector_paint_set_user_data() | |
| +hb_vector_svg_paint_set_flat() | |
| +hb_vector_svg_paint_set_precision() | |
| +hb_vector_svg_set_flat() | |
| +hb_vector_svg_set_precision() | |
| Overview of changes leading to 12.3.2 | |
| Tuesday, January 24, 2026 | |
| ===================================== | |
| - Fix padding `gvar` table during subsetting when the original font uses long | |
| format and subset font uses short format. | |
| - Various fuzzing fixes. | |
| - Fix NULL pointer deference when malloc fails. | |
| Overview of changes leading to 12.3.1 | |
| Tuesday, January 20, 2026 | |
| ===================================== | |
| - Various speed optimizations. | |
| - Build fixes for GCC 4.9. | |
| - Fix NULL pointer deference when malloc fails. | |
| Overview of changes leading to 12.3.0 | |
| Saturday, December 27, 2025 | |
| ===================================== | |
| - Invalid font tables (eg. GSUB/GPOS) are outright rejected, instead of | |
| partially validated and used. This behavior is different from DirectWrite | |
| and HarfRust, and is in line with CoreText. For context and reasoning see: | |
| https://github.com/harfbuzz/harfbuzz/issues/5535#issuecomment-3573738217 | |
| - Various speed optimizations: | |
| * AAT shaping: speed up state machine on Apple silicon using a fast-path. | |
| 12% faster in LucidaGrande benchmark. | |
| * OpenType shaping: speed up (Chain)Context lookup shaping using a fast-path | |
| and Coverage caching. 20% speedup in NotoNastaliqUrdu benchmark. | |
| * Drawing mega variable-fonts: 30% speedup on GoogleSansFlex benchmark. | |
| * Drawing `VARC` fonts: 5% speedup on varc-hanzi benchmark. | |
| - Always apply synthetic slant around horizontal glyph origin in hb-draw API. | |
| - Fix undefined C++ behavior in some uses of union. | |
| - Remove the disabled by default uniscribe-bug-compatible mode from Indic and | |
| Khmer shapers, that used to be used when testing against Uniscribe shaping | |
| behaviour. | |
| - Support full instancing fonts with v2 `avar` table. | |
| - Various subsetting, build, fuzzing, and documentation fixes. | |
| Overview of changes leading to 12.2.0 | |
| Wednesday, November 5, 2025 | |
| ===================================== | |
| - While Windows platform contain the matching of the ChainContext rules to | |
| within the syllable for those features that are applied per syllable (in | |
| Indic-like and USE shapers), in 2015 we decided that in HarfBuzz we would | |
| allow the backtrack / lookahead parts of the rule to match across syllables. | |
| However, our implementation had a latent bug, causing the backtrack sequence | |
| to be matched within syllable most of the time, and inconsistently so. As | |
| such, and after empirical testing, we have decided to match the Windows | |
| implementation for this, so now both backtrack and lookahead sequences are | |
| contained to within the syllable, just like DirectWrite does. | |
| - Disable legacy `kern` table for most shapers, enabling it only for default, | |
| Arabic, Hangul, and Hebrew shapers. | |
| - When dropping `STAT` table during subsetting, drop also named IDs that are | |
| referenced only by it. | |
| - Don’t apply synthetic slant to glyph origin, fixing horizontal shift in | |
| slanted glyphs. | |
| - Various build and fuzzing fixes. | |
| - Documentation fixes. | |
| Overview of changes leading to 12.1.0 | |
| Wednesday, October 1, 2025 | |
| ===================================== | |
| - Build fixes with GCC 15 on some 32 bit platforms. | |
| - Fix misaligned pointer use. | |
| - New API, `hb_ot_layout_lookup_collect_glyph_alternates()`, to collect glyph | |
| substitutions from single and alternate substitution lookups in one call, | |
| instead of getting substitutions one by one using | |
| `hb_ot_layout_lookup_get_glyph_alternates()`. | |
| - New API | |
| +hb_ot_layout_lookup_collect_glyph_alternates() | |
| Overview of changes leading to 12.0.0 | |
| Sunday, September 28, 2025 | |
| ===================================== | |
| - The major feature of this release is that the Variable Composites / | |
| Components (`VARC` table) addition to the ISO OpenFontFormat has graduated | |
| from experimental, and is now enabled by default. It can be disabled at | |
| compile time by defining the `HB_NO_VAR_COMPOSITES`z macro. | |
| `VARC` table is a new way to store glyph outlines, that allows for better | |
| shape reuse, and can reduce font file size for Chinese, Japanese, Korean, and | |
| some other scripts drastically. Some font design tools provide a similar | |
| feature to designers, known as "smart components". This technology brings the | |
| same idea to the compiled font file. For the format specification, see: | |
| https://github.com/harfbuzz/boring-expansion-spec/blob/main/VARC.md | |
| Test fonts can be found at: | |
| https://github.com/notofonts/noto-cjk-varco/releases/tag/v0.003 | |
| The Fontra font editor already supports this technology. | |
| Note that this new format involves just the HarfBuzz draw API and does not | |
| affect shaping. | |
| - Correctly handle `markFilteringSet` lookup field during subsetting. | |
| - Deduplicate features during subsetting. | |
| - Disable “more” buffer messages that give more verbose output when using | |
| buffer messages callbacks, as it has a performance overhead. Users/tools that | |
| need the more verbose messages should define `HB_BUFFER_MESSAGE_MORE` to 1 | |
| when building HarfBuzz. | |
| - Shaping and instancing optimizations. | |
| - Fix subsetting issues when building with GCC 12. | |
| Overview of changes leading to 11.5.1 | |
| Monday, September 22, 2025 | |
| ===================================== | |
| - Optimized partial-instancing of fonts with a large number of axes. Now over two times faster. | |
| - Fix C++ STL atomics implementation. | |
| Overview of changes leading to 11.5.0 | |
| Saturday, September 12, 2025 | |
| ===================================== | |
| - Update to Unicode 17.0.0. | |
| - Subsetter optimizations. | |
| Overview of changes leading to 11.4.5 | |
| Saturday, August 30, 2025 | |
| ===================================== | |
| - Bug fixes for “AAT” shaping, and other shaping micro optimizations. | |
| Overview of changes leading to 11.4.4 | |
| Tuesday, August 26, 2025 | |
| ===================================== | |
| - Fix a shaping regression affecting mark glyphs in certain fonts. | |
| - Fix pruning of mark filtering sets when subsetting fonts, which caused changes in shaping behaviour. | |
| Overview of changes leading to 11.4.3 | |
| Saturday, August 23, 2025 | |
| ==================================== | |
| - Make shaping fail much faster for certain malformed fonts (e.g., those that | |
| trigger infinite recursion). | |
| - Fix undefined behaviour introduced in 11.4.2. | |
| - Fix detection of the “Cambria Math” font when fonts are scaled, so the | |
| workaround for the bad `MATH` table constant is applied. | |
| Overview of changes leading to 11.4.2 | |
| Thursday, August 21, 2025 | |
| ==================================== | |
| - Various performance and memory usage improvements. | |
| - The `hb-shape` command line tool can now be built with the amalgamated | |
| `harfbuzz.cc` source. | |
| - Fix regression in handling version 2 of `avar` table. | |
| - Increase various buffer length limits for better handling of fonts that | |
| generate huge number of glyphs per codepoint (e.g. Noto Sans Duployan) | |
| - Improvements to the harfrust shaper for more accurate testing. | |
| Overview of changes leading to 11.4.1 | |
| Wednesday, August 13, 2025 | |
| ==================================== | |
| - Fix clang compiler warnings. | |
| Overview of changes leading to 11.4.0 | |
| Wednesday, August 13, 2025 | |
| ==================================== | |
| - General shaping and subsetting speedups. | |
| - Fix in Graphite shaping backend when glyph advances became negative. | |
| - Subsetting improvements, pruning empty mark-attachment lookups. | |
| - Don't use the macro name `_S`, which is reserved by system liberaries. | |
| - Build fixes and speedup. | |
| - Add a `kbts` shaping backend that calls into the `kb_text_shape` | |
| single-header shaping library. This is purely for testing and | |
| performance evaluation and we do NOT recommend using it for any | |
| other purposes. | |
| Overview of changes leading to 11.3.3 | |
| Sunday, July 26, 2025 | |
| ==================================== | |
| - Fix but in vertical shaping of fonts without the vmtx table. | |
| Overview of changes leading to 11.3.2 | |
| Sunday, July 20, 2025 | |
| ==================================== | |
| - Fix build with non-compliant C++11 compilers that don't recognize | |
| the "and" keyword. | |
| Overview of changes leading to 11.3.1 | |
| Sunday, July 20, 2025 | |
| ==================================== | |
| - Fix crasher in the glyph_v_origin function introduced in | |
| 11.3.0. | |
| Overview of changes leading to 11.3.0 | |
| Sunday, July 20, 2025 | |
| ==================================== | |
| - Speed up handling fonts with very large number of variations: | |
| - Drawing by up to 40%. | |
| - Calculating glyph extents by up to 15%. | |
| - Getting horizontal glyph advances by up to 45%. | |
| - Speed up getting horizontal and vertical glyph advances by up to 24%. | |
| - Significantly speed up vertical text shaping. | |
| - Various documentation improvements. | |
| - Various build improvements. | |
| - Various subsetting improvements. | |
| - Various improvements to Rust font functions (fontations integration) and shaper (HarfRust integration). | |
| - Rename harfruzz option and shaper to harfrust following upstream rename. | |
| - Implement hb_face_reference_blob() for DirectWrite font functions. | |
| - New API: | |
| +hb_font_get_glyph_origins_func_t | |
| +hb_font_get_glyph_h_origins_func_t | |
| +hb_font_get_glyph_v_origins_func_t | |
| +hb_font_funcs_set_glyph_h_origins_func() | |
| +hb_font_funcs_set_glyph_v_origins_func() | |
| +hb_font_get_glyph_h_origins() | |
| +hb_font_get_glyph_v_origins() | |
| Overview of changes leading to 11.2.1 | |
| Monday, May 12, 2025 | |
| ==================================== | |
| - Various build improvements. | |
| - Fix build with HB_NO_DRAW and HB_NO_PAINT | |
| - Add an optional “harfruzz” shaper that uses HarfRuzz; an ongoing Rust port of | |
| HarfBuzz shaping. This shaper is mainly used for testing the output of the | |
| Rust implementation. | |
| - Fix regression that caused applying unsafe_to_break() to the whole buffer to | |
| be ignored. | |
| - Update USE data files. | |
| - Fix getting advances of out-of-rage glyph indices in DirectWrite font | |
| functions. | |
| Overview of changes leading to 11.2.0 | |
| Monday, April 28, 2025 | |
| ==================================== | |
| - Painting of COLRv1 fonts without clip boxes is now about 10 times faster. | |
| - Synthetic bold/slant of a sub font is now respected, instead of using the parent’s. | |
| - Glyph extents for fonts synthetic bold/slant are now accurately calculated. | |
| - Various build fixes | |
| - New API: | |
| +hb_font_is_synthetic() | |
| +hb_font_draw_glyph_or_fail_func_t | |
| +hb_font_paint_glyph_or_fail_func_t | |
| +hb_font_funcs_set_draw_glyph_or_fail_func() | |
| +hb_font_funcs_set_paint_glyph_or_fail_func() | |
| +hb_font_draw_glyph_or_fail() | |
| +hb_font_paint_glyph_or_fail() | |
| - Deprecated API: | |
| -hb_font_draw_glyph_func_t | |
| -hb_font_paint_glyph_func_t | |
| -hb_font_funcs_set_draw_glyph_func() | |
| -hb_font_funcs_set_paint_glyph_func() | |
| Overview of changes leading to 11.1.0 | |
| Wednesday, April 16, 2025 | |
| ==================================== | |
| - Include bidi mirroring variants of the requested codepoints when subsetting. | |
| The new HB_SUBSET_FLAGS_NO_BIDI_CLOSURE can be used to disable this | |
| behaviour. | |
| - Various bug fixes. | |
| - Various build fixes and improvements. | |
| - Various test suite improvements. | |
| - New API: | |
| +HB_SUBSET_FLAGS_NO_BIDI_CLOSURE | |
| Overview of changes leading to 11.0.1 | |
| Friday, April 4, 2025 | |
| ==================================== | |
| - The change in version 10.3.0 to apply “trak” table tracking values to glyph | |
| advances directly has been reverted as it required every font functions | |
| implementation to handle it, which breaks existing custom font functions. | |
| Tracking is instead back to being applied during shaping. | |
| - When `directwrite` integration is enabled, we now link to `dwrite.dll` | |
| instead of dynamically loading it. | |
| - A new experimental APIs for getting raw “CFF” and “CFF2” CharStrings. | |
| - We now provide manpages for the various command line utilities. Building | |
| manpages requires “help2man” and will be skipped if it is not present. | |
| - The command line utilities now set different return value for different kinds | |
| of failures. Details are provided in the manpages. | |
| - Various fixes and improvements to `fontations` font functions. | |
| - All shaping operations using the `ot` shaper have become memory | |
| allocation-free. | |
| - Glyph extents returned by `hb-ot` and `hb-ft` font functions are now rounded | |
| in stead of flooring/ceiling them, which also matches what other font | |
| libraries do. | |
| - Fix “AAT” deleted glyph marks interfering with fallback mark positioning. | |
| - Glyph outlines emboldening have been moved out of `hb-ot` and `hb-ft` font | |
| functions to the HarfBuzz font layer, so that it works with any font | |
| functions implementation. | |
| - Fix our fallback C++11 atomics integration, which seems to not be widely | |
| used. | |
| - Various testing fixes and improvements. | |
| - Various subsetting fixes and improvements. | |
| - Various other fixes and improvements. | |
| Overview of changes leading to 11.0.0 | |
| Monday, March 24, 2025 | |
| ==================================== | |
| - There are three new font-functions implementations (integrations) in this | |
| release: | |
| * `hb-coretext` has gained one, calling into the CoreText library, | |
| * `hb-directwrite` has gained one, calling into the DirectWrite library. | |
| * `hb-fontations` has gained one, calling into the Skrifa Rust library. | |
| All three are mostly useful for performance and correctness testing, but some | |
| clients might find them useful. | |
| An API is added to use them from a single API by providing a backend name | |
| string: | |
| * `hb_font_set_funcs_using()` | |
| - Several new APIs are added, to load a font-face using different | |
| "face-loaders", and a single entry point to them all using a loader name | |
| string: | |
| * `hb_ft_face_create_from_file_or_fail()` and | |
| `hb_ft_face_create_from_blob_or_fail()` | |
| * `hb_coretext_face_create_from_file_or_fail()` and | |
| `hb_coretext_face_create_from_blob_or_fail()` | |
| * `hb_directwrite_face_create_from_file_or_fail()` and | |
| `hb_directwrite_face_create_from_blob_or_fail()` | |
| * `hb_face_create_from_file_or_fail_using()` | |
| - All drawing and painting operations using the default, `hb-ot` functions have | |
| become memory allocation-free. | |
| - Several performance optimizations have been implemented. | |
| - Application of the `trak` table during shaping has been improved. | |
| - The `directwrite` shaper now supports font variations, and correctly applies | |
| user features. | |
| - The `hb-directwrite` API and shaper has graduated from experimental. | |
| - Various bug fixes and other improvements. | |
| - New API: | |
| +hb_malloc() | |
| +hb_calloc() | |
| +hb_realloc() | |
| +hb_free() | |
| +hb_face_list_loaders() | |
| +hb_face_create_or_fail_using() | |
| +hb_face_create_from_file_or_fail_using() | |
| +hb_font_list_funcs() | |
| +hb_font_set_funcs_using() | |
| +hb_coretext_face_create_from_blob_or_fail() | |
| +hb_directwrite_face_create_from_file_or_fail() | |
| +hb_directwrite_face_create_from_blob_or_fail() | |
| +hb_directwrite_font_create() | |
| +hb_directwrite_font_get_dw_font_face() | |
| +hb_directwrite_font_set_funcs() | |
| +hb_fontations_font_set_funcs() | |
| +hb_ft_face_create_from_blob_or_fail() | |
| +hb_paint_push_font_transform() | |
| +hb_paint_push_inverse_font_transform() | |
| +HB_BUFFER_CLUSTER_LEVEL_GRAPHEMES | |
| +HB_BUFFER_CLUSTER_LEVEL_IS_MONOTONE | |
| +HB_BUFFER_CLUSTER_LEVEL_IS_GRAPHEMES | |
| +HB_BUFFER_CLUSTER_LEVEL_IS_CHARACTERS | |
| - Deprecated API: | |
| -hb_directwrite_font_get_dw_font() | |
| Overview of changes leading to 10.4.0 | |
| Saturday, March 1, 2025 | |
| ==================================== | |
| - Drawing glyphs using hb-draw API now avoids any “malloc” calls, which | |
| improves drawing performance by 10+%. | |
| - Add support new “GVAR” table fonts with more than 65535 glyphs. Support is | |
| currently behind a compilation flag and is disabled by default. | |
| - Some hb-directwrite and hb-ft APIs got renamed with more clear names and the | |
| old names are deprecated. | |
| - Various build and fuzzing fixes. | |
| - New API: | |
| +hb_directwrite_face_get_dw_font_face() | |
| +hb_ft_font_get_ft_face() | |
| - Deprecated API: | |
| -hb_directwrite_face_get_font_face() | |
| -hb_ft_font_get_face() | |
| Overview of changes leading to 10.3.0 | |
| Thursday, February 11, 2025 | |
| ==================================== | |
| - Vastly improved “AAT” shaping performance. LucidaGrande benchmark-shape | |
| before: 14.6ms after: 5.9ms. | |
| - Improved OpenType shaping performance (kerning / ligature), at the expense of | |
| ~1kb per face allocated cache memory. Roboto-Regular benchmark-shape before: | |
| 10.3ms after: 9.4ms. | |
| - Improved “COLRv1” benchmark-font paint performance. Before: 7.85ms after | |
| 4.85ms. | |
| - Don’t apply glyph substitutions in “morx” table of a font with known broken | |
| “morx” table (AALMAGHRIBI.ttf font). | |
| - Update IANA and OT language registries. | |
| - Various documentation updates. | |
| - Various build improvements, and test speed-ups. | |
| - The “hb_face_reference_blob()” API now works for faces created with | |
| “hb_face_create_for_tables()” if the face sets “get_table_tags” callback. | |
| This constructs a new face blob from individual table blobs. | |
| - Various fixes to how “trak” table is handled to bring it closer to Core Text | |
| behaviour. Particularly, the tracking values for sizes not explicitly set in | |
| the table are now properly interpolated, and the tracking is applied to glyph | |
| advances when they are returned by ot-font functions, instead of applying | |
| them during shaping. The “trak” pseudo OpenType feature that could be used to | |
| disable “trak” table application have been dropped. | |
| - Core Text font functions now support non-BMP code points. | |
| - The drawing algorithm used by hb-draw for “glyf” table now match the | |
| algorithm used by FreeType and Core Text. | |
| - The “hb_coretext_font_create()” API now copy font variations from Core Text | |
| font to the created HarfBuzz font. | |
| - Add an API to get the feature tags enabled on a given shape-plan after | |
| executing it, which can be used to applications to show in the UI what | |
| features are applied by default (which can vary based on the font, the | |
| script, the language, and the direction set on the buffer). | |
| - Add APIs to created HarfBuzz font from DirectWrite font, and copy the font | |
| variations. | |
| - New API: | |
| +hb_directwrite_font_create() | |
| +hb_directwrite_font_get_dw_font() | |
| +hb_ot_shape_plan_get_feature_tags() | |
| Overview of changes leading to 10.2.0 | |
| Saturday, January 11, 2025 | |
| ==================================== | |
| - Consider Unicode Variation Selectors when subsetting “cmap” table. | |
| - Guard hb_cairo_glyphs_from_buffer() against malformed UTF-8 strings. | |
| - Fix incorrect “COLR” v1 glyph scaling in hb-cairo. | |
| - Use locale-independent parsing of double numbers is “hb-subset” command line | |
| tool. | |
| - Fix incorrect zeroing of advance width of base glyphs in various “Courier New” | |
| font versions due to incorrect “GDEF” glyph classes. | |
| - Fix handling of long language codes with “HB_LEAN” configuration. | |
| - Update OpenType language system registry. | |
| - Allow all Myanmar tone marks (including visarga) in any order | |
| - Don’t insert U+25CC DOTTED CIRCLE before superscript/subscript digits | |
| - Handle Garay script as right to left script. | |
| - New API for serializing font tables and potentially repacking them in optimal | |
| way. This was a previously experimental-only API. | |
| - New API for converting font variation setting from and to strings. | |
| - Various build fixes | |
| - Various subsetter and instancer fixes. | |
| - New API: | |
| +hb_subset_serialize_link_t | |
| +hb_subset_serialize_object_t | |
| +hb_subset_serialize_or_fail() | |
| +hb_subset_axis_range_from_string() | |
| +hb_subset_axis_range_to_string() | |
| Overview of changes leading to 10.1.0 | |
| Tuesday, November 5, 2024 | |
| ==================================== | |
| - Fix the sign of fallback vertical glyph advance (used when font has no | |
| vertical advance data). | |
| - Increase maximum “CFF” operands limit 20 times to support more complex fonts. | |
| - Add “--face-loader” option to command line utilities. | |
| - Support “COLR” v0 table in hb_font_get_glyph_extents(). | |
| - Add support for font functions that use Core Text APIs, similar to FreeType | |
| font functions. This allows, for example, using drawing fonts that use the new | |
| (and undocumented) “hvgl” table. | |
| - Update IANA and OT language registries, as well ase USE data files. | |
| - Fix build with ICU 76. | |
| - Various compiler warnings and build fixes. | |
| - Various subsetter fixes. | |
| - New API: | |
| +hb_face_create_or_fail() | |
| +hb_face_create_from_file_or_fail() | |
| +hb_coretext_face_create_from_file_or_fail() | |
| +hb_coretext_font_set_funcs() | |
| +hb_ft_face_create_from_file_or_fail() | |
| Overview of changes leading to 10.0.1 | |
| Tuesday, September 24, 2024 | |
| ==================================== | |
| - Relax sanitization checks for “morx” subtables to fix broken AAT shaping of | |
| macOS 15.0 version of GeezaPro. | |
| Overview of changes leading to 10.0.0 | |
| Monday, September 23, 2024 | |
| ==================================== | |
| - Unicode 16.0.0 support. | |
| - Various documentation fixes. | |
| - Various build fixes. | |
| - Add API to allow HarfBuzz client to set what glyph to use when a Unicode | |
| Variation Selector is not supported by the font, which would allow the client | |
| to customize what happens in this case, by using a different font for example. | |
| - Add a callback to for “hb_face_t” for getting the list of table tags. This is | |
| now used to make calling “hb_face_get_table_tags()” work on a faces created by | |
| “hb_face_create_for_tables()” (e.g. faces returned by “hb_subset_or_fail()”). | |
| - CGJ and Mongolian Variation Selectors are now ignored during glyph | |
| positioning, previously they would block both glyph substitution and | |
| positioning across them. | |
| - Support cairo script as an output format for “hb-view” command line tool. | |
| - Drop an optimization that would cause HarfBuzz not apply pair positioning | |
| lookup subtables under certain circumstances, for compatibility with other | |
| implementations that do apply these subtables. | |
| - Subsetting will now fail if source font has no glyphs, so feeding the subsetter | |
| invalid data will not silently return an empty face. | |
| - If after partially instancing a font no variation data is left (the instance | |
| is fully static), don’t consider this a failure. | |
| - Workaround a Firefox bug in displaying SVGs generated be “hb-view” command | |
| line tool under certain circumstances. | |
| - Fix bug in macroman mapping for “cmap” table. | |
| - Fix difference shaping output when HarfBuzz is built with with | |
| “HB_NO_OT_RULESETS_FAST_PATH” enabled. | |
| - Various subsetting and instancing fixes. | |
| - Various fuzzing fixes. | |
| - Add “with_libstdcxx” meson build option. | |
| - New API: | |
| +HB_SCRIPT_GARAY | |
| +HB_SCRIPT_GURUNG_KHEMA | |
| +HB_SCRIPT_KIRAT_RAI | |
| +HB_SCRIPT_OL_ONAL | |
| +HB_SCRIPT_SUNUWAR | |
| +HB_SCRIPT_TODHRI | |
| +HB_SCRIPT_TULU_TIGALARI | |
| +hb_buffer_set_not_found_variation_selector_glyph() | |
| +hb_buffer_get_not_found_variation_selector_glyph() | |
| +hb_get_table_tags_func_t | |
| +hb_face_set_get_table_tags_func() | |
| Overview of changes leading to 9.0.0 | |
| Thursday, Jun 27, 2024 | |
| ==================================== | |
| - HarfBuzz now the supports the proposed new OpenType “VARC” table. This | |
| replaces the previously supported “Variable Composites” experimental feature. | |
| “VARC” support is still experimental and it is not enabled unless HarfBuzz is | |
| built with experimental APIs enabled: | |
| https://github.com/harfbuzz/boring-expansion-spec/blob/main/VARC.md | |
| - Autotools build system have been dropped. Meson is the only supported build | |
| system in HarfBuzz going forward. | |
| - Speed up “AAT” shaping for short words by up to 4%. | |
| - Ignore unknown “CFF” operators. | |
| - “hb_subset_input_keep_everything()” now keeps also non-unicode “name” table | |
| records. | |
| - Update the IANA and OpenType language tag registries. | |
| - Support composite glyphs with very large number of points in hb-draw API. | |
| - Various build fixes. | |
| Overview of changes leading to 8.5.0 | |
| Monday, May 13, 2024 | |
| ==================================== | |
| - API for partial instancing is now stable and have been promoted out of | |
| experimental APIs. | |
| - Support instancing “BASE” table. | |
| - Speedup AAT shaping by 13–30%. | |
| - Various build fixes. | |
| - Various subsetter and instancer fixes. | |
| - New API: | |
| +HB_SUBSET_FLAGS_OPTIMIZE_IUP_DELTAS | |
| +hb_subset_input_get_axis_range() | |
| +hb_subset_input_pin_axis_location() | |
| Overview of changes leading to 8.4.0 | |
| Saturday, March 29, 2024 | |
| ==================================== | |
| - Add /bigobj to MSVC compiler flags in meson build, to fix building hb-subset.cc | |
| - Specify minimum versions of various dependencies in meson and autotools build. | |
| - When subsetting, place variation store at the end of “GDEF” table to fix | |
| shaping issues with some versions of Adobe InDesign. | |
| - Various build fixes. | |
| - New API: | |
| +hb_buffer_set_random_state() | |
| +hb_buffer_get_random_state() | |
| Overview of changes leading to 8.3.1 | |
| Saturday, March 16, 2024 | |
| ==================================== | |
| - hb_blob_create_from_file_or_fail() on Windows will now try to interpret the | |
| file name as UTF-8 first, and as system code page if it is not valid UTF-8. | |
| - Fix hb_style_get_value() in fonts with “STAT” table. | |
| - Properly handle negative offsets in CFF table. | |
| - Update IANA Language Subtag Registry to 2024-03-07. | |
| - Subsetter now supports subsetting “BASE” table. | |
| - Subsetter will update “hhea” font metrics in sync with “OS/2” ones. | |
| - “--variations” option of “hb-subset” now supports leaving out values that | |
| should be unchanged, e.g. “wght=:500:” will change the default and keep max | |
| and min unchanged. It also supports “*=drop” to to pin all axes to default | |
| location. | |
| - Fix hb_ot_math_get_glyph_kerning() to match updated “MATH” table spec. | |
| - Support legacy MacRoman encoding in “cmap” table. | |
| - Various build fixes. | |
| - Various subsetting and instancing fixes. | |
| - New API: | |
| hb_subset_input_pin_all_axes_to_default() | |
| Overview of changes leading to 8.3.0 | |
| Saturday, November 11, 2023 | |
| ==================================== | |
| - Improve memory barrier to fix potential segfaults. | |
| - Various build fixes. | |
| - Various subsetting and instancing fixes. | |
| - Rename “hb-subset” option “--instance” to “--variations” to match the other | |
| tools. Old option is kept as an alias. | |
| - New API: | |
| +HB_AAT_LAYOUT_FEATURE_TYPE_CURSIVE_CONNECTION | |
| - Deprecated API: | |
| -HB_AAT_LAYOUT_FEATURE_TYPE_CURISVE_CONNECTION | |
| Overview of changes leading to 8.2.2 | |
| Wednesday, October 18, 2023 | |
| “From the river to the sea, Palestine will be free” | |
| ==================================== | |
| - Fix regression from 8.1.0 in shaping fonts with duplicate feature tags. | |
| - Fix regression from 8.2.0 in parsing CSS-style feature strings. | |
| - Variable fonts instanciation now handles more tables. | |
| - Various CMake build improvements. | |
| - various fixes to build without errors with gcc 4.9.2. | |
| Overview of changes leading to 8.2.1 | |
| Monday, September 18, 2023 | |
| ==================================== | |
| - Unicode 15.1 support. | |
| Overview of changes leading to 8.2.0 | |
| Friday, September 8, 2023 | |
| ==================================== | |
| - Various build and fuzzing fixes | |
| - Improvements to COLRv1 painting. | |
| - New API: | |
| +hb_paint_color_glyph_func_t | |
| +hb_paint_funcs_set_color_glyph_func | |
| +hb_paint_color_glyph | |
| Overview of changes leading to 8.1.1 | |
| Wednesday, August 2, 2023 | |
| ==================================== | |
| - Fix shaping of contextual rules at the end of string, introduced in 8.1.0 | |
| - Fix stack-overflow in repacker with malicious fonts. | |
| - 30% speed up loading Noto Duployan font. | |
| Overview of changes leading to 8.1.0 | |
| Tuesday, August 1, 2023 | |
| ==================================== | |
| - Fix long-standing build issue with the AIX compiler and older Apple clang. | |
| - Revert optimization that could cause timeout during subsetting with malicious fonts. | |
| - More optimization work: | |
| - 45% speed up in shaping Noto Duployan font. | |
| - 10% speed up in subsetting Noto Duployan font. | |
| - Another 8% speed up in shaping Gulzar. | |
| - 5% speed up in loading Roboto. | |
| - New API: | |
| +hb_ot_layout_collect_features_map() | |
| Overview of changes leading to 8.0.1 | |
| Wednesday, July 12, 2023 | |
| ==================================== | |
| - Build fix on 32-bit ARM. | |
| - More speed optimizations: | |
| - 60% speed up in retain-gid (used for IFT) subsetting of SourceHanSans-VF. | |
| - 16% speed up in retain-gid (used for IFT) subsetting of NotoSansCJKkr. | |
| - 38% speed up in subsetting (beyond-64k) mega-merged Noto. | |
| Overview of changes leading to 8.0.0 | |
| Sunday, July 9, 2023 | |
| ==================================== | |
| - New, experimental, WebAssembly (WASM) shaper, that provides greater | |
| flexibility over OpenType/AAT/Graphite shaping, using WebAssembly embedded | |
| inside the font file. Currently WASM shaper is disabled by default and needs | |
| to be enabled at build time. For details, see: | |
| https://github.com/harfbuzz/harfbuzz/blob/main/docs/wasm-shaper.md | |
| For example fonts making use of the WASM shaper, see: | |
| https://github.com/harfbuzz/harfbuzz-wasm-examples | |
| - Improvements to Experimental features introduced in earlier releases: | |
| - Support for subsetting beyond-64k and VarComposites fonts. | |
| - Support for instancing variable fonts with cubic “glyf” table. | |
| - Many big speed optimizations: | |
| - Up to 89% speedup loading variable fonts for shaping. | |
| - Up to 88% speedup in small subsets of large (eg. CJK) fonts (both TTF and | |
| OTF), essential for Incremental Font Transfer (IFT). | |
| - Over 50% speedup in loading Roboto font for shaping. | |
| - Up to 40% speed up in loading (sanitizing) complex fonts. | |
| - 30% speed up in shaping Gulzar font. | |
| - Over 25% speedup in glyph loading Roboto font. | |
| - 10% speed up loading glyph shapes in VarComposite Hangul font. | |
| - hb-hashmap optimizations & hashing improvements. | |
| - New macro HB_ALWAYS_INLINE. HarfBuzz now inlines functions more aggressively, | |
| which results in some speedup at the expense of bigger code size. To disable | |
| this feature define the macro to just inline. | |
| - New API: | |
| +HB_CODEPOINT_INVALID | |
| +hb_ot_layout_get_baseline2() | |
| +hb_ot_layout_get_baseline_with_fallback2() | |
| +hb_ot_layout_get_font_extents() | |
| +hb_ot_layout_get_font_extents2() | |
| +hb_subset_input_set_axis_range() | |
| Overview of changes leading to 7.3.0 | |
| Tuesday, May 9, 2023 | |
| ==================================== | |
| - Speedup applying glyph variation in VarComposites fonts (over 40% speedup). | |
| (Behdad Esfahbod) | |
| - Speedup instancing some fonts (over 20% speedup in instancing RobotoFlex). | |
| (Behdad Esfahbod) | |
| - Speedup shaping some fonts (over 30% speedup in shaping Roboto). | |
| (Behdad Esfahbod) | |
| - Support subsetting VarComposites and beyond-64k fonts. (Behdad Esfahbod) | |
| - New configuration macro HB_MINIMIZE_MEMORY_USAGE to favor optimizing memory | |
| usage over speed. (Behdad Esfahbod) | |
| - Supporting setting the mapping between old and new glyph indices during | |
| subsetting. (Garret Rieger) | |
| - Various fixes and improvements. | |
| (Behdad Esfahbod, Denis Rochette, Garret Rieger, Han Seung Min, Qunxin Liu) | |
| - New API: | |
| +hb_subset_input_old_to_new_glyph_mapping() | |
| Overview of changes leading to 7.2.0 | |
| Thursday, April 27, 2023 | |
| ==================================== | |
| - Add Tifinagh to the list of scripts that can natively be either right-to-left | |
| or left-to-right, to improve handling of its glyph positioning. | |
| (Simon Cozens) | |
| - Return also single substitution from hb_ot_layout_lookup_get_glyph_alternates() | |
| (Behdad Esfahbod) | |
| - Fix 4.2.0 regression in applying across syllables in syllabic scripts. | |
| (Behdad Esfahbod) | |
| - Add flag to avoid glyph substitution closure during subsetting, and the | |
| corresponding “--no-layout-closure” option to “hb-subset” command line tool. | |
| (Garret Rieger) | |
| - Support instancing COLRv1 table. (Qunxin Liu) | |
| - Don’t drop used user-defined name table entries during subsetting. | |
| (Qunxin Liu) | |
| - Optimize handling of “gvar” table. (Behdad Esfahbod) | |
| - Various subsetter bug fixes and improvements. (Garret Rieger, Qunxin Liu) | |
| - Various documentation improvements. (Behdad Esfahbod, Josef Friedrich) | |
| - New API: | |
| +HB_SUBSET_FLAGS_NO_LAYOUT_CLOSURE | |
| +HB_UNICODE_COMBINING_CLASS_CCC132 | |
| - Deprecated API: | |
| -HB_UNICODE_COMBINING_CLASS_CCC133 | |
| Overview of changes leading to 7.1.0 | |
| Friday, March 3, 2023 | |
| ==================================== | |
| - New experimental hb_shape_justify() API that uses font variations to expand | |
| or shrink the text to a given advance. (Behdad Esfahbod) | |
| - Various build and bug fixes. (Behdad Esfahbod, Garret Rieger, Qunxin Liu) | |
| - New API: | |
| +hb_font_set_variation() | |
| Overview of changes leading to 7.0.1 | |
| Monday, February 20, 2023 | |
| ==================================== | |
| - Various build and bug fixes. | |
| Overview of changes leading to 7.0.0 | |
| Saturday, February 11, 2023 | |
| ==================================== | |
| - New hb-paint API that is designed mainly to paint “COLRv1” glyphs, but can be | |
| also used as a unified API to paint any of the glyph representations | |
| supported by HarfBuzz (B/W outlines, color layers, or color bitmaps). | |
| (Behdad Esfahbod, Matthias Clasen) | |
| - New hb-cairo API for integrating with cairo graphics library. This is provided | |
| as a separate harfbuzz-cairo library. (Behdad Esfahbod, Matthias Clasen) | |
| - Support for instancing “CFF2” table. (Behdad Esfahbod) | |
| - Support font emboldening. (Behdad Esfahbod) | |
| - Support feature ranges with AAT shaping. (Behdad Esfahbod) | |
| - Experimental support to cubic curves in “glyf” table, see | |
| https://github.com/harfbuzz/boring-expansion-spec/blob/main/glyf1-cubicOutlines.md | |
| for spec. (Behdad Esfahbod) | |
| - Various subsetter improvements. (Garret Rieger, Qunxin Liu, Behdad Esfahbod) | |
| - Various documentation improvements. | |
| (Behdad Esfahbod, Matthias Clasen, Khaled Hosny) | |
| - Significantly reduced memory use during shaping. (Behdad Esfahbod) | |
| - Greatly reduced memory use during subsetting “CFF” table. (Behdad Esfahbod) | |
| - New command line utility, hb-info, for querying various font information. | |
| (Behdad Esfahbod, Matthias Clasen) | |
| - New hb-shape/hb-view options: --glyphs, --color-palette, --font-bold, | |
| --font-grade, and --named-instance. (Behdad Esfahbod) | |
| - Miscellaneous fixes and improvements. | |
| (Amir Masoud Abdol, Andres Salomon, Behdad Esfahbod, Chun-wei Fan, | |
| Garret Rieger, Jens Kutilek, Khaled Hosny, Konstantin Käfer, Matthias Clasen, | |
| Nirbheek Chauhan, Pedro J. Estébanez, Qunxin Liu, Sergei Trofimovich) | |
| - New API: | |
| +HB_FONT_NO_VAR_NAMED_INSTANCE | |
| +HB_PAINT_IMAGE_FORMAT_BGRA | |
| +HB_PAINT_IMAGE_FORMAT_PNG | |
| +HB_PAINT_IMAGE_FORMAT_SVG | |
| +hb_cairo_font_face_create_for_face | |
| +hb_cairo_font_face_create_for_font | |
| +hb_cairo_font_face_get_face | |
| +hb_cairo_font_face_get_font | |
| +hb_cairo_font_face_get_scale_factor | |
| +hb_cairo_font_face_set_font_init_func | |
| +hb_cairo_font_face_set_scale_factor | |
| +hb_cairo_font_init_func_t | |
| +hb_cairo_glyphs_from_buffer | |
| +hb_cairo_scaled_font_get_font | |
| +hb_color_line_get_color_stops | |
| +hb_color_line_get_color_stops_func_t | |
| +hb_color_line_get_extend | |
| +hb_color_line_get_extend_func_t | |
| +hb_color_line_t | |
| +hb_color_stop_t | |
| +hb_draw_funcs_get_empty | |
| +hb_draw_funcs_get_user_data | |
| +hb_draw_funcs_set_user_data | |
| +hb_face_collect_nominal_glyph_mapping | |
| +hb_font_draw_glyph | |
| +hb_font_draw_glyph_func_t | |
| +hb_font_funcs_set_draw_glyph_func | |
| +hb_font_funcs_set_paint_glyph_func | |
| +hb_font_get_synthetic_bold | |
| +hb_font_get_var_named_instance | |
| +hb_font_paint_glyph | |
| +hb_font_paint_glyph_func_t | |
| +hb_font_set_synthetic_bold | |
| +hb_map_keys | |
| +hb_map_next | |
| +hb_map_update | |
| +hb_map_values | |
| +hb_ot_color_glyph_has_paint | |
| +hb_ot_color_has_paint | |
| +hb_ot_layout_script_select_language2 | |
| +hb_ot_name_id_predefined_t | |
| +hb_paint_color | |
| +hb_paint_color_func_t | |
| +hb_paint_composite_mode_t | |
| +hb_paint_custom_palette_color | |
| +hb_paint_custom_palette_color_func_t | |
| +hb_paint_extend_t | |
| +hb_paint_funcs_create | |
| +hb_paint_funcs_destroy | |
| +hb_paint_funcs_get_empty | |
| +hb_paint_funcs_get_user_data | |
| +hb_paint_funcs_is_immutable | |
| +hb_paint_funcs_make_immutable | |
| +hb_paint_funcs_reference | |
| +hb_paint_funcs_set_color_func | |
| +hb_paint_funcs_set_custom_palette_color_func | |
| +hb_paint_funcs_set_image_func | |
| +hb_paint_funcs_set_linear_gradient_func | |
| +hb_paint_funcs_set_pop_clip_func | |
| +hb_paint_funcs_set_pop_group_func | |
| +hb_paint_funcs_set_pop_transform_func | |
| +hb_paint_funcs_set_push_clip_glyph_func | |
| +hb_paint_funcs_set_push_clip_rectangle_func | |
| +hb_paint_funcs_set_push_group_func | |
| +hb_paint_funcs_set_push_transform_func | |
| +hb_paint_funcs_set_radial_gradient_func | |
| +hb_paint_funcs_set_sweep_gradient_func | |
| +hb_paint_funcs_set_user_data | |
| +hb_paint_funcs_t | |
| +hb_paint_image | |
| +hb_paint_image_func_t | |
| +hb_paint_linear_gradient | |
| +hb_paint_linear_gradient_func_t | |
| +hb_paint_pop_clip | |
| +hb_paint_pop_clip_func_t | |
| +hb_paint_pop_group | |
| +hb_paint_pop_group_func_t | |
| +hb_paint_pop_transform | |
| +hb_paint_pop_transform_func_t | |
| +hb_paint_push_clip_glyph | |
| +hb_paint_push_clip_glyph_func_t | |
| +hb_paint_push_clip_rectangle | |
| +hb_paint_push_clip_rectangle_func_t | |
| +hb_paint_push_group | |
| +hb_paint_push_group_func_t | |
| +hb_paint_push_transform | |
| +hb_paint_push_transform_func_t | |
| +hb_paint_radial_gradient | |
| +hb_paint_radial_gradient_func_t | |
| +hb_paint_sweep_gradient | |
| +hb_paint_sweep_gradient_func_t | |
| +hb_set_is_inverted | |
| +hb_subset_input_keep_everything | |
| - Deprecated API: | |
| -hb_font_funcs_set_glyph_shape_func | |
| -hb_font_get_glyph_shape_func_t | |
| -hb_font_get_glyph_shape | |
| Overview of changes leading to 6.0.0 | |
| Friday, December 16, 2022 | |
| ==================================== | |
| - A new API have been added to pre-process the face and speed up future | |
| subsetting operations on that face. Provides up to a 95% reduction in | |
| subsetting times when the same face is subset more than once. | |
| For more details and benchmarks, see: | |
| https://github.com/harfbuzz/harfbuzz/blob/main/docs/subset-preprocessing.md | |
| (Garret Rieger, Behdad Esfahbod) | |
| - Shaping have been speedup by skipping entire lookups when the buffer contents | |
| don't intersect with the lookup. Shows up to a 10% speedup in shaping some | |
| fonts. (Behdad Esfahbod) | |
| - A new experimental feature, “Variable Composites” (enabled by passing | |
| -Dexperimental_api=true to meson), is also featured in this release. | |
| This technology enables drastic compression of fonts in the Chinese, | |
| Japanese, Korean, and other writing systems, by reusing the OpenType Font | |
| Variations technology for encoding “smart components” into the font. | |
| The specification for these extensions to the font format can be found in: | |
| https://github.com/harfbuzz/boring-expansion-spec/blob/glyf1/glyf1.md | |
| A test variable-font with ~7160 Hangul syllables derived from the | |
| NotoSerifKR-VF font has been built, with existing OpenType technology, as | |
| well as with the new Variable Composites (VarComposites) technology. The | |
| VarComposites font is over 90% smaller than the OpenType version of the font! | |
| Both fonts can be obtained from the “smarties” repository: | |
| https://github.com/behdad/smarties/tree/3.0/fonts/hangul/serif | |
| When building HarfBuzz with experimental features enabled, you can test | |
| the “smarties” font with a sample character like this: | |
| $ hb-view butchered-hangul-serif-smarties-variable.ttf -u AE01 --variations=wght=700 | |
| (Behdad Esfahbod) | |
| - The HarfBuzz subsetter can now drop axes by pinning them to specific values | |
| (also referred to as instancing). There are a couple of restrictions | |
| currently: | |
| - Only works with TrueType (“glyf”) based fonts. “CFF2” fonts are not yet | |
| supported. | |
| - Only supports the case where all axes in a font are pinned. | |
| (Garret Rieger, Qunxin Liu) | |
| - Miscellaneous fixes and improvements. | |
| (Behdad Esfahbod, Christoph Reiter, David Corbett, Eli Schwartz, Garret | |
| Rieger, Joel Auterson, Jordan Petridis, Khaled Hosny, Lorenz Wildberg, | |
| Marco Rebhan, Martin Storsjö, Matthias Clasen, Qunxin Liu, Satadru Pramanik) | |
| - New API | |
| +hb_subset_input_pin_axis_location() | |
| +hb_subset_input_pin_axis_to_default() | |
| +hb_subset_preprocess() | |
| Overview of changes leading to 5.3.1 | |
| Wednesday, October 19, 2022 | |
| ==================================== | |
| - Subsetter repacker fixes. (Garret Rieger) | |
| - Adjust Grapheme clusters for Katakana voiced sound marks. (Behdad Esfahbod) | |
| - New “hb-subset” option “--preprocess-face”. (Garret Rieger) | |
| Overview of changes leading to 5.3.0 | |
| Saturday, October 8, 2022 | |
| "Women, Life, Freedom" #MahsaAmini | |
| ==================================== | |
| - Don’t add glyphs from dropped MATH or COLR tables to the subset glyphs. | |
| (Khaled Hosny) | |
| - Map “rlig” to appropriate AAT feature selectors. (Jonathan Kew) | |
| - Update USE data files to latest version. (David Corbett) | |
| - Check “CBDT” extents first before outline tables, to help with fonts that | |
| also include an empty “glyf” table. (Khaled Hosny) | |
| - More work towards variable font instancing in the subsetter. (Qunxin Liu) | |
| - Subsetter repacker improvements. (Garret Rieger) | |
| - New API: | |
| +hb_ot_layout_lookup_get_optical_bound() | |
| +hb_face_builder_sort_tables() | |
| Overview of changes leading to 5.2.0 | |
| Saturday, September 17, 2022 | |
| ==================================== | |
| - Fix regressions in hb-ft font functions for FT_Face’s with transformation | |
| matrix. (Behdad Esfahbod) | |
| - The experimental hb-repacker API now supports splitting several GPOS subtable | |
| types when needed. (Garret Rieger) | |
| - The HarfBuzz extensions to OpenType font format are now opt-in behind | |
| build-time flags. (Behdad Esfahbod) | |
| - The experimental hb-subset variable fonts instantiation API can now | |
| instantiate more font tables and arbitrary axis locations. (Qunxin Liu) | |
| - Unicode 15 support. (David Corbett) | |
| - Various documentation improvements. (Behdad Esfahbod, Matthias Clasen) | |
| - The hb-view command line tool now detects WezTerm inline images support. | |
| (Wez Furlong) | |
| - Fix FreeType and ICU dependency lookup with meson. (Xavier Claessens) | |
| - New API: | |
| +HB_SCRIPT_KAWI | |
| +HB_SCRIPT_NAG_MUNDARI | |
| Overview of changes leading to 5.1.0 | |
| Sunday, July 31, 2022 | |
| ==================================== | |
| - More extensive buffer tracing messages. (Behdad Esfahbod) | |
| - Fix hb-ft regression in bitmap fonts rendering. (Behdad Esfahbod) | |
| - Support extension promotion of lookups in hb-subset-repacker. (Garret Rieger) | |
| - A new HB_GLYPH_FLAG_SAFE_TO_INSERT_TATWEEL for scripts that use elongation | |
| (e.g. Arabic) to signify where it is safe to insert tatweel glyph without | |
| interrupting shaping. (Behdad Esfahbod) | |
| - Add “--safe-to-insert-tatweel” to “hb-shape” tool. (Behdad Esfahbod) | |
| - New API | |
| +HB_GLYPH_FLAG_SAFE_TO_INSERT_TATWEEL | |
| +HB_BUFFER_FLAG_PRODUCE_SAFE_TO_INSERT_TATWEEL | |
| Overview of changes leading to 5.0.1 | |
| Saturday, July 23, 2022 | |
| ==================================== | |
| - Fix version 2 “avar” table with hb-ft. (Behdad Esfahbod) | |
| Overview of changes leading to 5.0.0 | |
| Saturday, July 23, 2022 | |
| ==================================== | |
| - Support fonts with more than 65535 glyphs in “GDEF”, “GSUB”, and “GPOS” | |
| tables. This is part of https://github.com/be-fonts/boring-expansion-spec to | |
| extend OpenType in a backward-compatible way. | |
| (Behdad Esfahbod, Garret Rieger) | |
| - Complete support for more than 65535 glyphs in “glyf” table that started in | |
| 4.0.0 release. Part of boring-expansion-spec. (Behdad Esfahbod) | |
| - Support version 2 of “avar” table. Part of boring-expansion-spec. | |
| (Behdad Esfahbod) | |
| - Fix mark attachment on multiple substitutions in some cases. | |
| (Behdad Esfahbod) | |
| - Fix application of “calt”, “rclt”, and “ccmp” features to better match | |
| Uniscribe behaviour with some Arabic fonts. (Behdad Esfahbod) | |
| - Improvement to interaction between multiple cursive attachments. | |
| (Behdad Esfahbod) | |
| - Improve multiple mark interactions in Hebrew. (Behdad Esfahbod) | |
| - Implement language-specific forms in AAT shaping. (Behdad Esfahbod) | |
| - Fix variation of “VORG” table. (Behdad Esfahbod) | |
| - Support for specific script tags to be retained in the subsetter, and add | |
| “--layout-scripts” option to “hb-subset” tool. (Garret Rieger) | |
| - Accept space as delimiter for --features/--variations in command line tools. | |
| - Improve subsetting of “COLR” table. (Qunxin Liu) | |
| - Improved fuzzing coverage for ot-math API. (Frédéric Wang) | |
| - Fix “kern” table version 2 (AAT) sanitization on 32-bit systems. | |
| (Behdad Esfahbod) | |
| - Allow negative glyph advances from “graphite2” shaper. (Stephan Bergmann) | |
| - Implement loading (color) bitmap fonts with hb-ft. (Behdad Esfahbod) | |
| - Fix regression in hb-ft when changing font size. (Behdad Esfahbod) | |
| - Fix build on GCC < 7. (Kleis Auke Wolthuizen) | |
| - Dynamically load dwrite.dll on windows if “directwrite” shaper is enabled. | |
| (Luca Bacci) | |
| - Provide a single-file harfbuzz-subset.cc file for easier alternate building | |
| of hb-subset library, similar to harfbuzz.cc. (Khaled Hosny) | |
| - New API | |
| +HB_SUBSET_SETS_LAYOUT_SCRIPT_TAG | |
| +hb_language_matches() | |
| Overview of changes leading to 4.4.1 | |
| Wednesday, June 29, 2022 | |
| ==================================== | |
| - Fix test failure with some compilers. | |
| - Fix Telugu and Kannada kerning regression. | |
| Overview of changes leading to 4.4.0 | |
| Monday, June 27, 2022 | |
| ==================================== | |
| - Caching of variable fonts shaping, in particular when using HarfBuzz’s own | |
| font loading functions (ot). Bringing performance of variable shaping in par | |
| with non-variable fonts shaping. (Behdad Esfahbod) | |
| - Caching of format 2 “Contextual Substitution” and “Chained Contexts | |
| Substitution” lookups. Resulting in up to 20% speedup of lookup-heavy fonts | |
| like Gulzar or Noto Nastaliq Urdu. (Behdad Esfahbod) | |
| - Improved ANSI output from hb-view. (Behdad Esfahbod) | |
| - Support for shaping legacy, pre-OpenType Windows 3.1-era, Arabic fonts that | |
| relied on a fixed PUA encoding. (Khaled Hosny, Behdad Esfahbod) | |
| - Sinhala script is now shaped by the USE shaper instead of “indic” one. | |
| (Behdad Esfahbod, David Corbett) | |
| - Thai shaper improvements. (David Corbett) | |
| - hb-ot-name API supports approximate BCP-47 language matching, for example | |
| asking for “en_US” in a font that has only “en” names will return them. | |
| (Behdad Esfahbod) | |
| - Optimized TrueType glyph shape loading. (Behdad Esfahbod) | |
| - Fix subsetting of HarfBuzz faces created via hb_face_create_for_tables(). | |
| (Garret Rieger) | |
| - Add 32 bit var store support to the subsetter. (Garret Rieger) | |
| - New API | |
| +HB_BUFFER_FLAG_DEFINED | |
| +HB_BUFFER_SERIALIZE_FLAG_DEFINED | |
| +hb_font_changed() | |
| +hb_font_get_serial() | |
| +hb_ft_hb_font_changed() | |
| +hb_set_hash() | |
| +hb_map_copy() | |
| +hb_map_hash() | |
| Overview of changes leading to 4.3.0 | |
| Friday, May 20, 2022 | |
| ==================================== | |
| - Major speed up in loading and subsetting fonts, especially in | |
| handling CFF table. Subsetting some fonts is now 3 times faster. | |
| (Behdad Esfahbod, Garret Rieger) | |
| - Speed up blending CFF2 table. (Behdad Esfahbod) | |
| - Speed up hb_ot_tags_from_language(). (Behdad Esfahbod, David Corbett) | |
| - Fix USE classification of U+10A38 to fix multiple marks on single Kharoshthi | |
| base. (David Corbett) | |
| - Fix parsing of empty CFF Index. (Behdad Esfahbod) | |
| - Fix subsetting CPAL table with partial palette overlaps. (Garret Rieger) | |
| - New API | |
| +hb_map_is_equal() (Behdad Esfahbod) | |
| Overview of changes leading to 4.2.1 | |
| Sunday, April 24, 2022 | |
| ==================================== | |
| - Make sure hb_blob_create_from_file_or_fail() always returns nullptr in case | |
| of failure and not empty blob sometimes. (Khaled Hosny) | |
| - Add --passthrough-tables option to hb-subset. (Cosimo Lupo) | |
| - Reinstate a pause after basic features in Khmer shaper, fixing a regression | |
| introduced in previous release. (Behdad Esfahbod) | |
| - Better handling of Regional_Indicator when shaped with RTL-native scripts, | |
| reverting earlier fix that caused regressions in AAT shaping. (Behdad Esfahbod) | |
| Overview of changes leading to 4.2.0 | |
| Wednesday, March 30, 2022 | |
| ==================================== | |
| - Source code reorganization, splitting large hb-ot-layout files into smaller, | |
| per-subtable ones under OT/Layout/*. Code for more tables will follow suit in | |
| later releases. (Garret Rieger, Behdad Esfahbod) | |
| - Revert Indic shaper change in previous release that broke some fonts and | |
| instead make per-syllable restriction of “GSUB” application limited to | |
| script-specific Indic features, while applying them and discretionary | |
| features in one go. (Behdad Esfahbod) | |
| - Fix decoding of private in gvar table. (Behdad Esfahbod) | |
| - Fix handling of contextual lookups that delete too many glyphs. (Behdad Esfahbod) | |
| - Make “morx” deleted glyphs don’t block “GPOS” application. (Behdad Esfahbod) | |
| - Various build fixes. (Chun-wei Fan, Khaled Hosny) | |
| - New API | |
| +hb_set_next_many() (Andrew John) | |
| Overview of changes leading to 4.1.0 | |
| Wednesday, March 23, 2022 | |
| ==================================== | |
| - Various OSS-Fuzz fixes. (Behdad Esfahbod) | |
| - Make fallback vertical-origin match FreeType’s. (Behdad Esfahbod) | |
| - Treat visible viramas like dependent vowels in USE shaper. (David Corbett) | |
| - Apply presentation forms features and discretionary features in one go in | |
| Indic shaper, which seems to match Uniscribe and CoreText behaviour. | |
| (Behdad Esfahbod, David Corbett) | |
| - Various bug fixes. | |
| - New API | |
| +hb_set_add_sorted_array() (Andrew John) | |
| Overview of changes leading to 4.0.1 | |
| Friday, March 11, 2022 | |
| ==================================== | |
| - Update OpenType to AAT mappings for “hist” and “vrtr” features. | |
| (Florian Pircher) | |
| - Update IANA Language Subtag Registry to 2022-03-02. (David Corbett) | |
| - Update USE shaper to allow any non-numeric tail in a symbol cluster, and | |
| remove obsolete data overrides. (David Corbett) | |
| - Fix handling of baseline variations to return correctly scaled values. | |
| (Matthias Clasen) | |
| - A new experimental hb_subset_repack_or_fail() to repack an array of objects, | |
| eliminating offset overflows. The API is not available unless HarfBuzz is | |
| built with experimental APIs enabled. (Qunxin Liu) | |
| - New experimental API | |
| +hb_link_t | |
| +hb_object_t | |
| +hb_subset_repack_or_fail() | |
| Overview of changes leading to 4.0.0 | |
| Tuesday, March 1, 2022 | |
| ==================================== | |
| - New public API to create subset plan and gather information on things like | |
| glyph mappings in the final subset. The plan can then be passed on to perform | |
| the subsetting operation. (Garret Rieger) | |
| - Draw API for extracting glyph shapes have been extended and finalized and is | |
| no longer an experimental API. The draw API supports glyf, CFF and CFF2 | |
| glyph outlines tables, and applies variation settings set on the font as well | |
| as synthetic slant. The new public API is not backward compatible with the | |
| previous, non-public, experimental API. (Behdad Esfahbod) | |
| - The hb-view tool will use HarfBuzz draw API to render the glyphs instead of | |
| cairo-ft when compiled with Cairo 1.17.5 or newer, setting HB_DRAW | |
| environment variable to 1 or 0 will force using or not use the draw API, | |
| respectively. (Behdad Esfahbod) | |
| - The hb-shape and hb-view tools now default to using HarfBuzz’s own font | |
| loading functions (ot) instead of FreeType ones (ft). They also have a new | |
| option, --font-slant, to apply synthetic slant to the font. (Behdad Esfahbod) | |
| - HarfBuzz now supports more than 65535 (the OpenType limit) glyph shapes and | |
| metrics. See https://github.com/be-fonts/boring-expansion-spec/issues/6 and | |
| https://github.com/be-fonts/boring-expansion-spec/issues/7 for details. | |
| (Behdad Esfahbod) | |
| - New API to get the dominant horizontal baseline tag for a given script. | |
| (Behdad Esfahbod) | |
| - New API to get the baseline positions from the font, and synthesize missing | |
| ones. As well as new API to get font metrics and synthesize missing ones. | |
| (Matthias Clasen) | |
| - Improvements to finding dependencies on Windows when building with Visual | |
| Studio. (Chun-wei Fan) | |
| - New buffer flag, HB_BUFFER_FLAG_PRODUCE_UNSAFE_TO_CONCAT, that must be set | |
| during shaping for HB_GLYPH_FLAG_UNSAFE_TO_CONCAT flag to be reliably | |
| produced. This is to limit the performance hit of producing this flag to when | |
| it is actually needed. (Behdad Esfahbod) | |
| - Documentation improvements. (Matthias Clasen) | |
| - New API | |
| - General: | |
| +HB_BUFFER_FLAG_PRODUCE_UNSAFE_TO_CONCAT | |
| +hb_var_num_t | |
| - Draw: | |
| +hb_draw_funcs_t | |
| +hb_draw_funcs_create() | |
| +hb_draw_funcs_reference() | |
| +hb_draw_funcs_destroy() | |
| +hb_draw_funcs_is_immutable() | |
| +hb_draw_funcs_make_immutable() | |
| +hb_draw_move_to_func_t | |
| +hb_draw_funcs_set_move_to_func() | |
| +hb_draw_line_to_func_t | |
| +hb_draw_funcs_set_line_to_func() | |
| +hb_draw_quadratic_to_func_t | |
| +hb_draw_funcs_set_quadratic_to_func() | |
| +hb_draw_cubic_to_func_t | |
| +hb_draw_funcs_set_cubic_to_func() | |
| +hb_draw_close_path_func_t | |
| +hb_draw_funcs_set_close_path_func() | |
| +hb_draw_state_t | |
| +HB_DRAW_STATE_DEFAULT | |
| +hb_draw_move_to() | |
| +hb_draw_line_to() | |
| +hb_draw_quadratic_to() | |
| +hb_draw_cubic_to() | |
| +hb_draw_close_path() | |
| +hb_font_get_glyph_shape_func_t | |
| +hb_font_funcs_set_glyph_shape_func() | |
| +hb_font_get_glyph_shape() | |
| - OpenType layout | |
| +HB_OT_LAYOUT_BASELINE_TAG_IDEO_FACE_CENTRAL | |
| +HB_OT_LAYOUT_BASELINE_TAG_IDEO_EMBOX_CENTRAL | |
| +hb_ot_layout_get_horizontal_baseline_tag_for_script() | |
| +hb_ot_layout_get_baseline_with_fallback() | |
| - Metrics: | |
| +hb_ot_metrics_get_position_with_fallback() | |
| - Subset: | |
| +hb_subset_plan_t | |
| +hb_subset_plan_create_or_fail() | |
| +hb_subset_plan_reference() | |
| +hb_subset_plan_destroy() | |
| +hb_subset_plan_set_user_data() | |
| +hb_subset_plan_get_user_data() | |
| +hb_subset_plan_execute_or_fail() | |
| +hb_subset_plan_unicode_to_old_glyph_mapping() | |
| +hb_subset_plan_new_to_old_glyph_mapping() | |
| +hb_subset_plan_old_to_new_glyph_mapping() | |
| Overview of changes leading to 3.4.0 | |
| Sunday, February 13, 2022 | |
| ==================================== | |
| - Perform sanity checks on shaping results is now part of “harfbuzz” library | |
| and can be enabled by setting the buffer flag HB_BUFFER_FLAG_VERIFY. | |
| (Behdad Esfahbod) | |
| - Arabic Mark Transient Reordering Algorithm have been updated to revision 6. | |
| (Khaled Hosny) | |
| - ISO 15924 code for mathematical notation, ‘Zmth’, now maps to the OpenType | |
| ‘math’ tag. (Alexis King) | |
| - It is now possible to get at once all math kerning values for a given glyph | |
| at a given corner. (Alexis King) | |
| - Fix locale_t portability issues on systems the typedef’s it to a void | |
| pointer. (Behdad Esfahbod) | |
| - New API: | |
| +HB_BUFFER_FLAG_VERIFY | |
| +HB_OT_TAG_MATH_SCRIPT | |
| +HB_SCRIPT_MATH | |
| +hb_ot_math_kern_entry_t | |
| +hb_ot_math_get_glyph_kernings() | |
| - Deprecated API | |
| -HB_OT_MATH_SCRIPT | |
| Overview of changes leading to 3.3.2 | |
| Sunday, February 6, 2022 | |
| ==================================== | |
| - Revert splitting of pair positioning values introduced in 3.3.0 as it proved | |
| problematic. (Behdad Esfahbod) | |
| Overview of changes leading to 3.3.1 | |
| Monday, January 31, 2022 | |
| ==================================== | |
| - Fix heap-use-after-free in harfbuzz-subset introduced in previous release. | |
| (Garret Rieger) | |
| Overview of changes leading to 3.3.0 | |
| Monday, January 31, 2022 | |
| ==================================== | |
| - Improved documentation. (Matthias Clasen) | |
| - Internal code cleanup, using C++ standard library more. (Behdad Esfahbod) | |
| - The low 16-bits of face index will be used by hb_face_create() to select a | |
| face inside a font collection file format, while the high 16-bits will be | |
| used by hb_font_create() to load the named instance. (Behdad Esfahbod) | |
| - Glyph positions and other font metrics now apply synthetic slant set by | |
| hb_font_set_synthetic_slant(), for improved positioning for synthetically | |
| slanted fonts. (Behdad Esfahbod) | |
| - Fixed unintentional locale dependency in hb_variation_to_string() for decimal | |
| point representation. (Matthias Clasen) | |
| - When applying pair positioning (kerning) the positioning value is split | |
| between the two sides of the pair for improved cursor positioning between | |
| such pairs. (Behdad Esfahbod) | |
| - Introduced new HB_GLYPH_FLAG_UNSAFE_TO_CONCAT, to be used in conjunction | |
| with HB_GLYPH_FLAG_UNSAFE_TO_BREAK for optimizing re-shaping during line | |
| breaking. Check the documentation for further details. (Behdad Esfahbod) | |
| - Improved handling of macrolanguages when mapping BCP 47 codes to OpenType | |
| tags. (David Corbett) | |
| - New API: | |
| +HB_GLYPH_FLAG_UNSAFE_TO_CONCAT | |
| +hb_segment_properties_overlay() | |
| +hb_buffer_create_similar() | |
| +hb_font_set_synthetic_slant() | |
| +hb_font_get_synthetic_slant() | |
| +hb_font_get_var_coords_design() | |
| Overview of changes leading to 3.2.0 | |
| Friday, November 26, 2021 | |
| ==================================== | |
| “harfbuzz” library improvements: | |
| - Fixed shaping of Apple Color Emoji flags in right-to-left context. (Behdad Esfahbod) | |
| - Fixed positioning of CFF fonts in HB_TINY profile. (Behdad Esfahbod) | |
| - OpenType 1.9 language tags update. (David Corbett) | |
| - Add HB_NO_VERTICAL config option. | |
| - Add HB_CONFIG_OVERRIDE_H for easier configuration. (Behdad Esfahbod) | |
| “harfbuzz-subset” library improvements: | |
| - Improved packing of cmap, loca, and Ligature tables. (Garret Rieger) | |
| - Significantly improved overflow-resolution strategy in the repacker. (Garret Rieger) | |
| Overview of changes leading to 3.1.2 | |
| Friday, November 26, 2021 | |
| ==================================== | |
| - hb-shape / hb-view: revert treating text on the commandline as single | |
| paragraph (was introduced in 3.0.0); add new --single-par to do that. | |
| (Behdad Esfahbod) | |
| - Subsetter bug fixes. (Garret Rieger, Qunxin Liu, Behdad Esfahbod) | |
| Overview of changes leading to 3.1.1 | |
| Wednesday, November 8, 2021 | |
| ==================================== | |
| - Work around GCC cast-align error/warning on some platforms. (Behdad Esfahbod) | |
| - Documentation improvements. (Matthias Clasen) | |
| Overview of changes leading to 3.1.0 | |
| Wednesday, November 3, 2021 | |
| ==================================== | |
| - Better offset-overflow handling in the subsetter library. (Garret Rieger) | |
| - Improved Unicode 14 properties in the USE shaper, and various other USE | |
| shaper fixes. (David Corbett) | |
| - MATH and COLR v1 tables subsetting support, and various other subsetter fixes. | |
| (Qunxin Liu) | |
| - Support for Pwo Karen / Ason Chin medial la. (Simon Cozens) | |
| - Apply GPOS positioning when substituting with morx table, if kerx is missing. | |
| (Behdad Esfahbod) | |
| - Apply calt and clig features across syllable boundaries in Indic shaper. | |
| (Behdad Esfahbod) | |
| - meson option for enabling Graphite 2 has been renamed to graphite2. | |
| - Build and documentation fixes. | |
| - New API: | |
| +hb_buffer_set_not_found_glyph() | |
| +hb_buffer_get_not_found_glyph() | |
| Overview of changes leading to 3.0.0 | |
| Friday, September 17, 2021 | |
| ==================================== | |
| - Unicode 14.0 support (David Corbett). | |
| - The hb-subset API and the harfbuzz-subset library's ABI are now declared | |
| stable. The harfbuzz-subset library would not have been possible without the | |
| work of Garret Rieger and Qunxin Liu from Google Fonts, and the earlier work | |
| of Michiharu Ariza from Adobe. | |
| - The hb-style API is now stable and no longer experimental. | |
| - New API: | |
| +hb_style_tag_t | |
| +hb_style_get_value() | |
| +hb_subset_input_t | |
| +hb_subset_flags_t | |
| +hb_subset_sets_t | |
| +hb_subset_input_create_or_fail() | |
| +hb_subset_input_reference() | |
| +hb_subset_input_destroy() | |
| +hb_subset_input_set_user_data() | |
| +hb_subset_input_get_user_data() | |
| +hb_subset_input_unicode_set() | |
| +hb_subset_input_glyph_set() | |
| +hb_subset_input_set() | |
| +hb_subset_input_get_flags() | |
| +hb_subset_input_set_flags() | |
| +hb_subset_or_fail() | |
| - Removed old unstable harfbuzz-subset API: | |
| -hb_subset_input_nameid_set() | |
| -hb_subset_input_namelangid_set() | |
| -hb_subset_input_layout_features_set() | |
| -hb_subset_input_no_subset_tables_set() | |
| -hb_subset_input_drop_tables_set() | |
| -hb_subset_input_set_drop_hints() | |
| -hb_subset_input_get_drop_hints() | |
| -hb_subset_input_set_desubroutinize() | |
| -hb_subset_input_get_desubroutinize() | |
| -hb_subset_input_set_retain_gids() | |
| -hb_subset_input_get_retain_gids() | |
| -hb_subset_input_set_name_legacy() | |
| -hb_subset_input_get_name_legacy() | |
| -hb_subset_input_set_overlaps_flag() | |
| -hb_subset_input_get_overlaps_flag() | |
| -hb_subset_input_set_notdef_outline() | |
| -hb_subset_input_get_notdef_outline() | |
| -hb_subset_input_set_no_prune_unicode_ranges() | |
| -hb_subset_input_get_no_prune_unicode_ranges() | |
| -hb_subset() | |
| Overview of changes leading to 2.9.1 | |
| Tuesday, September 7, 2021 | |
| ==================================== | |
| - Final subset API is in place and if no issues are discovered, it will be the | |
| stable subset API of HarfBuzz 3.0.0. Old API is kept to ease transition, but | |
| will be removed in 3.0.0. | |
| - Various fuzzer-found bug fixes. | |
| - hb_buffer_append() now handles the pre- and post-context which previously | |
| were left unchanged in the destination buffer. | |
| - hb-view / hb-shape now accept following new arguments: | |
| o --unicodes-before/after: takes a list of hex numbers that represent Unicode | |
| codepoints. | |
| - Undeprecated API: | |
| +hb_set_invert() | |
| Overview of changes leading to 2.9.0 | |
| Wednesday, August 18, 2021 | |
| History Repeats Itself (Afghanistan) | |
| ==================================== | |
| - Subsetter API is being stabilized, with the first stable API to happen in | |
| 3.0.0 release (https://github.com/harfbuzz/harfbuzz/issues/3078). | |
| - Support multiple variation axes with same tag, aka HOI. | |
| - The “coretext” testing shaper now passes font variations to CoreText. | |
| - hb-shape/hb-view does not break line at new lines unless text is read from | |
| file. | |
| - hb-view and hb-subset has a --batch now, similar to hb-shape. | |
| - The --batch mode now uses ; as argument separator instead of : used previously. | |
| - The --batch in hb-shape does not expect 0th argument anymore. That is, the | |
| lines read are interpreted as argv[1:], instead of argv[0:]. | |
| - The --batch option has been undocumented. We are ready to document it; send | |
| feedback if you find it useful. | |
| - hb-subset got arguments revamps. Added much-requested --gids-file, --glyphs, | |
| --glyphs-file, --unicodes-file, supporting ranges in --unicodes. | |
| - Various bug fixes. | |
| Overview of changes leading to 2.8.2 | |
| Tuesday, July 8, 2021 | |
| ==================================== | |
| - Shaping LTR digits for RTL scripts now makes the native direction of the | |
| digits LTR, applying shaping and positioning rules on the same glyph order as | |
| Uniscribe. (Jonathan Kew, Khaled Hosny). | |
| - Subsetting COLR v1 and CPAL tables is now supported. (Garret Rieger, Qunxin Liu) | |
| - Various fixes and improvements to the subsetter. (Garret Rieger, Qunxin Liu, Behdad) | |
| - When applying morx table, mark glyph widths should not be zeroed. (Jonathan Kew) | |
| - GPOS is preferred over kerx, if GSUB was applied. (Behdad) | |
| - Regional_Indicator pairs are grouped together when clustering. (Behdad) | |
| - New API: | |
| +hb_blob_create_or_fail() | |
| +hb_blob_create_from_file_or_fail() | |
| +hb_set_copy() | |
| Overview of changes leading to 2.8.1 | |
| Tuesday, May 4, 2021 | |
| ==================================== | |
| - Subsetter now fully supports GSUB/GPOS/GDEF tables (including variations); as | |
| such, layout tables are retained by subsetter by default. (Garret Rieger, Qunxin Liu) | |
| - Build scripts no longer check for FontConfig as HarfBuzz does not use it. | |
| - hb-view supports iTerm2 and kitty inline image protocols (Khaled Hosny), | |
| it can also use Chafa for terminal graphics if available (Hans Petter Jansson). | |
| Overview of changes leading to 2.8.0 | |
| Tuesday, March 16, 2021 | |
| ==================================== | |
| - Shape joining scripts other than Arabic/Syriac using the Universal Shaping Engine. | |
| Previously these were shaped using the generalized Arabic shaper. (David Corbett) | |
| - Fix regression in shaping of U+0B55 ORIYA SIGN OVERLINE. (David Corbett) | |
| - Update language tags. (David Corbett) | |
| - Variations: reduce error: do not round each interpolated delta. (Just van Rossum) | |
| - Documentation improvements. (Khaled Hosny, Nathan Willis) | |
| - Subsetter improvements: subsets most, if not all, lookup types now. (Garret Rieger, Qunxin Liu) | |
| - Fuzzer-found fixes and other improvements when memory failures happen. (Behdad) | |
| - Removed most atomic implementations now that we have C++11 atomic impl. (Behdad) | |
| - General codebase upkeep; using more C++11 features: constexpr constructors, etc. (Behdad) | |
| Overview of changes leading to 2.7.4 | |
| Sunday, December 27, 2020 | |
| ==================================== | |
| - Fix missing --enable-introspection configure option from previous release | |
| tarball. | |
| - Documentation updates. | |
| Overview of changes leading to 2.7.3 | |
| Wednesday, December 23, 2020 | |
| ==================================== | |
| - Update USE shaper to 2020-08-13 specification, and other improvements. | |
| - Don’t disable liga feature in myanmar shaper, to match Uniscribe. | |
| - Improvements to language and script tags handling. | |
| - Update language system tag registry to OpenType 1.8.4 | |
| - Support for serializing and deserializing Unicode buffers. Serialized buffers | |
| are now delimited with `<>` or `[]` based on whether it is a Unicode or | |
| glyphs buffer. | |
| - Increase buffer work limits to handle fonts with many complex lookups. | |
| - Handle more shaping operations in trace output. | |
| - Memory access fixes. | |
| - More OOM fixes. | |
| - Improved documentation. | |
| - Build system improvements. | |
| - New API: | |
| +hb_buffer_has_positions() | |
| +hb_buffer_serialize() | |
| +hb_buffer_serialize_unicode() | |
| +hb_buffer_deserialize_unicode() | |
| Overview of changes leading to 2.7.2 | |
| Saturday, August 29, 2020 | |
| ==================================== | |
| - Fix a regression in the previous release that caused a crash with Kaithi. | |
| - More OOM fixes. | |
| Overview of changes leading to 2.7.1 | |
| Thursday, August 13, 2020 | |
| ==================================== | |
| - ot-funcs now handles variable empty glyphs better when hvar/vvar isn't present. | |
| - Reverted a GDEF processing regression. | |
| - A couple of fixes to handle OOM better. | |
| Overview of changes leading to 2.7.0 | |
| Saturday, July 25, 2020 | |
| ==================================== | |
| - Use an implementation for round that always rounds up, some minor fluctuations | |
| are expected on var font specially when hb-ot callback is used. | |
| - Fix an AAT's `kerx` issue on broken rendering of Devanagari Sangam MN. | |
| - Remove AAT's `lcar` table support from _get_ligature_carets API, not even much | |
| use on macOS installed fonts (only two files). GDEF support is the recommended | |
| one and expected to work properly after issues fixed two releases ago. | |
| - Minor memory fixes to handle OOM better specially in hb-ft. | |
| - Minor .so files versioning scheme change and remove stable/unstable scheme | |
| differences, was never used in practice (always default to stable scheme). | |
| - We are now suggesting careful packaging of the library using meson, | |
| https://github.com/harfbuzz/harfbuzz/wiki/Notes-on-migration-to-meson | |
| for more information. | |
| - Distribution package URL is changed, either use GitHub generated tarballs, | |
| `https://github.com/harfbuzz/harfbuzz/archive/$pkgver.tar.gz` | |
| or, even more preferably use commit hash of the release and git checkouts like, | |
| `git+https://github.com/harfbuzz/harfbuzz#commit=$commit` | |
| Overview of changes leading to 2.6.8 | |
| Monday, June 22, 2020 | |
| ==================================== | |
| - New API to fetch glyph alternates from GSUB table. | |
| - hb-coretext build fix for macOS < 10.10. | |
| - Meson build fixes, cmake port removal is postponed but please prepare for | |
| it and give us feedback. | |
| Autotools is still our main build system however please consider | |
| experimenting with meson also for packaging the library. | |
| - New API: | |
| +hb_ot_layout_lookup_get_glyph_alternates() | |
| Overview of changes leading to 2.6.7 | |
| Wednesday, June 3, 2020 | |
| ==================================== | |
| - Update to Unicode 13.0.0. | |
| - Fix hb_ot_layout_get_ligature_carets for fonts without lcar table, it was | |
| completely broken for all the other fonts since 2.1.2. | |
| - As a part of our migration to meson, this release will be the last one | |
| to provide cmake port files but autotools still is our main build system. | |
| There is a possibility that the next version or the after be released | |
| using meson. | |
| Overview of changes leading to 2.6.6 | |
| Tuesday, May 12, 2020 | |
| ==================================== | |
| - A fix in AAT kerning for Geeza Pro. | |
| - Better support for resource fork fonts on macOS. | |
| Overview of changes leading to 2.6.5 | |
| Friday, April 17, 2020 | |
| ==================================== | |
| - Add experimental meson build system. Autotools is still the primary | |
| and supported build system. | |
| - AAT is now always preferred for horizontal scripts when both AAT and OT | |
| layout tables exist at the same time. | |
| - Subsetter improvements. | |
| - New API: | |
| +hb_ft_font_lock_face() | |
| +hb_ft_font_unlock_face() | |
| Overview of changes leading to 2.6.4 | |
| Monday, October 29, 2019 | |
| ==================================== | |
| - Small bug fix. | |
| - Build fixes. | |
| Overview of changes leading to 2.6.3 | |
| Monday, October 28, 2019 | |
| ==================================== | |
| - Misc small fixes, mostly to build-related issues. | |
| - New API: | |
| +hb_font_get_nominal_glyphs() | |
| Overview of changes leading to 2.6.2 | |
| Monday, September 30, 2019 | |
| ==================================== | |
| - Misc small fixes, mostly to build-related issues. | |
| Overview of changes leading to 2.6.1 | |
| Thursday, August 22, 2019 | |
| ==================================== | |
| - Fix regression with hb_font_create_sub_font scaling introduced in 2.6.0. | |
| - Change interpretation of font PTEM size / CoreText font size handling. | |
| See https://github.com/harfbuzz/harfbuzz/pull/1484 | |
| - hb-ot-font: Prefer symbol cmap subtable if present. | |
| - Apply 'dist'/'abvm'/'blwm' features to all scripts. | |
| - Drop experimental DirectWrite API. | |
| Overview of changes leading to 2.6.0 | |
| Tuesday, August 13, 2019 | |
| ==================================== | |
| - New OpenType metrics, baseline, and metadata table access APIs. | |
| - New API to set font variations to a named-instance. | |
| - New hb-gdi.h header and API for creating hb_face_t from HFONT. | |
| - Amalgam: Provide a single-file harfbuzz.cc file for easier alternate building. | |
| - More size-reduction configurable options, enabled by HB_TINY. | |
| - New API: | |
| +hb_font_set_var_named_instance() | |
| +hb_gdi_face_create() | |
| +hb_ot_layout_baseline_tag_t | |
| +hb_ot_layout_get_baseline() | |
| +hb_ot_meta_tag_t | |
| +hb_ot_meta_get_entry_tags() | |
| +hb_ot_meta_reference_entry() | |
| +hb_ot_metrics_tag_t | |
| +hb_ot_metrics_get_position() | |
| +hb_ot_metrics_get_variation() | |
| +hb_ot_metrics_get_x_variation() | |
| +hb_ot_metrics_get_y_variation() | |
| Overview of changes leading to 2.5.3 | |
| Wednesday, June 26, 2019 | |
| ==================================== | |
| - Fix UCD script data for Unicode 10+ scripts. This was broken since 2.5.0. | |
| - More optimizations for HB_TINY. | |
| Overview of changes leading to 2.5.2 | |
| Thursday, June 20, 2019 | |
| ==================================== | |
| - More hb-config.hh facilities to shrink library size, namely when built as | |
| HB_TINY. | |
| - New documentation of custom configurations in CONFIG.md. | |
| - Fix build on gcc 4.8. That's supported again. | |
| - Universal Shaping Engine improvements thanks to David Corbett. | |
| - API Changes: Undeprecate some horizontal-kerning API and re-enable in hb-ft, | |
| such that Type1 fonts will continue kerning. | |
| Overview of changes leading to 2.5.1 | |
| Friday, May 31, 2019 | |
| ==================================== | |
| - Fix build with various versions of Visual Studio. | |
| - Improved documentation, thanks to Nathan Willis. | |
| - Bugfix in subsetting glyf table. | |
| - Improved scripts for cross-compiling for Windows using mingw. | |
| - Rename HB_MATH_GLYPH_PART_FLAG_EXTENDER to HB_OT_MATH_GLYPH_PART_FLAG_EXTENDER. | |
| A deprecated macro is added for backwards-compatibility. | |
| Overview of changes leading to 2.5.0 | |
| Friday, May 24, 2019 | |
| ==================================== | |
| - This release does not include much functional changes, but includes major internal | |
| code-base changes. We now require C++11. Support for gcc 4.8 and earlier has been | |
| dropped. | |
| - New hb-config.hh facility for compiling smaller library for embedded and web usecases. | |
| - New Unicode Character Database implementation that is half the size of previously-used | |
| UCDN. | |
| - Subsetter improvements. | |
| - Improved documentation, thanks to Nathan Willis. | |
| - Misc shaping fixes. | |
| Overview of changes leading to 2.4.0 | |
| Monday, March 25, 2019 | |
| ==================================== | |
| - Unicode 12. | |
| - Misc fixes. | |
| - Subsetter improvements. | |
| - New API: | |
| +HB_BUFFER_FLAG_DO_NOT_INSERT_DOTTED_CIRCLE | |
| +hb_directwrite_face_create() | |
| Overview of changes leading to 2.3.1 | |
| Wednesday, January 30, 2019 | |
| ==================================== | |
| - AAT bug fixes. | |
| - Misc internal housekeeping cleanup. | |
| Overview of changes leading to 2.3.0 | |
| Thursday, December 20, 2018 | |
| ==================================== | |
| - Fix regression on big-endian architectures. Ouch! | |
| - Misc bug and build fixes. | |
| - Fix subsetting of simple GSUB/GDEF. | |
| - Merge CFF / CFF2 support contributed by Adobe. This mostly involves | |
| the subsetter, but also get_glyph_extents on CFF fonts. | |
| - New API in hb-aat.h: | |
| +hb_aat_layout_has_substitution() | |
| +hb_aat_layout_has_positioning() | |
| +hb_aat_layout_has_tracking() | |
| Overview of changes leading to 2.2.0 | |
| Thursday, November 29, 2018 | |
| ==================================== | |
| - Misc shaping bug fixes. | |
| - Add font variations named-instance API. | |
| - Deprecate font variations axis enumeration API and add replacement. | |
| - AAT shaping improvements: | |
| o Fixed 'kern' table Format 2 implementation. | |
| o Implement 'feat' table API for feature detection. | |
| o Blacklist 'GSUB' table of fonts from 'MUTF' foundry that also have 'morx'. | |
| - New API: | |
| +hb_aat_layout_feature_type_t | |
| +hb_aat_layout_feature_selector_t | |
| +hb_aat_layout_get_feature_types() | |
| +hb_aat_layout_feature_type_get_name_id | |
| +hb_aat_layout_feature_selector_info_t | |
| +HB_AAT_LAYOUT_NO_SELECTOR_INDEX | |
| +hb_aat_layout_feature_type_get_selector_infos() | |
| +hb_ot_var_axis_flags_t | |
| +hb_ot_var_axis_info_t | |
| +hb_ot_var_get_axis_infos() | |
| +hb_ot_var_find_axis_info() | |
| +hb_ot_var_get_named_instance_count() | |
| +hb_ot_var_named_instance_get_subfamily_name_id() | |
| +hb_ot_var_named_instance_get_postscript_name_id() | |
| +hb_ot_var_named_instance_get_design_coords() | |
| - Deprecated API: | |
| -HB_OT_VAR_NO_AXIS_INDEX | |
| -hb_ot_var_axis_t | |
| -hb_ot_var_get_axes() | |
| -hb_ot_var_find_axis() | |
| Overview of changes leading to 2.1.3 | |
| Friday, November 16, 2018 | |
| ==================================== | |
| - Fix AAT 'mort' shaping, which was broken in 2.1.2 | |
| Overview of changes leading to 2.1.2 | |
| Friday, November 16, 2018 | |
| ==================================== | |
| - Various internal changes. | |
| - AAT shaping improvements: | |
| o Implement kern table Format 1 state-machine-based kerning. | |
| o Implement cross-stream kerning (cursive positioning, etc). | |
| o Ignore emptyish GSUB tables (zero scripts) if morx present. | |
| o Don't apply GPOS if morx is being applied. Matches Apple. | |
| -Overview of changes leading to 2.1.1 | |
| Monday, November 5, 2018 | |
| ==================================== | |
| - AAT improvements: | |
| o Implement 'mort' table. | |
| o Implement 'kern' subtables Format 1 and Format 3. | |
| Overview of changes leading to 2.1.0 | |
| Tuesday, October 30, 2018 | |
| ==================================== | |
| - AAT shaping improvements: | |
| o Allow user controlling AAT features, for whole buffer only currently. | |
| o Several 'morx' fixes. | |
| o Implement tuple-kerns in 'kerx'; Fixes kerning with Apple default | |
| San Francisco fonts. | |
| - Support for color fonts: | |
| o COLR/CPAL API to fetch color layers. | |
| o SVG table to fetch SVG documents. | |
| o CBDT/sbix API to fetch PNG images. | |
| - New 'name' table API. | |
| - hb-ot-font now uses 'VORG' table to correctly position CFF glyphs | |
| in vertical layout. | |
| - Various fuzzer-found bug fixes. | |
| - Changed API: | |
| A type and a macro added in 2.0.0 were renamed: | |
| hb_name_id_t -> hb_ot_name_id_t | |
| HB_NAME_ID_INVALID -> HB_OT_NAME_ID_INVALID | |
| - New API: | |
| +hb_color_t | |
| +HB_COLOR | |
| +hb_color_get_alpha() | |
| +hb_color_get_red() | |
| +hb_color_get_green() | |
| +hb_color_get_blue() | |
| +hb_ot_color_has_palettes() | |
| +hb_ot_color_palette_get_count() | |
| +hb_ot_color_palette_get_name_id() | |
| +hb_ot_color_palette_color_get_name_id() | |
| +hb_ot_color_palette_flags_t | |
| +hb_ot_color_palette_get_flags() | |
| +hb_ot_color_palette_get_colors() | |
| +hb_ot_color_has_layers() | |
| +hb_ot_color_layer_t | |
| +hb_ot_color_glyph_get_layers() | |
| +hb_ot_color_has_svg() | |
| +hb_ot_color_glyph_reference_svg() | |
| +hb_ot_color_has_png() | |
| +hb_ot_color_glyph_reference_png() | |
| +hb_ot_name_id_t | |
| +HB_OT_NAME_ID_INVALID | |
| +HB_OT_NAME_ID_COPYRIGHT | |
| +HB_OT_NAME_ID_FONT_FAMILY | |
| +HB_OT_NAME_ID_FONT_SUBFAMILY | |
| +HB_OT_NAME_ID_UNIQUE_ID | |
| +HB_OT_NAME_ID_FULL_NAME | |
| +HB_OT_NAME_ID_VERSION_STRING | |
| +HB_OT_NAME_ID_POSTSCRIPT_NAME | |
| +HB_OT_NAME_ID_TRADEMARK | |
| +HB_OT_NAME_ID_MANUFACTURER | |
| +HB_OT_NAME_ID_DESIGNER | |
| +HB_OT_NAME_ID_DESCRIPTION | |
| +HB_OT_NAME_ID_VENDOR_URL | |
| +HB_OT_NAME_ID_DESIGNER_URL | |
| +HB_OT_NAME_ID_LICENSE | |
| +HB_OT_NAME_ID_LICENSE_URL | |
| +HB_OT_NAME_ID_TYPOGRAPHIC_FAMILY | |
| +HB_OT_NAME_ID_TYPOGRAPHIC_SUBFAMILY | |
| +HB_OT_NAME_ID_MAC_FULL_NAME | |
| +HB_OT_NAME_ID_SAMPLE_TEXT | |
| +HB_OT_NAME_ID_CID_FINDFONT_NAME | |
| +HB_OT_NAME_ID_WWS_FAMILY | |
| +HB_OT_NAME_ID_WWS_SUBFAMILY | |
| +HB_OT_NAME_ID_LIGHT_BACKGROUND | |
| +HB_OT_NAME_ID_DARK_BACKGROUND | |
| +HB_OT_NAME_ID_VARIATIONS_PS_PREFIX | |
| +hb_ot_name_entry_t | |
| +hb_ot_name_list_names() | |
| +hb_ot_name_get_utf8() | |
| +hb_ot_name_get_utf16() | |
| +hb_ot_name_get_utf32() | |
| Overview of changes leading to 2.0.2 | |
| Saturday, October 20, 2018 | |
| ==================================== | |
| - Fix two minor memory access issues in AAT tables. | |
| Overview of changes leading to 2.0.1 | |
| Friday, October 19, 2018 | |
| ==================================== | |
| - Fix hb-version.h reported release version that went wrong (1.8.0) | |
| with previous release. | |
| - Fix extrapolation in 'trak' table. | |
| - Fix hb-font infinite-recursion issue with some font funcs and | |
| subclassed fonts. | |
| - Implement variation-kerning format in kerx table, although without | |
| variation. | |
| - Fix return value of hb_map_is_empty(). | |
| Overview of changes leading to 2.0.0 | |
| Thursday, October 18, 2018 | |
| ==================================== | |
| - Added AAT shaping support (morx/kerx/trak). | |
| Automatically used if GSUB/GPOS are not available respectively. | |
| Set HB_OPTIONS=aat env var to have morx/kerx preferred over | |
| GSUB/GPOS. | |
| - Apply TrueType kern table internally, instead of relying on | |
| hb_font_t callbacks. | |
| - Khmer shaper significantly rewritten to better match Uniscribe. | |
| - Indic3 tags ('dev3', etc) are passed to USE shaper. | |
| - .dfont Mac font containers implemented. | |
| - Script- and language-mapping revamped to better use BCP 47. | |
| - Misc USE and Indic fixes. | |
| - Misc everything fixes. | |
| - Too many things to list. Biggest release since 0.9.1, with | |
| over 500 commits in just over 5 weeks! Didn't intend it to | |
| be a big release. Just happened to become. | |
| - hb-ft now locks underlying FT_Face during use. | |
| API changes: | |
| - Newly-created hb_font_t's now have our internal "hb-ot-font" | |
| callbacks set on them, so they should work out of the box | |
| without any callbacks set. If callbacks are set, everything | |
| is back to what it was before, the fallback callbacks are | |
| null. If you to get the internal implementation modified, | |
| sub_font it. | |
| - New hb_font_funcs_set_nominal_glyphs_func() allows speeding | |
| up character to glyph mapping. | |
| - New API: | |
| +HB_FEATURE_GLOBAL_START | |
| +HB_FEATURE_GLOBAL_END | |
| +hb_buffer_set_invisible_glyph() | |
| +hb_buffer_get_invisible_glyph() | |
| +hb_font_funcs_set_nominal_glyphs_func() | |
| +hb_ot_layout_table_select_script() | |
| +hb_ot_layout_script_select_language() | |
| +hb_ot_layout_feature_get_name_ids() | |
| +hb_ot_layout_feature_get_characters() | |
| +hb_name_id_t | |
| +HB_NAME_ID_INVALID | |
| +HB_OT_MAX_TAGS_PER_SCRIPT | |
| +hb_ot_tags_from_script_and_language() | |
| +hb_ot_tags_to_script_and_language() | |
| - Deprecated API: | |
| -hb_font_funcs_set_glyph_func() | |
| -hb_unicode_eastasian_width_func_t | |
| -hb_unicode_funcs_set_eastasian_width_func() | |
| -hb_unicode_eastasian_width() | |
| -hb_unicode_decompose_compatibility_func_t | |
| -HB_UNICODE_MAX_DECOMPOSITION_LEN | |
| -hb_unicode_funcs_set_decompose_compatibility_func() | |
| -hb_unicode_decompose_compatibility() | |
| -hb_font_funcs_set_glyph_h_kerning_func() | |
| -hb_font_funcs_set_glyph_v_kerning_func() | |
| -hb_font_get_glyph_h_kerning() | |
| -hb_font_get_glyph_v_kerning() | |
| -hb_font_get_glyph_kerning_for_direction() | |
| -hb_ot_layout_table_choose_script() | |
| -hb_ot_layout_script_find_language() | |
| -hb_ot_tags_from_script() | |
| -hb_ot_tag_from_language() | |
| Overview of changes leading to 1.9.0 | |
| Monday, September 10, 2018 | |
| ==================================== | |
| - Added 'cmap' API to hb_face_t. | |
| - Face-builder API. | |
| - hb-ot-font re-creation should be much leaner now, as the | |
| font tables it uses are cached on hb_face_t now. | |
| - Internal source header file name changes: | |
| hb-*-private.hh is renamed to hb-*.hh. | |
| - New API: | |
| +HB_UNICODE_MAX | |
| +hb_face_collect_unicodes() | |
| +hb_face_collect_variation_selectors() | |
| +hb_face_collect_variation_unicodes() | |
| +hb_face_builder_create() | |
| +hb_face_builder_add_table() | |
| Overview of changes leading to 1.8.8 | |
| Tuesday, August 14, 2018 | |
| ==================================== | |
| - Fix hb-icu crash on architectures where compare_exchange_weak() can | |
| fail falsely. This bug was introduced in 1.8.4. | |
| https://bugs.chromium.org/p/chromium/issues/detail?id=873568 | |
| - More internal refactoring of atomic operations and singletons. | |
| - API changes: | |
| The following functions do NOT reference their return value before | |
| returning: | |
| * hb_unicode_funcs_get_default() | |
| * hb_glib_get_unicode_funcs() | |
| * hb_icu_get_unicode_funcs() | |
| This is consistent with their naming ("get", instead of "reference") | |
| as well as how they are used in the wild (ie. no one calls destroy() | |
| on their return value.) | |
| Overview of changes leading to 1.8.7 | |
| Wednesday, August 8, 2018 | |
| ==================================== | |
| - Fix assertion failure with GDEF-blacklisted fonts. | |
| Overview of changes leading to 1.8.6 | |
| Tuesday, August 7, 2018 | |
| ==================================== | |
| - Internal code shuffling. | |
| - New API to speed up getting advance widths for implementations | |
| that have heavy overhead in get_h_advance callback: | |
| +hb_font_funcs_set_glyph_h_advances_func | |
| +hb_font_funcs_set_glyph_v_advances_func | |
| +hb_font_get_glyph_advances_for_direction | |
| +hb_font_get_glyph_h_advances | |
| +hb_font_get_glyph_h_advances_func_t | |
| +hb_font_get_glyph_v_advances | |
| +hb_font_get_glyph_v_advances_func_t | |
| Overview of changes leading to 1.8.5 | |
| Wednesday, August 1, 2018 | |
| ==================================== | |
| - Major Khmer shaper improvements to better match Microsoft. | |
| - Indic bug fixes. | |
| - Internal improvements to atomic operations. | |
| Overview of changes leading to 1.8.4 | |
| Tuesday, July 17, 2018 | |
| ==================================== | |
| - Fix build on non-C++11. | |
| - Use C++-style GCC atomics and C++11 atomics. | |
| Overview of changes leading to 1.8.3 | |
| Wednesday, July 11, 2018 | |
| ==================================== | |
| - A couple of Indic / USE bug fixes. | |
| - Disable vectorization, as it was causing unaligned access bus error on | |
| certain 32bit architectures. | |
| Overview of changes leading to 1.8.2 | |
| Tuesday, July 3, 2018 | |
| ==================================== | |
| - Fix infinite loop in Khmer shaper. | |
| - Improve hb_blob_create_from_file() for streams. | |
| Overview of changes leading to 1.8.1 | |
| Tuesday, June 12, 2018 | |
| ==================================== | |
| - Fix hb-version.h file generation; last two releases went out with wrong ones. | |
| - Add correctness bug in hb_set_t operations, introduced in 1.7.7. | |
| - Remove HB_SUBSET_BUILTIN build option. Not necessary. | |
| Overview of changes leading to 1.8.0 | |
| Tuesday, June 5, 2018 | |
| ==================================== | |
| - Update to Unicode 11.0.0. | |
| Overview of changes leading to 1.7.7 | |
| Tuesday, June 5, 2018 | |
| ==================================== | |
| - Lots of internal changes, but not yet exposed externally. | |
| - All HarfBuzz objects are significantly smaller in size now. | |
| - Sinhala: Position repha on top of post-consonant, not base. | |
| This better matches Windows 10 behavior, which was changed | |
| from previous Windows versions. | |
| - New build options: | |
| o New cpp macro HB_NO_ATEXIT | |
| o New cpp macro HB_SUBSET_BUILTIN | |
| - Significant libharfbuzz-subset changes. API subject to change. | |
| - New API in libharfbuzz: | |
| +hb_blob_create_from_file() | |
| +hb_face_count() | |
| A hashmap implementation: | |
| +hb-map.h | |
| +HB_MAP_VALUE_INVALID | |
| +hb_map_t | |
| +hb_map_create() | |
| +hb_map_get_empty() | |
| +hb_map_reference() | |
| +hb_map_destroy() | |
| +hb_map_set_user_data() | |
| +hb_map_get_user_data() | |
| +hb_map_allocation_successful() | |
| +hb_map_clear() | |
| +hb_map_is_empty() | |
| +hb_map_get_population() | |
| +hb_map_set() | |
| +hb_map_get() | |
| +hb_map_del() | |
| +hb_map_has() | |
| Overview of changes leading to 1.7.6 | |
| Wednesday, March 7, 2018 | |
| ==================================== | |
| - Fix to hb_set_t binary operations. Ouch. | |
| - New experimental harfbuzz-subset library. All of hb-subset.h | |
| is experimental right now and API WILL change. | |
| - New API: | |
| +hb_blob_copy_writable_or_fail() | |
| +HB_OT_TAG_BASE | |
| +hb_set_previous() | |
| +hb_set_previous_range() | |
| Overview of changes leading to 1.7.5 | |
| Tuesday, January 30, 2018 | |
| ==================================== | |
| - Separate Khmer shaper from Indic. | |
| - First stab at AAT morx. Not hooked up. | |
| - Misc bug fixes. | |
| Overview of changes leading to 1.7.4 | |
| Wednesday, December 20, 2017 | |
| ==================================== | |
| - Fix collect_glyphs() regression caused by hb_set_t changes. | |
| Overview of changes leading to 1.7.3 | |
| Monday, December 18, 2017 | |
| ==================================== | |
| - hb_set_t performance tuning and optimizations. | |
| - Speed up collect_glyphs() and reject garbage data. | |
| - In hb_coretext_font_create() set font point-size (ptem). | |
| - Misc fixes. | |
| Overview of changes leading to 1.7.2 | |
| Monday, December 4, 2017 | |
| ==================================== | |
| - Optimize hb_set_add_range(). | |
| - Misc fixes. | |
| - New API: | |
| +hb_coretext_font_create() | |
| Overview of changes leading to 1.7.1 | |
| Tuesday, November 14, 2017 | |
| ==================================== | |
| - Fix atexit object destruction regression. | |
| - Fix minor integer-overflow. | |
| Overview of changes leading to 1.7.0 | |
| Monday, November 13, 2017 | |
| ==================================== | |
| - Minor Indic fixes. | |
| - Implement kerning and glyph names in hb-ot-font. | |
| - Various DSO optimization re .data and .bss sizes. | |
| - Make C++11 optional; build fixes. | |
| - Mark all other backends "unsafe-to-break". | |
| - Graphite fix. | |
| Overview of changes leading to 1.6.3 | |
| Thursday, October 26th, 2017 | |
| ==================================== | |
| - Fix hb_set_t some more. Should be solid now. | |
| - Implement get_glyph_name() for hb-ot-font. | |
| - Misc fixes. | |
| Overview of changes leading to 1.6.2 | |
| Monday, October 23nd, 2017 | |
| ==================================== | |
| - Yesterday's release had a bad crasher; don't use it. That's what | |
| happens when one works on Sunday... | |
| https://github.com/harfbuzz/harfbuzz/issues/578 | |
| - Build fixes for FreeBSD and Chrome Android. | |
| Overview of changes leading to 1.6.1 | |
| Sunday, October 22nd, 2017 | |
| ==================================== | |
| - Don't skip over COMBINING GRAPHEME JOINER when ligating, etc. | |
| To be refined: https://github.com/harfbuzz/harfbuzz/issues/554 | |
| - Faster hb_set_t implementation. | |
| - Don't use deprecated ICU API. | |
| - Fix undefined-behavior in Myanmar shaper, introduced in 1.6.0 | |
| - Deprecated API: | |
| -hb_set_invert() | |
| Overview of changes leading to 1.6.0 | |
| Friday, October the 13th, 2017 | |
| ==================================== | |
| - Update to Unicode 10. | |
| - Various Indic and Universal Shaping Engine fixes as a result of | |
| HarfBuzz Hackfest with Jonathan Kew at Web Engines Hackfest at | |
| the Igalia offices in A Coruña, Spain. Thanks Igalia for having | |
| us! | |
| - Implement Unicode Arabic Mark Ordering Algorithm UTR#53. | |
| - Implement optical sizing / tracking in CoreText backend, using | |
| new API hb_font_set_ptem(). | |
| - Allow notifying hb_font_t that underlying FT_Face changed sizing, | |
| using new API hb_ft_font_changed(). | |
| - More Graphite backend RTL fixes. | |
| - Fix caching of variable font shaping plans. | |
| - hb-view / hb-shape now accept following new arguments: | |
| o --unicodes: takes a list of hex numbers that represent Unicode | |
| codepoints. | |
| - New API: | |
| +hb_face_get_table_tags() | |
| +hb_font_set_ptem() | |
| +hb_font_get_ptem() | |
| +hb_ft_font_changed() | |
| Overview of changes leading to 1.5.1 | |
| Tuesday, September 5, 2017 | |
| ==================================== | |
| - Fix "unsafe-to-break" in fallback shaping and other corner cases. | |
| All our tests pass with --verify now, meaning unsafe-to-break API | |
| works as expected. | |
| - Add --unicodes to hb-view / hb-shape. | |
| - [indic] Treat Consonant_With_Stacker as consonant. This will need | |
| further tweaking. | |
| - hb_buffer_diff() tweaks. | |
| Overview of changes leading to 1.5.0 | |
| Wednesday, August 23, 2017 | |
| ==================================== | |
| - Misc new API, for appending a buffer to another, and for comparing | |
| contents of two buffers for types of differences. | |
| - New "unsafe-to-break" API. Can be used to speed up reshaping | |
| in line-breaking situations. Essentially, after shaping, it returns | |
| positions in the input string (some of the cluster boundaries) that | |
| are "safe to break" in that if the text is segmented at that position | |
| and two sides reshaped and concatenated, the shaping result is | |
| exactly the same as shaping the text in one piece. | |
| hb-view and hb-shape and hb-shape now take --verify, which verifies | |
| the above property. | |
| Some corner cases of the implementation are still not quite working. | |
| Those will be fixed in subsequent releases. | |
| - New API: | |
| +hb_buffer_append() | |
| +hb_glyph_flags_t | |
| +HB_GLYPH_FLAG_UNSAFE_TO_BREAK | |
| +HB_GLYPH_FLAG_DEFINED | |
| +hb_glyph_info_get_glyph_flags() | |
| +HB_BUFFER_SERIALIZE_FLAG_GLYPH_FLAGS | |
| +hb_buffer_diff_flags_t | |
| +HB_BUFFER_DIFF_FLAG_EQUAL | |
| +HB_BUFFER_DIFF_FLAG_CONTENT_TYPE_MISMATCH | |
| +HB_BUFFER_DIFF_FLAG_LENGTH_MISMATCH | |
| +HB_BUFFER_DIFF_FLAG_NOTDEF_PRESENT | |
| +HB_BUFFER_DIFF_FLAG_DOTTED_CIRCLE_PRESENT | |
| +HB_BUFFER_DIFF_FLAG_CODEPOINT_MISMATCH | |
| +HB_BUFFER_DIFF_FLAG_CLUSTER_MISMATCH | |
| +HB_BUFFER_DIFF_FLAG_GLYPH_FLAGS_MISMATCH | |
| +HB_BUFFER_DIFF_FLAG_POSITION_MISMATCH | |
| +hb_buffer_diff | |
| Overview of changes leading to 1.4.8 | |
| Tuesday, August 8, 2017 | |
| ==================================== | |
| - Major fix to avar table handling. | |
| - Rename hb-shape --show-message to --trace. | |
| - Build fixes. | |
| Overview of changes leading to 1.4.7 | |
| Tuesday, July 18, 2017 | |
| ==================================== | |
| - Multiple Indic, Tibetan, and Cham fixes. | |
| - CoreText: Allow disabling kerning. | |
| - Adjust Arabic feature order again. | |
| - Misc build fixes. | |
| Overview of changes leading to 1.4.6 | |
| Sunday, April 23, 2017 | |
| ==================================== | |
| - Graphite2: Fix RTL positioning issue. | |
| - Backlist GDEF of more versions of Padauk and Tahoma. | |
| - New, experimental, cmake alternative build system. | |
| Overview of changes leading to 1.4.5 | |
| Friday, March 10, 2017 | |
| ==================================== | |
| - Revert "Fix Context lookup application when moving back after a glyph..." | |
| This introduced memory access problems. To be fixed properly soon. | |
| Overview of changes leading to 1.4.4 | |
| Sunday, March 5, 2017 | |
| ==================================== | |
| - Fix Context lookup application when moving back after a glyph deletion. | |
| - Fix buffer-overrun in Bengali. | |
| Overview of changes leading to 1.4.3 | |
| Saturday, February 25, 2017 | |
| ==================================== | |
| - Route Adlam script to Arabic shaper. | |
| - Misc fixes. | |
| - New API: | |
| +hb_font_set_face() | |
| - Deprecate API: | |
| -hb_graphite2_font_get_gr_font() | |
| Overview of changes leading to 1.4.2 | |
| Monday, January 23, 2017 | |
| ==================================== | |
| - Implement OpenType Font Variation tables avar/fvar/HVAR/VVAR. | |
| - hb-shape and hb-view now accept --variations. | |
| - New API: | |
| +hb_variation_t | |
| +hb_variation_from_string() | |
| +hb_variation_to_string() | |
| +hb_font_set_variations() | |
| +hb_font_set_var_coords_design() | |
| +hb_font_get_var_coords_normalized() | |
| +hb-ot-var.h: | |
| +hb_ot_var_axis_t | |
| +hb_ot_var_has_data() | |
| +hb_ot_var_get_axis_count() | |
| +hb_ot_var_get_axes() | |
| +hb_ot_var_find_axis() | |
| +hb_ot_var_normalize_variations() | |
| +hb_ot_var_normalize_coords() | |
| - MVAR to be implemented later. Access to named instances to be | |
| implemented later as well. | |
| - Misc fixes. | |
| Overview of changes leading to 1.4.1 | |
| Thursday, January 5, 2017 | |
| ==================================== | |
| - Always build and use UCDN for Unicode data by default. | |
| Reduces dependence on version of Unicode data in glib, | |
| specially in the Windows bundles we are shipping, which | |
| have very old glib. | |
| Overview of changes leading to 1.4.0 | |
| Thursday, January 5, 2017 | |
| ==================================== | |
| - Merged "OpenType GX" branch which adds core of support for | |
| OpenType 1.8 Font Variations. To that extent, the relevant | |
| new API is: | |
| - New API: | |
| +hb_font_set_var_coords_normalized() | |
| with supporting API: | |
| - New API: | |
| +HB_OT_LAYOUT_NO_VARIATIONS_INDEX | |
| +hb_ot_layout_table_find_feature_variations() | |
| +hb_ot_layout_feature_with_variations_get_lookups() | |
| +hb_shape_plan_create2() | |
| +hb_shape_plan_create_cached2() | |
| Currently variations in GSUB/GPOS/GDEF are fully supported, | |
| and no other tables are supported. In particular, fvar/avar | |
| are NOT supported, hence the hb_font_set_var_coords_normalized() | |
| taking normalized coordinates. API to take design coordinates | |
| will be added in the future. | |
| HVAR/VVAR/MVAR support will also be added to hb-ot-font in the | |
| future. | |
| - Fix regression in GDEF glyph class processing. | |
| - Add decompositions for Chakma, Limbu, and Balinese in USE shaper. | |
| - Misc fixes. | |
| Overview of changes leading to 1.3.4 | |
| Monday, December 5, 2016 | |
| ==================================== | |
| - Fix vertical glyph origin in hb-ot-font. | |
| - Implement CBDT/CBLC color font glyph extents in hb-ot-font. | |
| Overview of changes leading to 1.3.3 | |
| Wednesday, September 28, 2016 | |
| ==================================== | |
| - Implement parsing of OpenType MATH table. | |
| - New API: | |
| +HB_OT_TAG_MATH | |
| +HB_OT_MATH_SCRIPT | |
| +hb_ot_math_constant_t | |
| +hb_ot_math_kern_t | |
| +hb_ot_math_glyph_variant_t | |
| +hb_ot_math_glyph_part_flags_t | |
| +hb_ot_math_glyph_part_t | |
| +hb_ot_math_has_data() | |
| +hb_ot_math_get_constant() | |
| +hb_ot_math_get_glyph_italics_correction() | |
| +hb_ot_math_get_glyph_top_accent_attachment() | |
| +hb_ot_math_get_glyph_kerning() | |
| +hb_ot_math_is_glyph_extended_shape() | |
| +hb_ot_math_get_glyph_variants() | |
| +hb_ot_math_get_min_connector_overlap() | |
| +hb_ot_math_get_glyph_assembly() | |
| Overview of changes leading to 1.3.2 | |
| Wednesday, September 27, 2016 | |
| ==================================== | |
| - Fix build of hb-coretext on older OS X versions. | |
| Overview of changes leading to 1.3.1 | |
| Wednesday, September 7, 2016 | |
| ==================================== | |
| - Blacklist bad GDEF of more fonts (Padauk). | |
| - More CoreText backend crash fixes with OS X 10.9.5. | |
| - Misc fixes. | |
| Overview of changes leading to 1.3.0 | |
| Thursday, July 21, 2016 | |
| ==================================== | |
| - Update to Unicode 9.0.0 | |
| - Move Javanese from Indic shaper to Universal Shaping Engine. | |
| - Allow MultipleSubst to delete a glyph (matching Windows engine). | |
| - Update Universal Shaping Engine to latest draft from Microsoft. | |
| - DirectWrite backend improvements. Note: this backend is for testing ONLY. | |
| - CoreText backend improvements with unreachable fonts. | |
| - Implement symbol fonts (cmap 3.0.0) in hb-ft and hb-ot-font. | |
| - Blacklist bad GDEF of more fonts (Tahoma & others). | |
| - Misc fixes. | |
| Overview of changes leading to 1.2.7 | |
| Monday, May 2, 2016 | |
| ==================================== | |
| - Blacklist another version of Times New Roman (Bold) Italic from Windows 7. | |
| - Fix Mongolian Free Variation Selectors shaping with certain fonts. | |
| - Fix Tibetan shorthand contractions shaping. | |
| - Improved list of language tag mappings. | |
| - Unbreak build on Windows CE. | |
| - Make 'glyf' table loading lazy in hb-ot-font. | |
| Overview of changes leading to 1.2.6 | |
| Friday, April 8, 2016 | |
| ==================================== | |
| - Blacklist GDEF table of another set of Times New Roman (Bold) Italic. | |
| - DirectWrite backend improvements. Note: DirectWrite backend is | |
| exclusively for our internal testing and should NOT be used in any | |
| production system whatsoever. | |
| Overview of changes leading to 1.2.5 | |
| Monday, April 4, 2016 | |
| ==================================== | |
| - Fix GDEF mark-filtering-set, which was broken in 1.2.3. | |
| Overview of changes leading to 1.2.4 | |
| Thursday, March 17, 2016 | |
| ==================================== | |
| - Synthesize GDEF glyph class for any glyph that does not have one in GDEF. | |
| I really hope we don't discover broken fonts that shape badly with this | |
| change. | |
| - Misc build and other minor fixes. | |
| - API changes: | |
| - Added HB_NDEBUG. It's fine for production systems to define this to | |
| disable high-overhead debugging checks. However, I also reduced the | |
| overhead of those checks, so it's a non-issue right now. You can | |
| forget it. Just not defining anything at all is fine. | |
| Overview of changes leading to 1.2.3 | |
| Thursday, February 25, 2016 | |
| ==================================== | |
| - Blacklist GDEF table of certain versions of Times New Roman (Bold) Italic, | |
| due to bug in glyph class of ASCII double-quote character. This should | |
| address "regression" introduced in 1.2.0 when we switched mark zeroing | |
| in most shapers from BY_UNICODE_LATE to BY_GDEF_LATE. | |
| This fourth release in a week should finally stabilize things... | |
| - hb-ot-font's get_glyph() implementation saw some optimizations. Though, | |
| might be really hard to measure in real-world situations. | |
| - Also, two rather small API changes: | |
| We now disable some time-consuming internal bookkeeping if built with NDEBUG | |
| defined. This is a first time that we use NDEBUG to disable debug code. If | |
| there exist production systems that do NOT want to enable NDEBUG, please let | |
| me know and I'll add HB_NDEBUG. | |
| Added get_nominal_glyph() and get_variation_glyph() instead of get_glyph() | |
| - New API: | |
| +hb_font_get_nominal_glyph_func_t | |
| +hb_font_get_variation_glyph_func_t | |
| +hb_font_funcs_set_nominal_glyph_func() | |
| +hb_font_funcs_set_variation_glyph_func() | |
| +hb_font_get_nominal_glyph() | |
| +hb_font_get_variation_glyph() | |
| - Deprecated API: | |
| -hb_font_get_glyph_func_t | |
| -hb_font_funcs_set_glyph_func() | |
| Clients that implement their own font-funcs are encouraged to replace | |
| their get_glyph() implementation with a get_nominal_glyph() and | |
| get_variation_glyph() pair. The variation version can assume that | |
| variation_selector argument is not zero. Old (deprecated) functions | |
| will continue working indefinitely using internal gymnastics; it is | |
| just more efficient to use the new functions. | |
| Overview of changes leading to 1.2.2 | |
| Wednesday, February 24, 2016 | |
| ==================================== | |
| - Fix regression with mark positioning with fonts that have | |
| non-zero mark advances. This was introduced in 1.2.0 while | |
| trying to make mark and cursive attachments to work together. | |
| I have partially reverted that, so this version is much more | |
| like what we had before. All clients who updated to 1.2.0 | |
| should update to this version. | |
| Overview of changes leading to 1.2.1 | |
| Tuesday, February 23, 2016 | |
| ==================================== | |
| - CoreText: Fix bug with wrong scale if font scale was changed later. | |
| https://github.com/libass/libass/issues/212 | |
| - CoreText: Drastically speed up font initialization. | |
| - CoreText: Fix tiny leak. | |
| - Group ZWJ/ZWNJ with previous syllable under cluster-level=0. | |
| https://github.com/harfbuzz/harfbuzz/issues/217 | |
| - Add test/shaping/README.md about how to add tests to the suite. | |
| Overview of changes leading to 1.2.0 | |
| Friday, February 19, 2016 | |
| ==================================== | |
| - Fix various issues (hangs mostly) in case of memory allocation failure. | |
| - Change mark zeroing types of most shapers from BY_UNICODE_LATE to | |
| BY_GDEF_LATE. This seems to be what Uniscribe does. | |
| - Change mark zeroing of USE shaper from NONE to BY_GDEF_EARLY. That's | |
| what Windows does. | |
| - Allow GPOS cursive connection on marks, and fix the interaction with | |
| mark attachment. This work resulted in some changes to how mark | |
| attachments work. See: | |
| https://github.com/harfbuzz/harfbuzz/issues/211 | |
| https://github.com/harfbuzz/harfbuzz/commit/86c68c7a2c971efe8e35b1f1bd99401dc8b688d2 | |
| - Graphite2 shaper: improved negative advance handling (eg. Nastaliq). | |
| - Add nmake-based build system for Windows. | |
| - Minor speedup. | |
| - Misc. improvements. | |
| Overview of changes leading to 1.1.3 | |
| Monday, January 11, 2016 | |
| ==================================== | |
| - Ported Indic shaper to Unicode 8.0 data. | |
| - Universal Shaping Engine fixes. | |
| - Speed up CoreText shaper when font fallback happens in CoreText. | |
| - Documentation improvements, thanks to Khaled Hosny. | |
| - Very rough directwrite shaper for testing, thanks to Ebrahim Byagowi. | |
| - Misc bug fixes. | |
| - New API: | |
| * Font extents: | |
| hb_font_extents_t | |
| hb_font_get_font_extents_func_t | |
| hb_font_get_font_h_extents_func_t | |
| hb_font_get_font_v_extents_func_t | |
| hb_font_funcs_set_font_h_extents_func | |
| hb_font_funcs_set_font_v_extents_func | |
| hb_font_get_h_extents | |
| hb_font_get_v_extents | |
| hb_font_get_extents_for_direction | |
| * Buffer message (aka debug): | |
| hb_buffer_message_func_t | |
| hb_buffer_set_message_func() | |
| Actual message protocol to be fleshed out later. | |
| Overview of changes leading to 1.1.2 | |
| Wednesday, November 26, 2015 | |
| ==================================== | |
| - Fix badly-broken fallback shaper that affected terminology. | |
| https://github.com/harfbuzz/harfbuzz/issues/187 | |
| - Fix y_scaling in Graphite shaper. | |
| - API changes: | |
| * An unset glyph_h_origin() function in font-funcs now (sensibly) | |
| implies horizontal origin at 0,0. Ie, the nil callback returns | |
| true instead of false. As such, implementations that have a | |
| glyph_h_origin() that simply returns true, can remove that function | |
| with HarfBuzz >= 1.1.2. This results in a tiny speedup. | |
| Overview of changes leading to 1.1.1 | |
| Wednesday, November 24, 2015 | |
| ==================================== | |
| - Build fixes, specially for hb-coretext. | |
| Overview of changes leading to 1.1.0 | |
| Wednesday, November 18, 2015 | |
| ==================================== | |
| - Implement 'stch' stretch feature for Syriac Abbreviation Mark. | |
| https://github.com/harfbuzz/harfbuzz/issues/141 | |
| - Disable use of decompose_compatibility() callback. | |
| - Implement "shaping" of various Unicode space characters, even | |
| if the font does not support them. | |
| https://github.com/harfbuzz/harfbuzz/issues/153 | |
| - If font does not support U+2011 NO-BREAK HYPHEN, fallback to | |
| U+2010 HYPHEN. | |
| - Changes resulting from libFuzzer continuous fuzzing: | |
| * Reject font tables that need more than 8 edits, | |
| * Bound buffer growth during shaping to 32x, | |
| * Fix assertions and other issues at OOM / buffer max-growth. | |
| - Misc fixes and optimizations. | |
| - API changes: | |
| * All fonts created with hb_font_create() now inherit from | |
| (ie. have parent) hb_font_get_empty(). | |
| Overview of changes leading to 1.0.6 | |
| Thursday, October 15, 2015 | |
| ==================================== | |
| - Reduce max nesting level in OT lookups from 8 to 6. | |
| Should not affect any real font as far as I know. | |
| - Fix memory access issue in ot-font. | |
| - Revert default load-flags of fonts created using hb_ft_font_create() | |
| back to FT_LOAD_DEFAULT|FT_LOAD_NO_HINTING. This was changed in | |
| last release (1.0.5), but caused major issues, so revert. | |
| https://github.com/harfbuzz/harfbuzz/issues/143 | |
| Overview of changes leading to 1.0.5 | |
| Tuesday, October 13, 2015 | |
| ==================================== | |
| - Fix multiple memory access bugs discovered using libFuzzer. | |
| https://github.com/harfbuzz/harfbuzz/issues/139 | |
| Everyone should upgrade to this version as soon as possible. | |
| We now have continuous fuzzing set up, to avoid issues like | |
| these creeping in again. | |
| - Misc fixes. | |
| - New API: | |
| * hb_font_set_parent(). | |
| * hb_ft_font_[sg]et_load_flags() | |
| The default flags for fonts created using hb_ft_font_create() | |
| has changed to default to FT_LOAD_DEFAULT now. Previously it | |
| was defaulting to FT_LOAD_DFEAULT|FT_LOAD_NO_HINTING. | |
| - API changes: | |
| * Fonts now default to units-per-EM as their scale, instead of 0. | |
| * hb_font_create_sub_font() does NOT make parent font immutable | |
| anymore. hb_font_make_immutable() does. | |
| Overview of changes leading to 1.0.4 | |
| Wednesday, September 30, 2015 | |
| ==================================== | |
| - Fix minor out-of-bounds read error. | |
| Overview of changes leading to 1.0.3 | |
| Tuesday, September 1, 2015 | |
| ==================================== | |
| - Start of user documentation, from Simon Cozens! | |
| - Implement glyph_extents() for TrueType fonts in hb-ot-font. | |
| - Improve GPOS cursive attachments with conflicting lookups. | |
| - More fixes for cluster-level = 1. | |
| - Uniscribe positioning fix. | |
| Overview of changes leading to 1.0.2 | |
| Wednesday, August 19, 2015 | |
| ==================================== | |
| - Fix shaping with cluster-level > 0. | |
| - Fix Uniscribe backend font-size scaling. | |
| - Declare dependencies in harfbuzz.pc. | |
| FreeType is not declared though, to avoid bugs in pkg-config | |
| 0.26 with recursive dependencies. | |
| - Slightly improved debug infrastructure. More to come later. | |
| - Misc build fixes. | |
| Overview of changes leading to 1.0.1 | |
| Monday, July 27, 2015 | |
| ==================================== | |
| - Fix out-of-bounds access in USE shaper. | |
| Overview of changes leading to 1.0.0 | |
| Sunday, July 26, 2015 | |
| ==================================== | |
| - Implement Universal Shaping Engine: | |
| https://www.microsoft.com/typography/OpenTypeDev/USE/intro.htm | |
| http://blogs.windows.com/bloggingwindows/2015/02/23/windows-shapes-the-worlds-languages/ | |
| - Bump version to 1.0.0. The soname was NOT bumped. | |
| Overview of changes leading to 0.9.42 | |
| Thursday, July 26, 2015 | |
| ===================================== | |
| - New API to allow for retrieving finer-grained cluster | |
| mappings if the client desires to handle them. Default | |
| behavior is unchanged. | |
| - Fix cluster merging when removing default-ignorables. | |
| - Update to Unicode 8.0 | |
| - hb-graphite2 fixes. | |
| - Misc fixes. | |
| - Removed HB_NO_MERGE_CLUSTERS hack. | |
| - New API: | |
| hb_buffer_cluster_level_t enum | |
| hb_buffer_get_cluster_level() | |
| hb_buffer_set_cluster_level() | |
| hb-shape / hb-view --cluster-level | |
| Overview of changes leading to 0.9.41 | |
| Thursday, June 18, 2015 | |
| ===================================== | |
| - Fix hb-coretext with trailing whitespace in right-to-left. | |
| - New API: hb_buffer_reverse_range(). | |
| - Allow implementing atomic ops in config.h. | |
| - Fix hb_language_t in language bindings. | |
| - Misc fixes. | |
| Overview of changes leading to 0.9.40 | |
| Friday, March 20, 2015 | |
| ===================================== | |
| - Another hb-coretext crasher fix. Ouch! | |
| - Happy Norouz! | |
| Overview of changes leading to 0.9.39 | |
| Wednesday, March 4, 2015 | |
| ===================================== | |
| - Critical hb-coretext fixes. | |
| - Optimizations and refactoring; no functional change | |
| expected. | |
| - Misc build fixes. | |
| Overview of changes leading to 0.9.38 | |
| Friday, January 23, 2015 | |
| ===================================== | |
| - Fix minor out-of-bounds access in Indic shaper. | |
| - Change New Tai Lue shaping engine from South-East Asian to default, | |
| reflecting change in Unicode encoding model. | |
| - Add hb-shape --font-size. Can take up to two numbers for separate | |
| x / y size. | |
| - Fix CoreText and FreeType scale issues with negative scales. | |
| - Reject blobs larger than 2GB. This might break some icu-le-hb clients | |
| that need security fixes. See: | |
| http://www.icu-project.org/trac/ticket/11450 | |
| - Avoid accessing font tables during face destruction, in casce rogue | |
| clients released face data already. | |
| - Fix up gobject-introspection a bit. Python bindings kinda working. | |
| See README.python. | |
| - Misc fixes. | |
| - API additions: | |
| hb_ft_face_create_referenced() | |
| hb_ft_font_create_referenced() | |
| Overview of changes leading to 0.9.37 | |
| Wednesday, December 17, 2014 | |
| ===================================== | |
| - Fix out-of-bounds access in Context lookup format 3. | |
| - Indic: Allow ZWJ/ZWNJ before syllable modifiers. | |
| Overview of changes leading to 0.9.36 | |
| Thursday, November 20, 2014 | |
| ===================================== | |
| - First time that three months went by without a release since | |
| 0.9.2 was released on August 10, 2012! | |
| - Fix performance bug in hb_ot_collect_glyphs(): | |
| https://bugzilla.mozilla.org/show_bug.cgi?id=1090869 | |
| - Add basic vertical-text support to hb-ot-font. | |
| - Misc build fixes. | |
| Overview of changes leading to 0.9.35 | |
| Saturday, August 13, 2014 | |
| ===================================== | |
| - Fix major shape-plan caching bug when more than one shaper were | |
| provided to hb_shape_full() (as exercised by XeTeX). | |
| http://www.mail-archive.com/debian-bugs-dist@lists.debian.org/msg1246370.html | |
| - Fix Arabic fallback shaping regression. This was broken in 0.9.32. | |
| - Major hb-coretext fixes. That backend is complete now, including | |
| respecing buffer direction and language, down to vertical writing. | |
| - Build fixes for Windows CE. Should build fine now. | |
| - Misc fixes: | |
| Use atexit() only if it's safe to call from shared library | |
| https://bugs.freedesktop.org/show_bug.cgi?id=82246 | |
| Mandaic had errors in its Unicode Joining_Type | |
| https://bugs.freedesktop.org/show_bug.cgi?id=82306 | |
| - API changes: | |
| * hb_buffer_clear_contents() does not reset buffer flags now. | |
| After 763e5466c0a03a7c27020e1e2598e488612529a7, one doesn't | |
| need to set flags for different pieces of text. The flags now | |
| are something the client sets up once, depending on how it | |
| actually uses the buffer. As such, don't clear it in | |
| clear_contents(). | |
| I don't expect any changes to be needed to any existing client. | |
| Overview of changes leading to 0.9.34 | |
| Saturday, August 2, 2014 | |
| ===================================== | |
| - hb_feature_from_string() now accepts CSS font-feature-settings format. | |
| - As a result, hb-shape / hb-view --features also accept CSS-style strings. | |
| Eg, "'liga' off" is accepted now. | |
| - Add old-spec Myanmar shaper: | |
| https://bugs.freedesktop.org/show_bug.cgi?id=81775 | |
| - Don't apply 'calt' in Hangul shaper. | |
| - Fix mark advance zeroing for Hebrew shaper: | |
| https://bugs.freedesktop.org/show_bug.cgi?id=76767 | |
| - Implement Windows-1256 custom Arabic shaping. Only built on Windows, | |
| and requires help from get_glyph(). Used by Firefox. | |
| https://bugzilla.mozilla.org/show_bug.cgi?id=1045139 | |
| - Disable 'liga' in vertical text. | |
| - Build fixes. | |
| - API changes: | |
| * Make HB_BUFFER_FLAG_BOT/EOT easier to use. | |
| Previously, we expected users to provide BOT/EOT flags when the | |
| text *segment* was at paragraph boundaries. This meant that for | |
| clients that provide full paragraph to HarfBuzz (eg. Pango), they | |
| had code like this: | |
| hb_buffer_set_flags (hb_buffer, | |
| (item_offset == 0 ? HB_BUFFER_FLAG_BOT : 0) | | |
| (item_offset + item_length == paragraph_length ? | |
| HB_BUFFER_FLAG_EOT : 0)); | |
| hb_buffer_add_utf8 (hb_buffer, | |
| paragraph_text, paragraph_length, | |
| item_offset, item_length); | |
| After this change such clients can simply say: | |
| hb_buffer_set_flags (hb_buffer, | |
| HB_BUFFER_FLAG_BOT | HB_BUFFER_FLAG_EOT); | |
| hb_buffer_add_utf8 (hb_buffer, | |
| paragraph_text, paragraph_length, | |
| item_offset, item_length); | |
| Ie, HarfBuzz itself checks whether the segment is at the beginning/end | |
| of the paragraph. Clients that only pass item-at-a-time to HarfBuzz | |
| continue not setting any flags whatsoever. | |
| Another way to put it is: if there's pre-context text in the buffer, | |
| HarfBuzz ignores the BOT flag. If there's post-context, it ignores | |
| EOT flag. | |
| Overview of changes leading to 0.9.33 | |
| Tuesday, July 22, 2014 | |
| ===================================== | |
| - Turn off ARabic 'cswh' feature that was accidentally turned on. | |
| - Add HB_TAG_MAX_SIGNED. | |
| - Make hb_face_make_immutable() really make face immutable! | |
| - Windows build fixes. | |
| Overview of changes leading to 0.9.32 | |
| Thursday, July 17, 2014 | |
| ===================================== | |
| - Apply Arabic shaping features in spec order exactly. | |
| - Another fix for Mongolian free variation selectors. | |
| - For non-Arabic scripts in Arabic shaper apply 'rlig' and 'calt' | |
| together. | |
| - Minor adjustment to U+FFFD logic. | |
| - Fix hb-coretext build. | |
| Overview of changes leading to 0.9.31 | |
| Wednesday, July 16, 2014 | |
| ===================================== | |
| - Only accept valid UTF-8/16/32; we missed many cases before. | |
| - Better shaping of invalid UTF-8/16/32. Falls back to | |
| U+FFFD REPLACEMENT CHARACTER now. | |
| - With all changes in this release, the buffer will contain fully | |
| valid Unicode after hb_buffer_add_utf8/16/32 no matter how | |
| broken the input is. This can be overridden though. See below. | |
| - Fix Mongolian Variation Selectors for fonts without GDEF. | |
| - Fix minor invalid buffer access. | |
| - Accept zh-Hant and zh-Hans language tags. hb_ot_tag_to_language() | |
| now uses these instead of private tags. | |
| - Build fixes. | |
| - New API: | |
| * hb_buffer_add_codepoints(). This does what hb_buffer_add_utf32() | |
| used to do, ie. no validity check on the input at all. add_utf32 | |
| now replaces invalid Unicode codepoints with the replacement | |
| character (see below). | |
| * hb_buffer_set_replacement_codepoint() | |
| * hb_buffer_get_replacement_codepoint() | |
| Previously, in hb_buffer_add_utf8 and hb_buffer_add_utf16, when | |
| we detected broken input, we replaced that with (hb_codepoint_t)-1. | |
| This has changed to use U+FFFD now, but can be changed using these | |
| new API. | |
| Overview of changes leading to 0.9.30 | |
| Wednesday, July 9, 2014 | |
| ===================================== | |
| - Update to Unicode 7.0.0: | |
| * New scripts Manichaean and Psalter Pahlavi are shaped using | |
| Arabic shaper. | |
| * All the other new scripts to through the generic shaper for | |
| now. | |
| - Minor Indic improvements. | |
| - Fix graphite2 backend cluster mapping [crasher!] | |
| - API changes: | |
| * New HB_SCRIPT_* values for Unicode 7.0 scripts. | |
| * New function hb_ot_layout_language_get_required_feature(). | |
| - Build fixes. | |
| Overview of changes leading to 0.9.29 | |
| Thursday, May 29, 2014 | |
| ===================================== | |
| - Implement cmap in hb-ot-font.h. No variation-selectors yet. | |
| - Myanmar: Allow MedialYa+Asat. | |
| - Various Indic fixes: | |
| * Support most characters in Extended Devanagary and Vedic | |
| Unicode blocks. | |
| * Allow digits and a some punctuation as consonant placeholders. | |
| - Build fixes. | |
| Overview of changes leading to 0.9.28 | |
| Monday, April 28, 2014 | |
| ===================================== | |
| - Unbreak old-spec Indic shaping. (bug 76705) | |
| - Fix shaping of U+17DD and U+0FC6. | |
| - Add HB_NO_MERGE_CLUSTERS build option. NOT to be enabled by default | |
| for shipping libraries. It's an option for further experimentation | |
| right now. When we are sure how to do it properly, we will add | |
| public run-time API for the functionality. | |
| - Build fixes. | |
| Overview of changes leading to 0.9.27 | |
| Tuesday, March 18, 2014 | |
| ===================================== | |
| - Don't use "register" storage class specifier | |
| - Wrap definition of free_langs() with HAVE_ATEXIT | |
| - Add coretext_aat shaper and hb_coretext_face_create() constructor | |
| - If HAVE_ICU_BUILTIN is defined, use hb-icu Unicode callbacks | |
| - Add Myanmar test case from OpenType Myanmar spec | |
| - Only do fallback Hebrew composition if no GPOS 'mark' available | |
| - Allow bootstrapping without gtk-doc | |
| - Use AM_MISSING_PROG for ragel and git | |
| - Typo in ucdn's Makefile.am | |
| - Improve MemoryBarrier() implementation | |
| Overview of changes leading to 0.9.26 | |
| Thursday, January 30, 2014 | |
| ===================================== | |
| - Misc fixes. | |
| - Fix application of 'rtlm' feature. | |
| - Automatically apply frac/numr/dnom around U+2044 FRACTION SLASH. | |
| - New header: hb-ot-shape.h | |
| - Uniscribe: fix scratch-buffer accounting. | |
| - Reorder Tai Tham SAKOT to after tone-marks. | |
| - Add Hangul shaper. | |
| - New files: | |
| hb-ot-shape-complex-hangul.cc | |
| hb-ot-shape-complex-hebrew.cc | |
| hb-ot-shape-complex-tibetan.cc | |
| - Disable 'cswh' feature in Arabic shaper. | |
| - Coretext: better handle surrogate pairs. | |
| - Add HB_TAG_MAX and _HB_SCRIPT_MAX_VALUE. | |
| Overview of changes leading to 0.9.25 | |
| Wednesday, December 4, 2013 | |
| ===================================== | |
| - Myanmar shaper improvements. | |
| - Avoid font fallback in CoreText backend. | |
| - Additional OpenType language tag mappiongs. | |
| - More aggressive shape-plan caching. | |
| - Build with / require automake 1.13. | |
| - Build with libtool 2.4.2.418 alpha to support ppc64le. | |
| Overview of changes leading to 0.9.24 | |
| Tuesday, November 13, 2013 | |
| ===================================== | |
| - Misc compiler warning fixes with clang. | |
| - No functional changes. | |
| Overview of changes leading to 0.9.23 | |
| Monday, October 28, 2013 | |
| ===================================== | |
| - "Udupi HarfBuzz Hackfest", Paris, October 14..18 2013. | |
| - Fix (Chain)Context recursion with non-monotone lookup positions. | |
| - Misc Indic bug fixes. | |
| - New Javanese / Buginese shaping, similar to Windows 8.1. | |
| Overview of changes leading to 0.9.22 | |
| Thursday, October 3, 2013 | |
| ===================================== | |
| - Fix use-after-end-of-scope in hb_language_from_string(). | |
| - Fix hiding of default_ignorables if font doesn't have space glyph. | |
| - Protect against out-of-range lookup indices. | |
| - API Changes: | |
| * Added hb_ot_layout_table_get_lookup_count() | |
| Overview of changes leading to 0.9.21 | |
| Monday, September 16, 2013 | |
| ===================================== | |
| - Rename gobject-introspection library name from harfbuzz to HarfBuzz. | |
| - Remove (long disabled) hb-old and hb-icu-le test shapers. | |
| - Misc gtk-doc and gobject-introspection annotations. | |
| - Misc fixes. | |
| - API changes: | |
| * Add HB_SET_VALUE_INVALID | |
| Overview of changes leading to 0.9.20 | |
| Thursday, August 29, 2013 | |
| ===================================== | |
| General: | |
| - Misc substitute_closure() fixes. | |
| - Build fixes. | |
| Documentation: | |
| - gtk-doc boilerplate integrated. Docs are built now, but | |
| contain no contents. By next release hopefully we have | |
| some content in. Enable using --enable-gtk-doc. | |
| GObject and Introspection: | |
| - Added harfbuzz-gobject library (hb-gobject.h) that has type | |
| bindings for all HarfBuzz objects and enums. Enable using | |
| --with-gobject. | |
| - Added gobject-introspection boilerplate. Nothing useful | |
| right now. Work in progress. Gets enabled automatically if | |
| --with-gobject is used. Override with --disable-introspection. | |
| OpenType shaper: | |
| - Apply 'mark' in Myanmar shaper. | |
| - Don't apply 'dlig' by default. | |
| Uniscribe shaper: | |
| - Support user features. | |
| - Fix loading of fonts that are also installed on the system. | |
| - Fix shaping of Arabic Presentation Forms. | |
| - Fix build with wide chars. | |
| CoreText shaper: | |
| - Support user features. | |
| Source changes: | |
| - hb_face_t code moved to hb-face.h / hb-face.cc. | |
| - Added hb-deprecated.h. | |
| API changes: | |
| - Added HB_DISABLE_DEPRECATED. | |
| - Deprecated HB_SCRIPT_CANADIAN_ABORIGINAL; replaced by | |
| HB_SCRIPT_CANADIAN_SYLLABICS. | |
| - Deprecated HB_BUFFER_FLAGS_DEFAULT; replaced by | |
| HB_BUFFER_FLAG_DEFAULT. | |
| - Deprecated HB_BUFFER_SERIALIZE_FLAGS_DEFAULT; replaced by | |
| HB_BUFFER_SERIALIZE_FLAG_DEFAULT. | |
| Overview of changes leading to 0.9.19 | |
| Tuesday, July 16, 2013 | |
| ===================================== | |
| - Build fixes. | |
| - Better handling of multiple variation selectors in a row. | |
| - Pass on variation selector to GSUB if not consumed by cmap. | |
| - Fix undefined memory access. | |
| - Add Javanese config to Indic shaper. | |
| - Misc bug fixes. | |
| Overview of changes leading to 0.9.18 | |
| Tuesday, May 28, 2013 | |
| ===================================== | |
| New build system: | |
| - All unneeded code is all disabled by default, | |
| - Uniscribe and CoreText shapers can be enabled with their --with options, | |
| - icu_le and old shapers cannot be enabled for now, | |
| - glib, freetype, and cairo will be detected automatically. | |
| They can be force on/off'ed with their --with options, | |
| - icu and graphite2 are default off, can be enabled with their --with | |
| options, | |
| Moreover, ICU support is now build into a separate library: | |
| libharfbuzz-icu.so, and a new harfbuzz-icu.pc is shipped for it. | |
| Distros can enable ICU now without every application on earth | |
| getting linked to via libharfbuzz.so. | |
| For distros I recommend that they make sure they are building --with-glib | |
| --with-freetype --with-cairo, --with-icu, and optionally --with-graphite2; | |
| And package harfbuzz and harfbuzz-icu separately. | |
| Overview of changes leading to 0.9.17 | |
| Monday, May 20, 2013 | |
| ===================================== | |
| - Build fixes. | |
| - Fix bug in hb_set_get_min(). | |
| - Fix regression with Arabic mark positioning / width-zeroing. | |
| Overview of changes leading to 0.9.16 | |
| Friday, April 19, 2013 | |
| ===================================== | |
| - Major speedup in OpenType lookup processing. With the Amiri | |
| Arabic font, this release is over 3x faster than previous | |
| release. All scripts / languages should see this speedup. | |
| - New --num-iterations option for hb-shape / hb-view; useful for | |
| profiling. | |
| Overview of changes leading to 0.9.15 | |
| Friday, April 05, 2013 | |
| ===================================== | |
| - Build fixes. | |
| - Fix crasher in graphite2 shaper. | |
| - Fix Arabic mark width zeroing regression. | |
| - Don't compose Hangul jamo into Unicode syllables. | |
| Overview of changes leading to 0.9.14 | |
| Thursday, March 21, 2013 | |
| ===================================== | |
| - Build fixes. | |
| - Fix time-consuming sanitize with malicious fonts. | |
| - Implement hb_buffer_deserialize_glyphs() for both json and text. | |
| - Do not ignore Hangul filler characters. | |
| - Indic fixes: | |
| * Fix Malayalam pre-base reordering interaction with post-forms. | |
| * Further adjust ZWJ handling. Should fix known regressions from | |
| 0.9.13. | |
| Overview of changes leading to 0.9.13 | |
| Thursday, February 25, 2013 | |
| ===================================== | |
| - Build fixes. | |
| - Ngapi HarfBuzz Hackfest in London (February 2013): | |
| * Fixed all known Indic bugs, | |
| * New Win8-style Myanmar shaper, | |
| * New South-East Asian shaper for Tai Tham, Cham, and New Tai Lue, | |
| * Smartly ignore Default_Ignorable characters (joiners, etc) wheb | |
| matching GSUB/GPOS lookups, | |
| * Fix 'Phags-Pa U+A872 shaping, | |
| * Fix partial disabling of default-on features, | |
| * Allow disabling of TrueType kerning. | |
| - Fix possible crasher with broken fonts with overlapping tables. | |
| - Removed generated files from git again. So, one needs ragel to | |
| bootstrap from the git tree. | |
| API changes: | |
| - hb_shape() and related APIs now abort if buffer direction is | |
| HB_DIRECTION_INVALID. Previously, hb_shape() was calling | |
| hb_buffer_guess_segment_properties() on the buffer before | |
| shaping. The heuristics in that function are fragile. If the | |
| user really wants the old behvaior, they can call that function | |
| right before calling hb_shape() to get the old behavior. | |
| - hb_blob_create_sub_blob() always creates sub-blob with | |
| HB_MEMORY_MODE_READONLY. See comments for the reason. | |
| Overview of changes leading to 0.9.12 | |
| Thursday, January 18, 2013 | |
| ===================================== | |
| - Build fixes for Sun compiler. | |
| - Minor bug fix. | |
| Overview of changes leading to 0.9.11 | |
| Thursday, January 10, 2013 | |
| ===================================== | |
| - Build fixes. | |
| - Fix GPOS mark attachment with null Anchor offsets. | |
| - [Indic] Fix old-spec reordering of viramas if sequence ends in one. | |
| - Fix multi-threaded shaper data creation crash. | |
| - Add atomic ops for Solaris. | |
| API changes: | |
| - Rename hb_buffer_clear() to hb_buffer_clear_contents(). | |
| Overview of changes leading to 0.9.10 | |
| Thursday, January 3, 2013 | |
| ===================================== | |
| - [Indic] Fixed rendering of Malayalam dot-reph | |
| - Updated OT language tags. | |
| - Updated graphite2 backend. | |
| - Improved hb_ot_layout_get_size_params() logic. | |
| - Improve hb-shape/hb-view help output. | |
| - Fixed hb-set.h implementation to not crash. | |
| - Fixed various issues with hb_ot_layout_collect_lookups(). | |
| - Various build fixes. | |
| New API: | |
| hb_graphite2_face_get_gr_face() | |
| hb_graphite2_font_get_gr_font() | |
| hb_coretext_face_get_cg_font() | |
| Modified API: | |
| hb_ot_layout_get_size_params() | |
| Overview of changes leading to 0.9.9 | |
| Wednesday, December 5, 2012 | |
| ==================================== | |
| - Fix build on Windows. | |
| - Minor improvements. | |
| Overview of changes leading to 0.9.8 | |
| Tuesday, December 4, 2012 | |
| ==================================== | |
| - Actually implement hb_shape_plan_get_shaper (). | |
| - Make UCDB data tables const. | |
| - Lots of internal refactoring in OTLayout tables. | |
| - Flesh out hb_ot_layout_lookup_collect_glyphs(). | |
| New API: | |
| hb_ot_layout_collect_lookups() | |
| hb_ot_layout_get_size_params() | |
| Overview of changes leading to 0.9.7 | |
| Sunday, November 21, 2012 | |
| ==================================== | |
| HarfBuzz "All-You-Can-Eat-Sushi" (aka Vancouver) Hackfest and follow-on fixes. | |
| - Fix Arabic contextual joining using pre-context text. | |
| - Fix Sinhala "split matra" mess. | |
| - Fix Khmer shaping with broken fonts. | |
| - Implement Thai "PUA" shaping for old fonts. | |
| - Do NOT route Kharoshthi script through the Indic shaper. | |
| - Disable fallback positioning for Indic and Thai shapers. | |
| - Misc fixes. | |
| hb-shape / hb-view changes: | |
| - Add --text-before and --text-after | |
| - Add --bot / --eot / --preserve-default-ignorables | |
| - hb-shape --output-format=json | |
| New API: | |
| hb_buffer_clear() | |
| hb_buffer_flags_t | |
| HB_BUFFER_FLAGS_DEFAULT | |
| HB_BUFFER_FLAG_BOT | |
| HB_BUFFER_FLAG_EOT | |
| HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES | |
| hb_buffer_set_flags() | |
| hb_buffer_get_flags() | |
| HB_BUFFER_SERIALIZE_FLAGS | |
| hb_buffer_serialize_glyphs() | |
| hb_buffer_deserialize_glyphs() | |
| hb_buffer_serialize_list_formats() | |
| hb_set_add_range() | |
| hb_set_del_range() | |
| hb_set_get_population() | |
| hb_set_next_range() | |
| hb_face_[sg]et_glyph_count() | |
| hb_segment_properties_t | |
| HB_SEGMENT_PROPERTIES_DEFAULT | |
| hb_segment_properties_equal() | |
| hb_segment_properties_hash() | |
| hb_buffer_set_segment_properties() | |
| hb_buffer_get_segment_properties() | |
| hb_ot_layout_glyph_class_t | |
| hb_ot_layout_get_glyph_class() | |
| hb_ot_layout_get_glyphs_in_class() | |
| hb_shape_plan_t | |
| hb_shape_plan_create() | |
| hb_shape_plan_create_cached() | |
| hb_shape_plan_get_empty() | |
| hb_shape_plan_reference() | |
| hb_shape_plan_destroy() | |
| hb_shape_plan_set_user_data() | |
| hb_shape_plan_get_user_data() | |
| hb_shape_plan_execute() | |
| hb_shape_plan_get_shaper() | |
| hb_ot_shape_plan_collect_lookups() | |
| API changes: | |
| - Remove "mask" parameter from hb_buffer_add(). | |
| - Rename hb_ot_layout_would_substitute_lookup() and hb_ot_layout_substitute_closure_lookup(). | |
| - hb-set.h API const correction. | |
| - Renamed hb_set_min/max() to hb_set_get_min/max(). | |
| - Rename hb_ot_layout_feature_get_lookup_indexes() to hb_ot_layout_feature_get_lookups(). | |
| - Rename hb_buffer_guess_properties() to hb_buffer_guess_segment_properties(). | |
| Overview of changes leading to 0.9.6 | |
| Sunday, November 13, 2012 | |
| ==================================== | |
| - Don't clear pre-context text if no new context is provided. | |
| - Fix ReverseChainingSubstLookup, which was totally borked. | |
| - Adjust output format of hb-shape a bit. | |
| - Include config.h.in in-tree. Makes it easier for alternate build systems. | |
| - Fix hb_buffer_set_length(buffer, 0) invalid memory allocation. | |
| - Use ICU LayoutEngine's C API instead of C++. Avoids much headache. | |
| - Drop glyphs for all of Unicode Default_Ignorable characters. | |
| - Misc build fixes. | |
| Arabic shaper: | |
| - Enable 'dlig' and 'mset' features in Arabic shaper. | |
| - Implement 'Phags-pa shaping, improve Mongolian. | |
| Indic shaper: | |
| - Decompose Sinhala split matras the way old HarfBuzz / Pango did. | |
| - Initial support for Consonant Medials. | |
| - Start adding new-style Myanmar shaping. | |
| - Make reph and 'pref' logic introspect the font. | |
| - Route Meetei-Mayek through the Indic shaper. | |
| - Don't apply 'liga' in Indic shaper. | |
| - Improve Malayalam pre-base reordering Ra interaction with Chillus. | |
| Overview of changes leading to 0.9.5 | |
| Sunday, October 14, 2012 | |
| ==================================== | |
| - Synthetic-GSUB Arabic fallback shaping. | |
| - Misc Indic improvements. | |
| - Add build system support for pthread. | |
| - Imported UCDN for in-tree Unicode callbacks implementation. | |
| - Context-aware Arabic joining. | |
| - Misc other fixes. | |
| - New API: | |
| hb_feature_to/from-string() | |
| hb_buffer_[sg]et_content_type() | |
| Overview of changes leading to 0.9.4 | |
| Tuesday, Sep 03, 2012 | |
| ==================================== | |
| - Indic improvements with old-spec Malayalam. | |
| - Better fallback glyph positioning, specially with Thai / Lao marks. | |
| - Implement dotted-circle insertion. | |
| - Better Arabic fallback shaping / ligation. | |
| - Added ICU LayoutEngine backend for testing. Call it by the 'icu_le' name. | |
| - Misc fixes. | |
| Overview of changes leading to 0.9.3 | |
| Friday, Aug 18, 2012 | |
| ==================================== | |
| - Fixed fallback mark positioning for left-to-right text. | |
| - Improve mark positioning for the remaining combining classes. | |
| - Unbreak Thai and fallback Arabic shaping. | |
| - Port Arabic shaper to shape-plan caching. | |
| - Use new ICU normalizer functions. | |
| Overview of changes leading to 0.9.2 | |
| Friday, Aug 10, 2012 | |
| ==================================== | |
| - Over a thousand commits! This is the first major release of HarfBuzz. | |
| - HarfBuzz is feature-complete now! It should be in par, or better, than | |
| both Pango's shapers and old HarfBuzz / Qt shapers. | |
| - New Indic shaper, supporting main Indic scripts, Sinhala, and Khmer. | |
| - Improved Arabic shaper, with fallback Arabic shaping, supporting Arabic, | |
| Sinhala, N'ko, Mongolian, and Mandaic. | |
| - New Thai / Lao shaper. | |
| - Tibetan / Hangul support in the generic shaper. | |
| - Synthetic GDEF support for fonts without a GDEF table. | |
| - Fallback mark positioning for fonts without a GPOS table. | |
| - Unicode normalization shaping heuristic during glyph mapping. | |
| - New experimental Graphite2 backend. | |
| - New Uniscribe backend (primarily for testing). | |
| - New CoreText backend (primarily for testing). | |
| - Major optimization and speedup. | |
| - Test suites and testing infrastructure (work in progress). | |
| - Greatly improved hb-view cmdline tool. | |
| - hb-shape cmdline tool. | |
| - Unicode 6.1 support. | |
| Summary of API changes: | |
| o Changed API: | |
| - Users are expected to only include main header files now (ie. hb.h, | |
| hb-glib.h, hb-ft.h, ...) | |
| - All struct tag names had their initial underscore removed. | |
| Ie. "struct _hb_buffer_t" is "struct hb_buffer_t" now. | |
| - All set_user_data() functions now take a "replace" boolean parameter. | |
| - hb_buffer_create() takes zero arguments now. | |
| Use hb_buffer_pre_allocate() to pre-allocate. | |
| - hb_buffer_add_utf*() now accept -1 for length parameters, | |
| meaning "nul-terminated". | |
| - hb_direction_t enum values changed. | |
| - All *_from_string() APIs now take a length parameter to allow for | |
| non-nul-terminated strings. A -1 length means "nul-terminated". | |
| - Typedef for hb_language_t changed. | |
| - hb_get_table_func_t renamed to hb_reference_table_func_t. | |
| - hb_ot_layout_table_choose_script() | |
| - Various renames in hb-unicode.h. | |
| o New API: | |
| - hb_buffer_guess_properties() | |
| Automatically called by hb_shape(). | |
| - hb_buffer_normalize_glyphs() | |
| - hb_tag_from_string() | |
| - hb-coretext.h | |
| - hb-uniscribe.h | |
| - hb_face_reference_blob() | |
| - hb_face_[sg]et_index() | |
| - hb_face_set_upem() | |
| - hb_font_get_glyph_name_func_t | |
| hb_font_get_glyph_from_name_func_t | |
| hb_font_funcs_set_glyph_name_func() | |
| hb_font_funcs_set_glyph_from_name_func() | |
| hb_font_get_glyph_name() | |
| hb_font_get_glyph_from_name() | |
| hb_font_glyph_to_string() | |
| hb_font_glyph_from_string() | |
| - hb_font_set_funcs_data() | |
| - hb_ft_font_set_funcs() | |
| - hb_ft_font_get_face() | |
| - hb-gobject.h (work in progress) | |
| - hb_ot_shape_glyphs_closure() | |
| hb_ot_layout_substitute_closure_lookup() | |
| - hb-set.h | |
| - hb_shape_full() | |
| - hb_unicode_combining_class_t | |
| - hb_unicode_compose_func_t | |
| hb_unicode_decompose_func_t | |
| hb_unicode_decompose_compatibility_func_t | |
| hb_unicode_funcs_set_compose_func() | |
| hb_unicode_funcs_set_decompose_func() | |
| hb_unicode_funcs_set_decompose_compatibility_func() | |
| hb_unicode_compose() | |
| hb_unicode_decompose() | |
| hb_unicode_decompose_compatibility() | |
| o Removed API: | |
| - hb_ft_get_font_funcs() | |
| - hb_ot_layout_substitute_start() | |
| hb_ot_layout_substitute_lookup() | |
| hb_ot_layout_substitute_finish() | |
| hb_ot_layout_position_start() | |
| hb_ot_layout_position_lookup() | |
| hb_ot_layout_position_finish() | |
| Overview of changes leading to 0.6.0 | |
| Friday, May 27, 2011 | |
| ==================================== | |
| - Vertical text support in GPOS | |
| - Almost all API entries have unit tests now, under test/ | |
| - All thread-safety issues are fixed | |
| Summary of API changes follows. | |
| * Simple Types API: | |
| o New API: | |
| HB_LANGUAGE_INVALID | |
| hb_language_get_default() | |
| hb_direction_to_string() | |
| hb_direction_from_string() | |
| hb_script_get_horizontal_direction() | |
| HB_UNTAG() | |
| o Renamed API: | |
| hb_category_t renamed to hb_unicode_general_category_t | |
| o Changed API: | |
| hb_language_t is a typed pointers now | |
| o Removed API: | |
| HB_TAG_STR() | |
| * Use ISO 15924 tags for hb_script_t: | |
| o New API: | |
| hb_script_from_iso15924_tag() | |
| hb_script_to_iso15924_tag() | |
| hb_script_from_string() | |
| o Changed API: | |
| HB_SCRIPT_* enum members changed value. | |
| * Buffer API streamlined: | |
| o New API: | |
| hb_buffer_reset() | |
| hb_buffer_set_length() | |
| hb_buffer_allocation_successful() | |
| o Renamed API: | |
| hb_buffer_ensure() renamed to hb_buffer_pre_allocate() | |
| hb_buffer_add_glyph() renamed to hb_buffer_add() | |
| o Removed API: | |
| hb_buffer_clear() | |
| hb_buffer_clear_positions() | |
| o Changed API: | |
| hb_buffer_get_glyph_infos() takes an out length parameter now | |
| hb_buffer_get_glyph_positions() takes an out length parameter now | |
| * Blob API streamlined: | |
| o New API: | |
| hb_blob_get_data() | |
| hb_blob_get_data_writable() | |
| o Renamed API: | |
| hb_blob_create_empty() renamed to hb_blob_get_empty() | |
| o Removed API: | |
| hb_blob_lock() | |
| hb_blob_unlock() | |
| hb_blob_is_writable() | |
| hb_blob_try_writable() | |
| o Changed API: | |
| hb_blob_create() takes user_data before destroy now | |
| * Unicode functions API: | |
| o Unicode function vectors can subclass other unicode function vectors now. | |
| Unimplemented callbacks in the subclass automatically chainup to the parent. | |
| o All hb_unicode_funcs_t callbacks take a user_data now. Their setters | |
| take a user_data and its respective destroy callback. | |
| o New API: | |
| hb_unicode_funcs_get_empty() | |
| hb_unicode_funcs_get_default() | |
| hb_unicode_funcs_get_parent() | |
| o Changed API: | |
| hb_unicode_funcs_create() now takes a parent_funcs. | |
| o Removed func getter functions: | |
| hb_unicode_funcs_get_mirroring_func() | |
| hb_unicode_funcs_get_general_category_func() | |
| hb_unicode_funcs_get_script_func() | |
| hb_unicode_funcs_get_combining_class_func() | |
| hb_unicode_funcs_get_eastasian_width_func() | |
| * Face API: | |
| o Renamed API: | |
| hb_face_get_table() renamed to hb_face_reference_table() | |
| hb_face_create_for_data() renamed to hb_face_create() | |
| o Changed API: | |
| hb_face_create_for_tables() takes user_data before destroy now | |
| hb_face_reference_table() returns empty blob instead of NULL | |
| hb_get_table_func_t accepts the face as first parameter now | |
| * Font API: | |
| o Fonts can subclass other fonts now. Unimplemented callbacks in the | |
| subclass automatically chainup to the parent. When chaining up, | |
| scale is adjusted if the parent font has a different scale. | |
| o All hb_font_funcs_t callbacks take a user_data now. Their setters | |
| take a user_data and its respective destroy callback. | |
| o New API: | |
| hb_font_get_parent() | |
| hb_font_funcs_get_empty() | |
| hb_font_create_sub_font() | |
| o Removed API: | |
| hb_font_funcs_copy() | |
| hb_font_unset_funcs() | |
| o Removed func getter functions: | |
| hb_font_funcs_get_glyph_func() | |
| hb_font_funcs_get_glyph_advance_func() | |
| hb_font_funcs_get_glyph_extents_func() | |
| hb_font_funcs_get_contour_point_func() | |
| hb_font_funcs_get_kerning_func() | |
| o Changed API: | |
| hb_font_create() takes a face and references it now | |
| hb_font_set_funcs() takes user_data before destroy now | |
| hb_font_set_scale() accepts signed integers now | |
| hb_font_get_contour_point_func_t now takes glyph first, then point_index | |
| hb_font_get_glyph_func_t returns a success boolean now | |
| * Changed object model: | |
| o All object types have a _get_empty() now: | |
| hb_blob_get_empty() | |
| hb_buffer_get_empty() | |
| hb_face_get_empty() | |
| hb_font_get_empty() | |
| hb_font_funcs_get_empty() | |
| hb_unicode_funcs_get_empty() | |
| o Added _set_user_data() and _get_user_data() for all object types: | |
| hb_blob_get_user_data() | |
| hb_blob_set_user_data() | |
| hb_buffer_get_user_data() | |
| hb_buffer_set_user_data() | |
| hb_face_get_user_data() | |
| hb_face_set_user_data() | |
| hb_font_funcs_get_user_data() | |
| hb_font_funcs_set_user_data() | |
| hb_font_get_user_data() | |
| hb_font_set_user_data() | |
| hb_unicode_funcs_get_user_data() | |
| hb_unicode_funcs_set_user_data() | |
| o Removed the _get_reference_count() from all object types: | |
| hb_blob_get_reference_count() | |
| hb_buffer_get_reference_count() | |
| hb_face_get_reference_count() | |
| hb_font_funcs_get_reference_count() | |
| hb_font_get_reference_count() | |
| hb_unicode_funcs_get_reference_count() | |
| o Added _make_immutable() and _is_immutable() for all object types except for buffer: | |
| hb_blob_make_immutable() | |
| hb_blob_is_immutable() | |
| hb_face_make_immutable() | |
| hb_face_is_immutable() | |
| * Changed API for vertical text support | |
| o The following callbacks where removed: | |
| hb_font_get_glyph_advance_func_t | |
| hb_font_get_kerning_func_t | |
| o The following new callbacks added instead: | |
| hb_font_get_glyph_h_advance_func_t | |
| hb_font_get_glyph_v_advance_func_t | |
| hb_font_get_glyph_h_origin_func_t | |
| hb_font_get_glyph_v_origin_func_t | |
| hb_font_get_glyph_h_kerning_func_t | |
| hb_font_get_glyph_v_kerning_func_t | |
| o The following API removed as such: | |
| hb_font_funcs_set_glyph_advance_func() | |
| hb_font_funcs_set_kerning_func() | |
| hb_font_get_glyph_advance() | |
| hb_font_get_kerning() | |
| o New API added instead: | |
| hb_font_funcs_set_glyph_h_advance_func() | |
| hb_font_funcs_set_glyph_v_advance_func() | |
| hb_font_funcs_set_glyph_h_origin_func() | |
| hb_font_funcs_set_glyph_v_origin_func() | |
| hb_font_funcs_set_glyph_h_kerning_func() | |
| hb_font_funcs_set_glyph_v_kerning_func() | |
| hb_font_get_glyph_h_advance() | |
| hb_font_get_glyph_v_advance() | |
| hb_font_get_glyph_h_origin() | |
| hb_font_get_glyph_v_origin() | |
| hb_font_get_glyph_h_kerning() | |
| hb_font_get_glyph_v_kerning() | |
| o The following higher-leve API added for convenience: | |
| hb_font_get_glyph_advance_for_direction() | |
| hb_font_get_glyph_origin_for_direction() | |
| hb_font_add_glyph_origin_for_direction() | |
| hb_font_subtract_glyph_origin_for_direction() | |
| hb_font_get_glyph_kerning_for_direction() | |
| hb_font_get_glyph_extents_for_origin() | |
| hb_font_get_glyph_contour_point_for_origin() | |
| * OpenType Layout API: | |
| o New API: | |
| hb_ot_layout_position_start() | |
| hb_ot_layout_substitute_start() | |
| hb_ot_layout_substitute_finish() | |
| * Glue code: | |
| o New API: | |
| hb_glib_script_to_script() | |
| hb_glib_script_from_script() | |
| hb_icu_script_to_script() | |
| hb_icu_script_from_script() | |
| * Version API added: | |
| o New API: | |
| HB_VERSION_MAJOR | |
| HB_VERSION_MINOR | |
| HB_VERSION_MICRO | |
| HB_VERSION_STRING | |
| HB_VERSION_CHECK() | |
| hb_version() | |
| hb_version_string() | |
| hb_version_check() | |