4.29.1 (released 2022-02-01)
----------------------------
- [colorLib] Fixed rounding issue with radial gradient's start/end circles inside
one another
- [freetypePen] Handle rotate/skew transform when auto-computing width/height of the
buffer; raise PenError wen missing moveTo
4.29.0 (released 2022-01-24)
----------------------------
- [ufoLib] Fixed illegal characters and expanded reserved filenames
- [COLRv1] Don't emit useless PaintColrLayers of lenght=1 in LayerListBuilder
- [ttx] Removed legacy ``waitForKeyPress`` method on Windows
- [pens] Added FreeTypePen that uses ``freetype-py`` and the pen protocol for
rasterizating outline paths
- [unicodedata] Updated the script direction list to Unicode 14.0
Bumped unicodedata2 dependency to 14.0
- [psLib] Fixed type of ``fontName`` in ``suckfont``
* Use GitHub release tarball as distfile.
Changelog:
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)
2.0.18:
Ozkan Sezer - Wed Jan 5 14:15:46 PST 2022
* Added TTF_GetFreeTypeVersion() and TTF_GetHarfBuzzVersion()
Sylvain - Jan 16, 2021
* Added support for Signed Distance Field rendering with TTF_SetFontSDF() and TTF_GetFontSDF()
David Ludwig - Dec 28, 2019
* Added optional DPI-scaling of fonts, with the following new functions:
TTF_OpenFontDPI()
TTF_OpenFontIndexDPI()
TTF_OpenFontDPIRW()
TTF_OpenFontIndexDPIRW()
TTF_SetFontSizeDPI()
Weard Anaether - Dec 2, 2019
* Added 32-bit character support with:
TTF_RenderGlyph32_Solid()
TTF_RenderGlyph32_Shaded()
TTF_RenderGlyph32_Blended()
TTF_GetFontKerningSizeGlyphs32()
Arthur Danskin - Sep 3, 2019
* Added 32-bit character support with TTF_GlyphIsProvided32() and TTF_GlyphMetrics32()
Sylvain - Apr 5, 2019
* Added functions to set direction and script when using Harfbuzz:
TTF_SetDirection()
TTF_SetScript()
Sylvain - Mar 25, 2019
* Added extended API for text measurement:
TTF_MeasureText()
TTF_MeasureUTF8()
TTF_MeasureUNICODE()
Sylvain - Jan 31, 2019
* Added TTF_SetFontSize() to set font size dynamically
* Added 'Shaded' and 'Solid' text wrapped functions:
TTF_RenderText_Solid_Wrapped()
TTF_RenderUTF8_Solid_Wrapped()
TTF_RenderUNICODE_Solid_Wrapped()
TTF_RenderText_Shaded_Wrapped()
TTF_RenderUTF8_Shaded_Wrapped()
TTF_RenderUNICODE_Shaded_Wrapped()
* Added TTF_HINTING_LIGHT_SUBPIXEL for better results at small text sizes at a performance cost
This flag should be set for packages that import pkg_resources
and thus need setuptools after the build step.
Set this flag for packages that need it and bump PKGREVISION.
4.28.5 (released 2021-12-19)
----------------------------
- [svgPathPen] Continuation of 2471: make sure all occurrences of ``str()`` are now
replaced with user-defined ``ntos`` callable.
- [merge] Refactored code into submodules, plus several bugfixes and improvements:
fixed duplicate-glyph-resolution GSUB-lookup generation code; use tolerance in glyph
comparison for empty glyph's width; ignore space of default ignorable glyphs;
downgrade duplicates-resolution missing-GSUB from assert to warn; added --drop-tables
option.
Cascadia Code 2111.01
This is a "single-issue" bug fix release! Happy holidays!
- The brace ligatures in the italic style will no longer look totally
hilarious and terrible (#595)
Changelog:
v6.0.0 Latest
Changes in 6.0
Note: this is a major release due to the change in postscript naming
structure. Each font now uses abbreviations for Semibold, ExtraLight
and Medium (SmBld, ExtLt, and Medm respectively).
[IBM PLEX MONO V2.3] - 2021-08-13
Added
U+2500-U259F Box drawing characters and block elements
referenced in issue 93
U+2032 (PRIME) U+2033 (DOUBLE PRIME)
referenced in issue 145
glyphs /acaron /acaron.alt01 /icaron /ocaron /ucaron
/udieresismacron /udieresisacute /udieresisgrave /udieresiscaron
/Acaron /Icaron /Ocaron /Ucaron /Udieresismacron /Udieresisacute
/Udieresisgrave /Udieresiscaron to support pinyin
referenced in issue 84
U+017F (LONG S)
referenced in issue 158
U+00A4 (CURRENCY SIGN) U+2215 (DIVISION SLASH)
referenced in issue 280
Fixed
FamilyClass value in OS/2 table
referenced in issue 330
PostScript BlueScale values
Changed
more distinct shape for /a and related characters in italic styles
more distinct shape for /r and related characters
more distinct shape for /asciitilde
referenced in issue 322
replaced commaaccent with cedilla in glyphs /Tcedilla /tcedilla
referenced in issue 251
disabled bit 38 (Mathematical Operators) from OS/2 UnicodeRanges
[IBM PLEX SANS JP V1.0] - 2021-06-18
Added
Support for Japanese (9505 glyphs per font)
[IBM PLEX SANS DEVANAGARI V1.2] - 2021-05-31
Changed
abbreviated font names used for style mapping (name ID1 + ID2) to
improve interoperability
[IBM PLEX SANS THAI V1.2] - 2021-05-31
Changed
abbreviated font names used for style mapping (name ID1 + ID2) to
improve interoperability
[IBM PLEX SANS THAI LOOPED V1.2] - 2021-05-31
Changed
abbreviated font names used for style mapping (name ID1 + ID2) to
improve interoperability
[IBM PLEX MONO V2.2] - 2021-05-28
Changed
abbreviated font names used for style mapping (name ID1 + ID2) to
improve interoperability
[IBM PLEX SANS V3.3] - 2021-05-28
Changed
abbreviated font names used for style mapping (name ID1 + ID2) to
improve interoperability
[IBM PLEX SERIF V2.7] - 2021-05-28
Changed
abbreviated font names used for style mapping (name ID1 + ID2) to
improve interoperability
[IBM PLEX SANS ARABIC V1.2] - 2021-02-14
Added
Glyphs /alefMaksura_zain-ar.fina.rlig
/alefMaksura_zain-ar.fina.rlig.short /alefMaksura_jeh-ar.fina.rlig
/alefMaksura_jeh-ar.fina.rlig.short /alefMaksura_noon-ar.fina.rlig
Fixed
Mark placement on alternative form of /kaf
referenced in issue 284
Multiple spacing issues including /lam_meem ligatures
PostScript BlueScale values
FamilyClass value in OS/2 table
Changed
included logographs are not used by default anymore but can be
activated through OpenType layout feature "dlig"
referenced in issue 336
abbreviated font names used for style mapping (name ID1 + ID2) to
improve interoperability
Removed
Glyphs /tteh_reh-ar.fina.short /tteh_zain-ar.fina.short
/tteh_rreh-ar.fina.short /tteh_jeh-ar.fina.short
[IBM PLEX SANS HEBREW V1.3] - 2020-12-04
Fixed
placement of dot in glyph /lamed_holam-hb
placement of dot in glyph /lamed_dagesh_holam-hb
metrics of /resh-hb
referenced in issue 343
metrics of /tav-hb
PostScript BlueScale values
FamilyClass value in OS/2 table
Changed
abbreviated font names used for style mapping (name ID1 + ID2) to improve interoperability
4.28.4 (released 2021-12-15)
----------------------------
- [merge] Merge GDEF marksets in Lookups properly
- [feaLib] Have ``fontTools feaLib`` script exit with error code when build fails
- [svgPathPen] Added ``ntos`` option to customize number formatting (e.g. rounding)
- [subset] Speed up subsetting of large CFF fonts
- [otTables] Speculatively promote lookups to extension to speed up compilation. If the
offset to lookup N is too big to fit in a ushort, the offset to lookup N+1 is going to
be too big as well, so we promote to extension all lookups from lookup N onwards
4.28.3 (released 2021-12-03)
----------------------------
- [subset] Fixed bug while subsetting ``COLR`` table, whereby incomplete layer records
pointing to missing glyphs were being retained leading to ``struct.error`` upon
compiling. Make it so that ``glyf`` glyph closure, which follows the ``COLR`` glyph
closure, does not influence the ``COLR`` table subsetting
- [docs] Fully document the ``cmap`` and ``glyf`` tables
- [colorLib.unbuilder] Fixed CLI by deleting no longer existing parameter (180bb1867).
4.28.2 (released 2021-11-22)
----------------------------
- [otlLib] Remove duplicates when building coverage
- [docs] Add interrogate configuration
- [docs] Remove comment about missing “start” optional argument to ``calcChecksum``
- [cu2qu/cli] Adapt to the latest ufoLib2.
- [subset] Support subsetting SVG table and remove it from the list of drop by default tables
- [subset] add ``--pretty-svg`` option to pretty print SVG table contents
- [merge] Support merging ``CFF`` tables (CID-keyed ``CFF`` is still not supported)
- [merge] Support ``--output-file``
- [docs] Split table docs into individual pages
- [feaLib] Forbid empty classes
- [docs] Improve documentation for ``fontTools.ttLib.ttFont``
3.1.2
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.
Subsetter bug fixes.
4.28.1 (released 2021-11-08)
----------------------------
- [subset] Fixed AttributeError while traversing a color glyph's Paint graph when there is no
LayerList, which is optional
4.28.0 (released 2021-11-05)
----------------------------
- Dropped support for EOL Python 3.6, require Python 3.7
- [ufoLib/glifLib] Make filename-clash checks faster by using a set instead of a list
- [subset] Don't crash if optional ClipList and LayerList are ``None`` (empty)
- [OT-SVG] Removed support for old deprecated version 1 and embedded color palettes,
which were never officially part of the OpenType SVG spec. Upon compile, reuse offsets
to SVG documents that are identical
- [feaLib] Added support for Variable Feature File syntax. This is experimental and subject
to change until it is finalized in the Adobe FEA spec
- [unicodedata] Update Scripts/ScriptExtensions/Blocks to UnicodeData 14.0
4.27.1 (released 2021-09-23)
----------------------------
- [otlLib] Fixed error when chained contextual lookup builder overflows
- [bezierTools] Fixed two floating-point bugs: one when computing `t` for a point
lying on an almost horizontal/vertical line; another when computing the intersection
point between a curve and a line
4.27.0 (released 2021-09-14)
----------------------------
- [ttLib/otTables] Cleaned up virtual GID handling: allow virtual GIDs in ``Coverage``
and ``ClassDef`` readers; removed unused ``allowVID`` argument from ``TTFont``
constructor, and ``requireReal`` argument in ``TTFont.getGlyphID`` method.
Make ``TTFont.setGlyphOrder`` clear reverse glyphOrder map, and assume ``glyphOrder``
internal attribute is never modified outside setGlyphOrder; added ``TTFont.getGlyphNameMany``
and ``getGlyphIDMany``
- [py23] Dropped internal use of ``fontTools.py23`` module to fix deprecation warnings
in client code that imports from fontTools
- [subset] Fix subsetting COLRv1 clip boxes when font is loaded lazily
4.26.2 (released 2021-08-09)
----------------------------
- [otTables] Added missing ``CompositeMode.PLUS`` operator
4.26.1 (released 2021-08-03)
----------------------------
- [transform] Added ``transformVector`` and ``transformVectors`` methods to the
``Transform`` class. Similar to ``transformPoint`` but ignore the translation
part
4.26.0 (released 2021-08-03)
----------------------------
- [xmlWriter] Default to ``"\n"`` for ``newlinestr`` instead of platform-specific
``os.linesep``
- [otData] Define COLRv1 ClipList and ClipBox
- [removeOverlaps/instancer] Added --ignore-overlap-errors option to work around
Skia PathOps.Simplify bug
- NOTE: This will be the last version to support Python 3.6. FontTools will require
Python 3.7 or above from the next release
This font was originally released during the 1930s as part of the
Deutschmeister font family at the type foundry Ludwig Wagner. FDI
Neumeister is a carefully crafted revival released for free under
the Open Font License. This was made possible by the generous
support of people around the world, who pledged for this project
on Kickstarter.
FDI Neumeister has around 400 glyphs covering Western, Eastern and
Central European Latin. Many characters have alternative glyphs,
so both traditional German blackletter typesetting and international
use with improved legibility are possible.
This font was originally released as Deutschmeister in 1927 at the
type foundry Ludwig Wagner. FDI Altmeister is a carefully crafted
revival released for free under the Open Font License. This was
made possible by the generous support of people around the world,
who pledged for this project on Kickstarter.
FDI Altmeister has around 400 glyphs covering Western, Eastern and
Central European Latin. Many characters have alternative glyphs,
so both traditional German blackletter typesetting and international
use with improved legibility are possible.
3.1.0
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()
The original TextFonts distfile is no longer available.
The home page has moved (as linked from the previous version) and
reorganized, and now it lists several more/different related fonts. It
would be silly not to package them too, since they fit within the
original package description. The font files are now OTF instead of
TTF. The differences are so much that a new package with a new
appropriate name seemed better than keeping the old package name.
No changelog was found.
Junicode version 1.000 fully implements the Medieval Unicode Font
Initiative version 4.0. It includes numerous bug fixes, most
notably one that affected the stacking of diacritical marks and
another that caused glyphs to "explode" in certain printers.
The Greek face has been moved into its own font, Foulis Greek.
Junicode 1.001 adds some anchors at a users' request. Version 1.002
adds an anchor and a couple of glyphs requested by users and fixes
several bugs.
These have code ligatures & several stylistic sets pre-applied so they
will work by default in most code environments & apps. These are also
named & configured in a way that enables their use in code themes that
utilize italic & bold styles. If you wish to configure specific features
in Rec Mono fonts, see
Recursive Code Config https://github.com/arrowtype/recursive-code-config
- Regular, Italic, Bold, & Bold Italic static fonts
- Frozen-in Code Ligatures
- An abbreviated family name to enable italic themes on macOS
- Reduced-slant italics for easier readability in code (normal Recursive
Italics have slnt=-15, which is pretty intense)
- Frozen-in OpenType features to enhance legibility for code (e.g.
making 1 and l instantly recognizable)
- `ss03` # simplified f
- `ss05` # simplified l
- `ss08` # serifless L and Z
- `ss09` # simplified 6 and 9
- `ss12` # simplified @
1.079: Several small fixes to diacritics and kerning
Several small fixes to diacritics and spacing:
Fixes#472 - Accidental kerning pair in Sans: standard (tabular) 1 and 7
Fixes#465 - Overly-tight kerning: right quote + e accents
Fixes#450 - Combining vertical line below had incorrect Unicode value.
1.081: Make default numbers fully tabular, add fuller pnum feature, and
other tiny fixes & upgrades
The main change here is that the default characters for all instances
(Sans included) are now fully tabular, for better use in data tables,
numerical animations, invoices, and more. They were always intended to
be tabular by default, but they were unintentionally given kerning that
made them not-quite-tabular. The kerning that was present was useful, so
it was moved into a fuller proportional numbers (pnum) feature, and can
still be activated for better text flow.
Overall changes:
Adds a minus.superior glyph, for negative exponents
Aixes the width of the prebuilt 1/2 glyph in Sans styles (Closes#479)
Adds a ratio glyph (Closes#480)
Adds mu as a greek character. It was already there under the mu.math
Unicode value, but this will make it easier to find and use (Closes
#481)
Fixes not-quite-tabular figures (Closes#482)
1.082: Glyph width corrections: Sans minus.superior, Mono fl and fi Latest
A minus.superior sign for exponents/superiors was added in the last
release. However, it was too wide in the Sans styles. This release
corrects that.
It also adds the ability to substitute the minus.superior for the hyphen
rather than only the minus, for easier access.
It also closes#483, by making the fi and fl glyphs only 1 unit wide in
the mono. Note that these glyphs aren't ligatures that are easily
accessible or intended for use in code -- they are only there for
describing the specific Unicode characters 0xFB01 - fi and 0xFB02 - fl.
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.