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.