Nerd Fonts patches developer targeted fonts with a high number of
glyphs (icons). Specifically to add a high number of extra glyphs
from popular 'iconic fonts' such as Font Awesome, Devicons,
Octicons, and others.
Big Blue Terminal is a nostalgic font, closely based
on IBM's 8x14 EGA/VGA charset.
Nerd Fonts patches developer targeted fonts with a high number of
glyphs (icons). Specifically to add a high number of extra glyphs
from popular 'iconic fonts' such as Font Awesome, Devicons,
Octicons, and others.
Aurulent Sans Mono is a sans serif font, designed by
Stephen G. Hartke who also created Verily Serif.
Nerd Fonts patches developer targeted fonts with a high number of
glyphs (icons). Specifically to add a high number of extra glyphs
from popular 'iconic fonts' such as Font Awesome, Devicons,
Octicons, and others.
Arimo is metrically similar to Arial, a sans serif font which covers
the pan-European WGL character set.
Nerd Fonts patches developer targeted fonts with a high number of
glyphs (icons). Specifically to add a high number of extra glyphs
from popular 'iconic fonts' such as Font Awesome, Devicons,
Octicons, and others.
Anonymice (AnonymousPro) is inspired by Anonymous 9 on Macintosh,
since 2009, with distinct 'O', '0', 'I', 'l', and '1'.
Nerd Fonts patches developer targeted fonts with a high number of
glyphs (icons). Specifically to add a high number of extra glyphs
from popular 'iconic fonts' such as Font Awesome, Devicons,
Octicons, and others.
Agave Nerd-Font is derived from the Agave font.
It is a small, monospace, outline font that is geometrically
regular and simple.
Nerd Fonts patches developer targeted fonts with a high number of
glyphs (icons). Specifically to add a high number of extra glyphs
from popular 'iconic fonts' such as Font Awesome, Devicons,
Octicons, and others.
x2370 Nerd-Font is derived from the x3270 font.
Provides access to the text shaping functionality in the 'HarfBuzz'
library and the bidirectional algorithm in the 'Fribidi' library.
'textshaping' is a low-level utility package mainly for graphic
devices that expands upon the font tool-set provided by the
'systemfonts' package.
Provides system native access to the font catalogue. As font handling
varies between systems it is difficult to correctly locate installed
fonts across different operating systems. The 'systemfonts' package
provides bindings to the native libraries on Windows, macOS and Linux
for finding font files that can then be used further by e.g. graphic
devices. The main use is intended to be from compiled code but
'systemfonts' also provides access from R.
Hubot Sans is Mona Sans's robotic sidekick. The typeface is designed
with more geometric accents to lend a technical and idiosyncratic
feel-perfect for headers and pull-quotes. Made together with
Degarism.
A strong and versatile typeface, designed together with Degarism
and inspired by industrial-era grotesques. Mona Sans works well
across product, web, and print. Made to work well together with
Mona Sans's sidekick, Hubot Sans.
5.3.1
Subsetter repacker fixes. (Garret Rieger)
Adjust Grapheme clusters for Katakana voiced sound marks. (Behdad Esfahbod)
New hb-subset option --preprocess-face.
5.3.0
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()
4.38.0 (released 2022-10-21)
----------------------------
- [varLib.instancer] Added support for L4 instancing, i.e. moving the default value of
an axis while keeping it variable. Thanks Behdad!
It's now also possible to restrict an axis min/max values beyond the current default
value, e.g. a font wght has min=100, def=400, max=900 and you want a partial VF that
only varies between 500 and 700, you can now do that.
You can either specify two min/max values (wght=500:700), and the new default will be
set to either the minimum or maximum, depending on which one is closer to the current
default (e.g. 500 in this case). Or you can specify three values (e.g. wght=500:600:700)
to specify the new default value explicitly.
- [otlLib/featureVars] Set a few Count values so one doesn't need to compile the font
to update them
- [varLib.models] Make extrapolation work for 2-master models as well where one master
is at the default location
Add optional extrapolate=False to normalizeLocation()
- [varLib.cff] Fixed sub-optimal packing of CFF2 deltas by no longer rounding them to
integer
- [scaleUpem] Calculate numShorts in VarData after scale; handle CFF hintmasks
Alan Coopersmith (16):
Update README for gitlab migration
Update configure.ac bug URL for gitlab migration
Fix spelling/wording issues
gitlab CI: add a basic build test
Build xz tarballs instead of bzip2
Adopt X.Org standard coding style (via x-indent-all.sh)
Add .git-blame-ignore-revs to hide whitespace commits from git blame
Variable scope reductions as recommended by cppcheck
Delete functions identified as unused by cppcheck
Make some functions static that aren't called from other files
Remove redundant assignment
Remove redundant null-pointer check
Fix -Wsign-compare warnings
Remove unnecessary cast of strlen result in malloc argument
Remove weak symbol setup from Atom code
bdftopcf 1.1.1
Matthieu Herrb (1):
Depend on xproto and fsproto that are now used.
4.37.4 (released 2022-09-30)
----------------------------
- [subset] Keep nameIDs used by CPAL palette entry labels
- [varLib] Avoid negative hmtx values when creating font from variable CFF2 font
- [instancer] Don't prune stat.ElidedFallbackNameID
- [unicodedata] Update Scripts/Blocks to Unicode 15.0
4.37.3 (released 2022-09-20)
----------------------------
- Fix arguments in calls to (glyf) glyph.draw() and drawPoints(), whereby offset wasn't
correctly passed down; this fix also exposed a second bug, where lsb and tsb were not
set
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
4.37.2 (released 2022-09-15)
----------------------------
- [subset] Keep CPAL table and don't attempt to prune unused color indices if OT-SVG
table is present even if COLR table was subsetted away; OT-SVG may be referencing the
CPAL table; for now we assume that's the case
- [varLib.instancer] Downgrade GPOS/GSUB version if there are no more FeatureVariations
after instancing
- [subset] Added ``--no-lazy`` to optionally load fonts eagerly (mostly to ease
debugging of table lazy loading, no practical effects)
- [varLib] Avoid building empty COLR.DeltaSetIndexMap with only identity mappings
- [feaLib] Allow multiple value record types (by promoting to the most general format)
within the same PairPos subtable; e.g. this allows variable and non variable kerning
rules to share the same subtable. This also fixes a bug whereby some kerning pairs
would become unreachable while shapiong because of premature subtable splitting
- [feaLib] Speed up ``VarScalar`` by caching models for recurring master locations
- [feaLib] Optionally cythonize ``feaLib.lexer``, speeds up parsing FEA a bit
- [designspaceLib] Avoid crash when handling unbounded rule conditions
- [post] Don't crash if ``post`` legacy format 1 is malformed/improperly used
- [gvar] Don't be "lazy" (load all glyph variations up front) when TTFont.lazy=False
- [TTFont] Added ``normalizeLocation`` method to normalize a location dict from the
font's defined axes space (also known as "user space") into the normalized (-1..+1)
space. It applies ``avar`` mapping if the font contains an ``avar`` table
- [TTVarGlyphSet] Support drawing glyph instances from CFF2 variable glyph set
- [fontBuilder] Do not error when building cmap if there are zero code points
- [varLib.plot] Added ability to plot a variation model and set of accompaning master
values corresponding to the model's master locations into a pyplot figure
- [Snippets] Added ``statShape.py`` script to draw statistical shape of a glyph as an
ellips (requires pycairo) (baecd88).
- [TTVarGlyphSet] implement drawPoints natively, avoiding going through
SegmentToPointPen
- [TTVarGlyphSet] Fixed bug whereby drawing a composite glyph multiple times, its
components would shif; needed an extra copy
Refine quotation marks in Recursive Sans Latest v1.085
This release refines the weights of quotation marks in the "Sans" styles of
Recursive, especially at lighter weight values.
Previously, these quotation glyphs '"""`'## were a relatively heavy weight,
adopting the aesthetic of bold punctuation common in monospace fonts (included
Recursive Mono). However, the degree of heaviness proved somewhat distracting
in text, so this release tones that down a bit to improve readability. Now,
quotation marks better match the visual weight of other glyphs. This is most
visible at the Light styles (Weight: 300), but also impacts Regular and Medium
weights, including Slanted/Italic styles.
Monospace punctuation remains unchanged, as heavy punctuation is useful in
fixed-width fonts.
4.37.1 (released 2022-08-24)
----------------------------
- [subset] Fixed regression introduced with v4.37.0 while subsetting the VarStore of
``HVAR`` and ``VVAR`` tables, whereby an ``AttributeError: subset_varidxes`` was
thrown because an apparently unused import statement (with the side-effect of
dynamically binding that ``subset_varidxes`` method to the VarStore class) had been
accidentally deleted in an unrelated PR.
- [pens] Added ``cairoPen``.
- [gvar] Read ``gvar`` more lazily by not parsing all of the ``glyf`` table.
- [ttGlyphSet] Make ``drawPoints(pointPen)`` method work for CFF fonts as well via
adapter pen.
4.37.0 (released 2022-08-23)
----------------------------
- [varLib.models] Reverted PR 2717 which added support for "narrow tents" in v4.36.0,
as it introduced a regression. It will be restored in upcoming release
once we found a solution to the bug.
- [cff.specializer] Fixed issue in charstring generalizer with the ``blend`` operator.
- [varLib.models] Added support for extrapolation.
- [ttGlyphSet] Ensure the newly added ``_TTVarGlyphSet`` inherits from ``_TTGlyphSet``
to keep backward compatibility with existing API.
- [kern] Allow compiling legacy kern tables with more than 64k entries (d21cfdede).
- [visitor] Added new visitor API to traverse tree of objects and dispatch based
on the attribute type: cf. ``fontTools.misc.visitor`` and ``fontTools.ttLib.ttVisitor``. Added ``fontTools.ttLib.scaleUpem`` module that uses the latter to
change a font's units-per-em and scale all the related fields accordingly.
4.36.0 (released 2022-08-17)
----------------------------
- [varLib.models] Use a simpler model that generates narrower "tents" (regions, master
supports) whenever possible: specifically when any two axes that actively "cooperate"
(have masters at non-zero positions for both axes) have a complete set of intermediates.
The simpler algorithm produces fewer overlapping regions and behaves better with
respect to rounding at the peak positions than the generic solver, always matching
intermediate masters exactly, instead of maximally 0.5 units off. This may be useful
when 100% metrics compatibility is desired.
- [feaLib] Remove warning when about ``GDEF`` not being built when explicitly not
requested; don't build one unconditonally even when not requested.
- [ttFont] ``TTFont.getGlyphSet`` method now supports selecting a location that
represents an instance of a variable font (supports both user-scale and normalized
axes coordinates via the ``normalized=False`` parameter). Currently this only works
for TrueType-flavored variable fonts.
4.35.0 (released 2022-08-15)
----------------------------
- [otData/otConverters] Added support for 'biased' PaintSweepGradient start/end angles
to match latest COLRv1 spec.
- [varLib.instancer] Fixed bug in ``_instantiateFeatureVariations`` when at the same
time pinning one axis and restricting the range of a subsequent axis; the wrong axis
tag was being used in the latter step (as the records' axisIdx was updated in the
preceding step but looked up using the old axes order in the following step).
- [mtiLib] Pad script tags with space when less than 4 char long.
- [merge] Use ``'.'`` instead of ``'#'`` in duplicate glyph names.
- [gvar] Added support for lazily loading glyph variations.
- [varLib] In ``build_many``, we forgot to pass on ``colr_layer_reuse`` parameter to
the ``build`` method.
- [svgPathPen] Add a main that prints SVG for input text (6df779fd).
- [cffLib.width] Fixed off-by-one in optimized values; previous code didn't match the
code block above it (2963fa50).
- [varLib.interpolatable] Support reading .designspace and .glyphs files (via optional
``glyphsLib``).
- Compile some modules with Cython when available and building/installing fonttools
from source: ``varLib.iup`` (35% faster), ``pens.momentsPen`` (makes
``varLib.interpolatable`` 3x faster).
- [feaLib] Allow features to be built for VF without also building a GDEF table (e.g.
only build GSUB); warn when GDEF would be needed but isn't requested.
- [otBase] Fixed ``AttributeError`` when uharfbuzz < 0.23.0 and 'repack' method is
missing (32aa8eaf). Use new ``uharfbuzz.repack_with_tag`` when available (since
uharfbuzz>=0.30.0), enables table-specific optimizations to be performed during
repacking.
- [statisticsPen] By default report all glyphs (4139d891). Avoid division-by-zero
(52b28f90).
- [feaLib] Added missing required argument to FeatureLibError exception
- [varLib.merge] Fixed error during error reporting. Fixed undefined
``NotANone`` variable.
4.34.4 (released 2022-07-07)
----------------------------
- Fixed typo in varLib/merger.py that causes NameError merging COLR glyphs
containing more than 255 layers.
4.34.3 (released 2022-07-07)
----------------------------
- [designspaceLib] Don't make up bad PS names when no STAT data
4.34.2 (released 2022-07-06)
----------------------------
- [varStore/subset] fixed KeyError exception to do with NO_VARIATION_INDEX while
subsetting varidxes in GPOS/GDEF (a08140d).
4.34.1 (released 2022-07-06)
----------------------------
- [instancer] When optimizing HVAR/VVAR VarStore, use_NO_VARIATION_INDEX=False to avoid
including NO_VARIATION_INDEX in AdvWidthMap, RsbMap, LsbMap mappings, which would
push the VarIdx width to maximum (4bytes), which is not desirable. This also fixes
a hard crash when attempting to subset a varfont after it had been partially instanced
with use_NO_VARIATION_INDEX=True.
4.34.0 (released 2022-07-06)
----------------------------
- [instancer] Set RIBBI bits in head and OS/2 table when cutting instances and the
subfamily nameID=2 contains strings like 'Italic' or 'Bold'.
- [otTraverse] Addded module containing methods for traversing trees of otData tables
.
- [otTables] Made DeltaSetIndexMap TTX dump less verbose by omitting no-op entries
.
- [colorLib.builder] Added option to disable PaintColrLayers's reuse of layers from
LayerList.
- [varLib] Added support for merging multiple master COLRv1 tables into a variable
COLR table. Base color glyphs of same name in different masters must have
identical paint graph structure (incl. number of layers, palette indices, number
of color line stops, corresponding paint formats at each level of the graph),
but can differ in the variable fields (e.g. PaintSolid.Alpha). PaintVar* tables
are produced when this happens and a VarStore/DeltaSetIndexMap is added to the
variable COLR table. It is possible for non-default masters to be 'sparse', i.e.
omit some of the color glyphs present in the default master.
- [feaLib] Let the Parser set nameIDs 1 through 6 that were previously reserved.
- [varLib.varStore] Support NO_VARIATION_INDEX in optimizer and instancer.
- [feaLib] Show all missing glyphs at once at end of parsing.
- [varLib.iup] Rewrite force-set conditions and limit DP loopback length.
For Noto Sans, IUP time drops from 23s down to 9s, with only a slight size increase
in the final font. This basically turns the algorithm from O(n^3) into O(n).
- [featureVars] Report about missing glyphs in substitution rules.
- [mutator/instancer] Added CLI flag to --no-recalc-timestamp.
- [SVG] Allow individual SVG documents in SVG OT table to be compressed on uncompressed,
and remember that when roundtripping to/from ttx. The SVG.docList is now a list
of SVGDocument namedtuple-like dataclass containing an extra ``compressed`` field,
and no longer a bare 3-tuple.
- [designspaceLib] Check for descriptor types with hasattr() to allow custom classes
that don't inherit the default descriptors.
- [subset] Enable sharing across subtables of extension lookups for harfbuzz packing
. Updated how table packing falls back to fontTools from harfbuzz.
- [subset] Updated default feature tags following current Harfbuzz.
- [svgLib] Fixed regex for real number to support e.g. 1e-4 in addition to 1.0e-4.
Support parsing negative rx, ry on arc commands.
- [subset] Fixed subsetting SinglePosFormat2 when ValueFormat=0.
* Tailored case mappings
* Avoid database rebuilds when switching Lua versions
* Improved attribute settings of ActualText nodes in harf mode
* Callback-based customization for color parameter
* Various bug fixes
This small update to the Gentium support package for TeX makes all
eight Gentium fonts available in both LaTeX packages, gentium.sty and
gentiumbook.sty, via additional LaTeX font weights, such as semibold
and semilight. See the documentation for the complete table.
This quick update fixes build failures in libfontenc 1.1.5 on platforms
that require setting a #define such as _GNU_SOURCE, _OPENBSD_SOURCE, or
__EXTENSIONS__ to expose the reallocarray() prototype in their headers.
Alan Coopersmith (7):
Build xz tarballs instead of bzip2
Fix spelling/wording issues
gitlab CI: add a basic build test
Import reallocarray() from libX11 (originally from OpenBSD)
Convert code to use Xmallocarray() & Xreallocarray()
configure: Use AC_USE_SYSTEM_EXTENSIONS to set GNU_SOURCE & other defines
libfontenc 1.1.5
2.22.1:
* Updated autotools to use ax_compute_relative_paths, fixing homebrew on macOS
2.20.0:
* Added support for building with CMake
* Added TTF_GetFontWrappedAlign() and TTF_SetFontWrappedAlign() to set alignment on wrapped text
* Added functions to render using FreeType LCD algorithm:
TTF_RenderText_LCD()
TTF_RenderUTF8_LCD()
TTF_RenderUNICODE_LCD()
TTF_RenderText_LCD_Wrapped()
TTF_RenderUTF8_LCD_Wrapped()
TTF_RenderUNICODE_LCD_Wrapped()
TTF_RenderGlyph_LCD()
TTF_RenderGlyph32_LCD()
* Added TTF_SetFontDirection() and TTF_SetFontScriptName() for additional control over fonts using HarfBuzz
* Updated to FreeType version 2.12.1 and HarfBuzz version 2.9.1, fixing CVE-2018-25032
* Fixed crash when loading fonts at certain sizes on Windows
* Fix memory corruption loading malformed TTF files (CVE-2022-27470)
Amiri is a classical Arabic typeface in Naskh style for
typesetting books and other running text. It is a revival of
the beautiful typeface pioneered in the early 20th century by
Bulaq Press in Cairo, also known as Amiria Press, after which
the font is named. The project aims at the revival of the
aesthetics and traditions of Arabic typesetting, and adapting
it to the era of digital typesetting, in a publicly available
form.
The package changed with the addition of its libepoll-shim dependency.
Otherwise, we can get:
ERROR: libepoll-shim>=0.0.20210418 is not installed; can't buildlink files.
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()
Alan Coopersmith (6):
ucs2any: avoid segfaults if SLANT property is missing
ucs2any: handle NULL returns from zquotedcpy()
gitlab CI: add a basic build test
Build xz tarballs instead of bzip2
Fix spelling/wording issues
font-util 1.3.3
Alan Coopersmith (3):
gitlab CI: add a basic build test
Build xz tarballs instead of bzip2
encodings 1.0.6
Thomas E. Dickey (12):
adjust descriptions for the Unicode mapping to match the Unicode.org data file.
add mapping for 0x80-0x9f, as per Unicode.org data files.
use descriptions from UnicodeData.txt except for two obsolete or incorrect maps
correct a typo (in original), and use appropriate description
use Armenian eternity symbol from Unicode 6.
whitespace-only changes for consistency, using luit's annotate-enc script
add descriptions from UnicodeData.txt, using annotate-enc
add descriptions from UnicodeData.txt, using annotate-enc
add descriptions from UnicodeData.txt, using annotate-enc
add descriptions from UnicodeData.txt, with annotate-enc
add descriptions from UnicodeData.txt, with annotate-enc
whitespace-only, reformat with annotate-enc
2022-06-04: Release 14.0.04
* Fix to font/ttfsrc/Makefile for TrueType & OpenType parallel builds.
* Minor updates for some glyphs, notably Runic (U+16A0..U+16FF).
* All Ahom glyphs (U+11700..U+1174F) are now rendered properly.
there are two bugs in fonts/t1lib that cause math/grace to crash on OSX:
[1] compiler bug in some versions of clang when compiling with "-O2" ...
this appears to have been fixed somewhere between clang-11 and clang-12.
it works ok with "-O1" and it doesn't impact my NetBSD system (which
has gcc instead of clang). resolve by using memcpy() in LONGCOPY()
macro rather than using custom code that triggers the clang issue.
see: https://mail-index.netbsd.org/tech-pkg/2022/06/08/msg026367.html
[2] one case of t1lib trying to be clever and instead writing past end of
malloc'd buffer (which the OSX malloc did not like at all; the netbsd
malloc did not get messed up by this). the address sanitizer helped
pinpoint this.
AnjaliOldLipi is a Sans Serif TrueType font for the Malayalam language.
This is a comprehensive Malayalam font for all common Malayalam ligatures
and the Latin character set.
Add PLIST_SUBST to reduce PLIST churn.
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)
9.56.1
New PDF Interpreter is now enabled by default: See Changes Coming to the PDF Interpreter
libgs is now threadsafe
The PSD output devices now write ICC profiles to their output files for improved color fidelity.
Ghostscript/GhostPDL can now output Apple Raster and URF format image files: via the "appleraster" or "urf" output devices (using the cups implementation of those formats).
Meera is a TrueType font for the Malayalam language.
This is a comprehensive Malayalam font with 1000+ glyphs for all
common Malayalam ligatures.
It has carefully designed ascent, descent metrics optimized for
Malayalam script's vertically stacked conjuncts. Meera is an even
stroke typeface for better screen rendering, with individually
designed glyphs for complex conjuncts rather than using component
glyphs.
Meera is a san-serif counter part of Rachana font with all traditional
characters. It is also meant for body text like Rachana, preferably
for a pamphlet or single page designs. Usage of Meera can be thought
of similar to Helvetica typeface and its variations like Arial. Meera
Roman glyphs are visually similar to Arial but its orthography
strictly follows Meera Malayalam glyphs. Basic curves and straight
lines are taken from Malayalam ‘റ’ and ‘വ’ characters. This is why
Meera Roman glyphs differ from Helvetica but holds san-serif
characteristics and smoothly sit with its Malayalam glyphs.
Released in 2007, Meera is the default Malayalam font for many
GNU/Linux distros for Malayalam script. The font is widely used in
web as the primary choice for Malayalam screen font. The font is
available only in regular style.
Public Sans v2.001:
General:
- Fixed style linking in stat table
- Update to 2.001
Public Sans v2.000:
General:
- Rename `PublicSans-italics` to `PublicSans-Italic`
- Fixed language feature encoding
- Update to 2.000
Glyphs:
- Modified `eth` contours
- Adjusted curves of `S` and `Thorn`
- Corrected
- `Eng`, `eng`
- `Ldot`, '`ldot`
- `Tbar`, `tbar`
- `gcommaaccent`
- Removed unnecessary anchors
- Decomposed and transformed components
- Corrected dot accent position in thin masters
- Slightly shifted position of `acute` and `grave`
- Adjusted percent and perthousand
- Corrected positon of `caron.alt`
- Added caret anchors
- Corrected Naira currency
- Decomposed nested components
- Corrected kerning group inconsistencies in caps and lowercases
- Corrected position of `breve_hookabove`
- Adjusted alignment zones
- Renamed narrow acutecomb variants `acutecomb.001` to `acutecomb.narrow`
- Added `gravecomb.narrow`
- Fixed contour directons
- Added `_ringacute` in `aringacute` italic, decomposed and merged
`_ringacute`
- Decomposed overlapping components
Structure:
- Renames `/src` directory to `/sources`, which includes the build script
and the Glyphs sources
- Renames `/binaries` directory to `/fonts` adding TTF fonts as a
`/fonts/ttf` directory separate from webfonts
- Adds `AUTHORS.txt` for copyright-holding authors
- Adds `CONTRIBUTORS.txt` for contributors who are not copyright authors
- Adds explicit description file
- Adds `requirements.txt` for python 3.x `pip3 install -r requirements.txt`
- Moves old version binaries to an `/old` directory
- Removes dash from `Public-Sans` in source files to `PublicSans`
Build:
- Add weight class fix in build script
- Added new fontbakery tools to `requirements.txt` and build script
- Uses new locations
- Removes autohinting
- Updates build process to build with Docker
- Adds gftools gen-stat to the build process, as well as a stat.yaml file
4.33.3 (released 2022-04-26)
----------------------------
- [designspaceLib] Fixed typo in ``deepcopyExceptFonts`` method, preventing font
references to be transferred
dataclass's ``__post_init__`` magic method
4.33.2 (released 2022-04-22)
----------------------------
- [otBase] Make logging less verbose when harfbuzz fails to serialize. Do not exit
at the first failure but continue attempting to fix offset overflow error using
the pure-python serializer even when the ``USE_HARFBUZZ_REPACKER`` option was
explicitly set to ``True``. This is normal with fonts with relatively large
tables, at least until hb.repack implements proper table splitting.
4.33.1 (released 2022-04-22)
----------------------------
- [otlLib] Put back the ``FONTTOOLS_GPOS_COMPACT_MODE`` environment variable to fix
regression in ufo2ft (and thus fontmake) introduced with v4.33.0
This is deprecated and will be removed one ufo2ft gets updated to use the new
config setup.
4.33.0 (released 2022-04-21)
----------------------------
- [OS/2 / merge] Automatically recalculate ``OS/2.xAvgCharWidth`` after merging
fonts with ``fontTools.merge``
- [misc/config] Added ``fontTools.misc.configTools`` module, a generic configuration
system
Added ``fontTools.config`` module, a fontTools-specific configuration
system using ``configTools`` above.
Attached a ``Config`` object to ``TTFont``.
- [otlLib] Replaced environment variable for GPOS compression level with an
equivalent option using the new config system.
- [designspaceLib] Incremented format version to 5.0
Added discrete axes, variable fonts, STAT information, either design- or
user-space location on instances.
Added ``fontTools.designspaceLib.split`` module to split a designspace
into sub-spaces that interpolate and that represent the variable fonts
listed in the document.
Made instance names optional and allow computing them from STAT data instead.
Added ``fontTools.designspaceLib.statNames`` module.
Allow instances to have the same location as a previously defined STAT label.
Deprecated some attributes:
``SourceDescriptor``: ``copyLib``, ``copyInfo``, ``copyGroups``, ``copyFeatures``.
``InstanceDescriptor``: ``kerning``, ``info``; ``glyphs``: use rules or sparse
sources.
For both, ``location``: use the more explicit designLocation.
Note: all are soft deprecations and existing code should keep working.
Updated documentation for Python methods and the XML format.
- [varLib] Added ``build_many`` to build several variable fonts from a single
designspace document
Added ``fontTools.varLib.stat`` module to build STAT tables from a designspace
document.
- [otBase] Try to use the Harfbuzz Repacker for packing GSUB/GPOS tables when
``uharfbuzz`` python bindings are available
"fontTools.ttLib.tables.otBase:USE_HARFBUZZ_REPACKER" config option to ``False``.
If the option is set explicitly to ``True`` but ``uharfbuzz`` can't be imported
or fails to serialize for any reasons, an error will be raised (ImportError or
uharfbuzz errors).
- [CFF/T2] Ensure that ``pen.closePath()`` gets called for CFF2 charstrings
Handle implicit CFF2 closePath within ``T2OutlineExtractor``
4.32.0 (released 2022-04-08)
----------------------------
- [otlLib] Disable GPOS7 optimization to work around bug in Apple CoreText.
Always force Chaining GPOS8 for now
- [glifLib] Added ``outputImpliedClosingLine=False`` parameter to ``Glyph.draw()``,
to control behaviour of ``PointToSegmentPen`` (6b4e2e7).
- [varLib.interpolatable] Check for wrong contour starting point
- [cffLib] Remove leftover ``GlobalState`` class and fix calls to ``TopDictIndex()``
- [instancer] Clear ``AxisValueArray`` if it is empty after instantiating
4.31.2 (released 2022-03-22)
----------------------------
- [varLib] fix instantiation of GPOS SinglePos values
4.31.1 (released 2022-03-18)
----------------------------
- [subset] fix subsetting OT-SVG when glyph id attribute is on the root ``<svg>``
element
4.31.0 (released 2022-03-18)
----------------------------
- [ttCollection] Fixed 'ResourceWarning: unclosed file' warning
- [varLib.merger] Handle merging SinglePos with valueformat=0
- [ttFont] Update glyf's glyphOrder when calling TTFont.setGlyphOrder()
- [ttFont] Added ``ensureDecompiled`` method to load all tables irrespective
of the ``lazy`` attribute
- [otBase] Added ``iterSubTable`` method to iterate over BaseTable's children of
type BaseTable; useful for traversing a tree of otTables
4.30.0 (released 2022-03-10)
----------------------------
- [varLib] Added debug logger showing the glyph name for which ``gvar`` is built
- [varLib.errors] Fixed undefined names in ``FoundANone`` and ``UnsupportedFormat``
exceptions (ac4d5611).
- [otlLib.builder] Added ``windowsNames`` and ``macNames`` (bool) parameters to the
``buildStatTabe`` function, so that one can select whether to only add one or both
of the two sets
- [t1Lib] Added the ability to recreate PostScript stream
- [name] Added ``getFirstDebugName``, ``getBest{Family,SubFamily,Full}Name`` methods
4.2.1
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.
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)
The Un-fonts come from the HLaTeX as type1 fonts in 1998 by
Koaunghi Un, he made type1 fonts to use with Korean TeX
(HLaTeX) in the late 1990's and released it under the GPL
license. They were converted to TrueType with the FontForge
(PfaEdit) by Won-kyu Park in 2003. Extra families (10 fonts):
UnPen, UnPenheulim: script UnTaza: typewriter style UnBom:
decorative UnShinmun UnYetgul: old Korean printing style
UnJamoSora, UnJamoNovel, UnJamoDotum, UnJamoBatang
The Un-fonts come from the HLaTeX as type1 fonts in 1998 by
Koaunghi Un, he made type1 fonts to use with Korean TeX
(HLaTeX) in the late 1990's and released it under the GPL
license. They were converted to TrueType with the FontForge
(PfaEdit) by Won-kyu Park in 2003. Core families (9 fonts):
UnBatang, UnBatangBold: serif UnDotum, UnDotumBold: sans-serif
UnGraphic, UnGraphicBold: sans-serif style UnPilgi,
UnPilgiBold: script UnGungseo: cursive, brush-stroke
The package contains some Chinese font metrics (JFM, VF, etc)
for upTeX engine, together with a simple DVIPDFMx font mapping
of Fandol fonts for DVIPDFMx.
These are metrics to use existing Chinese TrueType fonts in
workflows that use LaTeX & dvipdfmx, or pdfLaTeX. The fonts
themselves are not included in the package. Six font families
are supported: kai, song, lishu, fangsong, youyuan and hei. Two
encodings (GBK and UTF-8) are supported.
3.21
* Fix performance regression introduced in version 3.19.
* More reliably support TrueType based variable fonts in harf mode.
3.20
* Two critical bugs related to luaotfload-tool and the cache location have
been corrected.
3.19
* When used with LuaTeX 1.15.0 or newer, variable fonts are supported
when using the harf shaper too.
* A new algorithm for selecting fonts based on font family names allows
to more reliably load fonts based on their family name.
* The compiled font database gets compressed to reduce disk space and
improve performance on newer systems.
* Text automatically gets normalized to Unicode's NFC before shaping.
This improves rendering for text written in decomposed forms for many
fonts. This can be turned off by passing the -normalize font feature.
* The fontloader has been synced with the context code from 2022-02-24.
This fixes some broken rendering of TrueType based variable fonts.
* A number of small bugfixes.
JuliaMono is a monospaced typeface designed for programming in text
editing environments that require a wide range of specialist and
technical Unicode characters.
Version 2.7 of mf2pt1 supports new --output-dir and --save-temps options
for controlling where intermediate and output files are written and if
intermediate files should be retained after execution completes. It also
allows helper programs (mpost, t1asm, and fontforge) to be overridden,
including with arguments, via environment variables.
Two CTAN packages japanese-otf and japanese-otf-uptex are merged into this
package.
Now japanese-otf-uptex is obsolete. New features are followings:
japanese-otf:
* supported halfwidth Katakana in \UTF{} (TeX JP org extension)
* shrunk data size of virtual fonts (TeX JP org extension)
* set FONTDIR RT in OFM for pTeX vertical writing. (TeX JP org extension)
They work with dvips 2022.1 (r62223 or later).
japanese-otf-uptex: v0.27
* introduced multi-weight virtual fonts for Chinese/Korean plain texts.
* update samples.
* there is a new \caution command (dangerous bend).
* Chars selection now use the \texorpdfstring command and the
\TakeFourierOrnament command have been replaced by \FourierOrns.
* chars in the type1 fonts are now in place of digits or letters like
in the OTF font.
* Add `SwashFont` and `BoldSwashFont` features to support LaTeX's
now-builtin `\textsw` and `\swshape` commands, with matching
`SwashFeatures` and `BoldSwashFeatures`.
A simple implementation that has scope to get more complex if need be.
* Remove some legacy code that extended the NFSS in ways that are now
handled by LaTeX2e natively.
* Long neglected updates through various Github Issues and pull requests.
Thanks for your patience with the delays.
- Purisa, Sawasdee: now can be embeded as installable in PDF.
- TlwgTypo, TlwgTypist: fix uneven widths of some glyphs.
- TlwgTypo, TlwgTypist, TlwgMono, TlwgTypewriter: clear PANOSE to use
calculated values, so as to get listed in gvim.
(Thanks Chaiwat Suttipongsakul for the report.)
- Norasi: add 'onum' and 'smcp' OpenType features for access to
old style figures and small caps glyphs.
- LaTeX: Add old style figures and small caps supports for Norasi.
Alan Coopersmith (4):
Fix spelling/wording issues
gitlab CI: add a basic build test
Build xz tarballs instead of bzip2
mkfontscale 1.2.2
Maya Rashish (2):
Use case insensitive comparison for T1 font weight
Add "ExtraBold" as a valid T1 font weight.
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()
This release contains numerous fixes and feature updates since the last release.
Major updates:
Python plugin support (#4642, #4682, #4671) @skef
Overhauled resource/appearance management (#4704) @skef
Merge/Simplify improvements (#4567, #4697) @linusromer
Updated Unicode support to Unicode 14.0.0, with nameslist functionality now directly integrated. (#4810) @jtanx
Add Points Of Inflection / Balance / Harmonize (#4900) @linusromer
Mac bundle/startup fixes (#4827) @jtanx
Language system tag list/script range/feature list updates (#4561, #4852, #4854, #4855) @dscorbett
Build changes:
The minimum supported Python version is now Python 3.6
Libuninameslist is no longer used or required
FontForge is now compiled with -Wall by default
4.0.1
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)
Changes in version 5.4:
* Fixed handling of PDF files with already existing outlines
in pdfoutline.
* Added a script for extracting outlines from PDF files
(pdf-extract-outline).
* Pango is always used to draw glyphs, options -p and --use-pango are
accepted but ignored.
* Fixed possible outline corruption in pdfoutline with some versions
of PDF::API2 library (Yifeng Li).
* Various code and build system cleanups.
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 typdef’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
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.