🌐 AI搜索 & 代理 主页
Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
92 commits
Select commit Hold shift + click to select a range
8caff88
Remove ttconv backwards-compatibility code
anntzer May 3, 2025
c44db77
Fix center of rotation with rotation_mode='anchor'
Nov 26, 2024
f1cdc19
Merge pull request #29199 from WPurre/fixing-rotation-bug
QuLogic Jun 10, 2025
41cc933
Remove fallback code for glyph indices
QuLogic Jun 12, 2025
7dafe63
Merge pull request #30145 from QuLogic/remove-ttconv
QuLogic Jun 19, 2025
67d1a02
Merge pull request #30168 from QuLogic/no-glyph-fallback
QuLogic Jun 19, 2025
bb9aae4
Merge branch 'main' into text-overhaul
QuLogic Jun 19, 2025
a7fd524
Merge branch 'main' into text-overhaul
QuLogic Jul 7, 2025
389373e
ci: Preload existing test images from text-overhaul-figures branch
QuLogic Jun 30, 2025
4d47644
Merge pull request #30231 from QuLogic/preload-ci
QuLogic Jul 8, 2025
a018606
Add typing to AFM parser
QuLogic Jun 3, 2025
aff20cf
ci: Fix image preload with multiple conflicts
QuLogic Jul 8, 2025
572540d
Merge pull request #30274 from QuLogic/fix-preload
QuLogic Jul 9, 2025
f231f2e
Merge pull request #30134 from QuLogic/afm-typing
QuLogic Jul 9, 2025
7b4d725
Remove kerning_factor from tests
QuLogic Mar 28, 2025
8255ae2
Set text hinting to defaults
QuLogic Apr 9, 2025
89c054d
Update FreeType to 2.13.3
QuLogic Mar 27, 2025
7787153
Bump minimum meson-python to 0.13.2
QuLogic Apr 23, 2025
972a821
ci: Purge Strawberry Perl from Windows builders
QuLogic Jul 2, 2025
8839576
Merge branch 'main' into text-overhaul
QuLogic Jul 16, 2025
5fc9559
Don't set a default size for FT2Font
QuLogic Jul 16, 2025
7dae1e5
Merge pull request #30319 from QuLogic/ft2font-size
tacaswell Jul 16, 2025
7a628e5
Deprecate font_manager.is_opentype_cff_font
QuLogic Jul 18, 2025
42c108a
Deprecate setting text kerning factor to any non-None value
QuLogic Jul 17, 2025
3a0a773
TYP: Make glyph indices distinct from character codes
QuLogic Jun 3, 2025
c6e6904
Fix kerning of mathtext
QuLogic Jun 6, 2025
733cd7d
Update test images for previous changes
QuLogic Jul 24, 2025
56308af
Merge pull request #30143 from QuLogic/character-glyph-types
tacaswell Jul 31, 2025
fa62956
Split font opening/closing out of FT2Font constructor/destructor
QuLogic Jul 16, 2025
db17baf
Make PyFT2Font a subclass of FT2Font
QuLogic Jul 17, 2025
f8bd156
Merge branch 'main' into text-overhaul
QuLogic Aug 21, 2025
904fc82
Merge branch 'main' into text-overhaul
QuLogic Aug 21, 2025
ad32f0d
DOC: Fix missing references on text-overhaul branch
QuLogic Aug 21, 2025
9766cbd
Merge branch 'main' into text-overhaul
QuLogic Aug 21, 2025
584b1fd
Remove version from FreeType wrap file
QuLogic Aug 26, 2025
0635d3a
Add libraqm and its dependencies to build
QuLogic Dec 19, 2024
b0ded3a
Implement text shaping with libraqm
QuLogic Feb 26, 2025
9813523
Implement font fallback for libraqm
QuLogic Apr 3, 2025
b36b97f
DOC: Add What's New entry for complex text layout
QuLogic Aug 8, 2025
04c8eef
ci: Ignore coverage data from subprojects and generated files
QuLogic Aug 26, 2025
258de53
pdf: Simplify Type 3 font character encoding
QuLogic Aug 30, 2025
bb37cf9
Merge pull request #30520 from QuLogic/pdf-simplify-type3
QuLogic Sep 8, 2025
f630b48
Use glyph indices for font tracking in vector formats
QuLogic Jun 5, 2025
f192c87
pdf/ps: Track full character map in CharacterTracker
QuLogic Sep 3, 2025
d56936b
Merge pull request #30335 from QuLogic/vector-glyphs
tacaswell Sep 16, 2025
43d5d4e
Merge pull request #30566 from QuLogic/full-charmap-tracking
tacaswell Sep 17, 2025
3e97c0d
pdf: Merge loops for single byte text chunk output
QuLogic Aug 29, 2025
c8369ff
Merge branch 'main' into text-overhaul
QuLogic Sep 19, 2025
b236488
MNT: Ignore differing stub for GlyphIndexType
QuLogic Sep 18, 2025
0da372b
Merge pull request #30579 from QuLogic/fix-text-overhaul-ci
QuLogic Sep 19, 2025
105f9eb
Merge pull request #30567 from QuLogic/pdf-loop-merge
QuLogic Sep 19, 2025
18ffa02
Add os.PathLike support to FT2Font constructor, and FontManager
QuLogic Jul 25, 2025
7ce8eae
Add language parameter to Text objects
QuLogic Mar 22, 2025
44c17bc
Merge pull request #29794 from QuLogic/text-language
QuLogic Sep 20, 2025
b35e5cd
ft2font: Split layouting from set_text
QuLogic May 23, 2025
70563bd
Merge pull request #30595 from QuLogic/libraqm-refactor
QuLogic Sep 25, 2025
1b3ba17
Merge pull request #30573 from QuLogic/font-pathlike
tacaswell Sep 25, 2025
e422def
Remove dead code from Auto{Height,Width}Char
QuLogic Apr 18, 2025
3ba2c13
Fix auto-sized glyphs with BaKoMa fonts
QuLogic Apr 17, 2025
b6be596
Merge pull request #29936 from QuLogic/bakoma-sizes
QuLogic Sep 25, 2025
b70fb88
pdf: Improve text with characters outside embedded font limits
QuLogic Sep 3, 2025
1c4af68
pdf: Correct Unicode mapping for out-of-range font chunks
QuLogic Sep 3, 2025
6cedcf7
TST: Add emoji to multi-font text
QuLogic Sep 3, 2025
c908bbf
DOC: Add a release note for PDF font embedding fixes
QuLogic Sep 19, 2025
a1ed4ef
Merge pull request #30512 from QuLogic/pdf-text-subsets
QuLogic Sep 26, 2025
50f76ff
Deduplicate `CharacterTracker.track` implementation
QuLogic Sep 27, 2025
8274e17
pdf/ps: Compress subsetted font blocks
QuLogic Sep 27, 2025
70dc388
pdf: Fix first-block characters using multiple glyph representations
QuLogic Sep 27, 2025
df670cf
pdf: Support multi-character glyphs when subsetting
QuLogic Sep 27, 2025
ed5e074
ps: Fix font subset handling
QuLogic Sep 30, 2025
ed4ca6c
Merge pull request #30608 from QuLogic/simpler-track
QuLogic Oct 2, 2025
972a688
Add font feature API to FontProperties and Text
QuLogic Mar 1, 2025
a6ac58f
Merge pull request #29695 from QuLogic/font-features
QuLogic Oct 3, 2025
a0fb5cf
Merge branch 'main' into text-overhaul
QuLogic Oct 23, 2025
9597991
ft2font: Add a wrapper around layouting for vector usage
QuLogic Sep 24, 2025
a47bd3f
Remove forced fallback from FT2Font::load_char
QuLogic Dec 18, 2024
707f384
Merge branch 'main' into text-overhaul
QuLogic Oct 29, 2025
bd17cd4
Use libraqm for text in vector outputs
QuLogic May 24, 2025
4a99a83
Fix spacing in `r"$\max f$"`.
anntzer Nov 1, 2025
17428e3
Tweak sub/superscript spacing implementation.
anntzer Nov 1, 2025
e952f23
Merge pull request #30715 from anntzer/opspace
QuLogic Nov 6, 2025
ad0b47a
Merge pull request #30627 from QuLogic/no-force-fallback
tacaswell Nov 6, 2025
950fa0f
Merge pull request #30607 from QuLogic/libraqm-vector
QuLogic Nov 20, 2025
daae68a
Expose face index when loading fonts
QuLogic Jul 18, 2025
b839f87
Parse data from all fonts within a collection
QuLogic Jul 18, 2025
6d2ae67
Implement loading of any font in a collection
QuLogic Jul 25, 2025
ea80bbb
pdf/ps: Support any font in a collection
QuLogic Jul 25, 2025
e991790
pgf: Support any font in a collection
QuLogic Jul 25, 2025
9c20b0c
DOC: Add what's new note for TTC loading
QuLogic Oct 31, 2025
b2aa1f2
Update test images for previous changes
QuLogic Sep 26, 2025
e84ce2b
Merge pull request #30334 from QuLogic/ttc-loading
ksunden Dec 4, 2025
4f40113
Update test images for font/text overhaul
QuLogic Sep 2, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
20 changes: 20 additions & 0 deletions .appveyor.yml
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,26 @@ install:
- micromamba env create -f environment.yml python=%PYTHON_VERSION% pywin32
- micromamba activate mpl-dev

before_test:
- git config --global user.name 'Matplotlib'
- git config --global user.email 'nobody@matplotlib.org'
- git fetch https://github.com/QuLogic/matplotlib.git text-overhaul-figures:text-overhaul-figures
- git merge --no-commit text-overhaul-figures || true
# If there are any conflicts in baseline images, then pick "ours",
# which should be the updated images in the PR.
- ps: |
$conflicts = git diff --name-only --diff-filter=U `
lib/matplotlib/tests/baseline_images `
lib/mpl_toolkits/*/tests/baseline_images
if ($conflicts) {
git checkout --ours -- $conflicts
git add -- $conflicts
}
git status
# If committing fails, there were conflicts other than the baseline images,
# which should not be allowed to happen, and should fail the build.
- git commit -m "Preload test images from branch text-overhaul-figures"

test_script:
# Now build the thing..
- set LINK=/LIBPATH:%cd%\lib
Expand Down
4 changes: 4 additions & 0 deletions .github/workflows/cibuildwheel.yml
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,10 @@ jobs:
name: cibw-sdist
path: dist/

- name: Purge Strawberry Perl
if: startsWith(matrix.os, 'windows-')
run: Remove-Item -Recurse C:\Strawberry

- name: Build wheels for CPython 3.14
uses: pypa/cibuildwheel@9c00cb4f6b517705a3794b22395aedc36257242c # v3.2.1
with:
Expand Down
28 changes: 24 additions & 4 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,25 @@ jobs:
fetch-depth: 0
persist-credentials: false

- name: Preload test images
run: |
git config --global user.name 'Matplotlib'
git config --global user.email 'nobody@matplotlib.org'
git fetch https://github.com/QuLogic/matplotlib.git text-overhaul-figures:text-overhaul-figures
git merge --no-commit text-overhaul-figures || true
# If there are any conflicts in baseline images, then pick "ours",
# which should be the updated images in the PR.
conflicts=$(git diff --name-only --diff-filter=U \
lib/matplotlib/tests/baseline_images \
lib/mpl_toolkits/*/tests/baseline_images)
if [ -n "${conflicts}" ]; then
git checkout --ours -- ${conflicts}
git add -- ${conflicts}
fi
# If committing fails, there were conflicts other than the baseline images,
# which should not be allowed to happen, and should fail the build.
git commit -m 'Preload test images from branch text-overhaul-figures'

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0
with:
Expand Down Expand Up @@ -371,13 +390,14 @@ jobs:
if [[ "${{ runner.os }}" != 'macOS' ]]; then
LCOV_IGNORE_ERRORS=',' # do not ignore any lcov errors by default
if [[ "${{ matrix.os }}" = ubuntu-24.04 || "${{ matrix.os }}" = ubuntu-24.04-arm ]]; then
# filter mismatch and unused-entity errors detected by lcov 2.x
LCOV_IGNORE_ERRORS='mismatch,unused'
# filter mismatch errors detected by lcov 2.x
LCOV_IGNORE_ERRORS='mismatch'
fi
lcov --rc lcov_branch_coverage=1 --ignore-errors $LCOV_IGNORE_ERRORS \
--capture --directory . --output-file coverage.info
--capture --directory . --exclude $PWD/subprojects --exclude $PWD/build \
--output-file coverage.info
lcov --rc lcov_branch_coverage=1 --ignore-errors $LCOV_IGNORE_ERRORS \
--output-file coverage.info --extract coverage.info $PWD/src/'*' $PWD/lib/'*'
--output-file coverage.info --extract coverage.info $PWD/src/'*'
lcov --rc lcov_branch_coverage=1 --ignore-errors $LCOV_IGNORE_ERRORS \
--list coverage.info
find . -name '*.gc*' -delete
Expand Down
4 changes: 2 additions & 2 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,13 @@ repos:
- id: check-docstring-first
exclude: lib/matplotlib/typing.py # docstring used for attribute flagged by check
- id: end-of-file-fixer
exclude_types: [svg]
exclude_types: [diff, svg]
- id: mixed-line-ending
- id: name-tests-test
args: ["--pytest-test-first"]
- id: no-commit-to-branch # Default is master and main.
- id: trailing-whitespace
exclude_types: [svg]
exclude_types: [diff, svg]
- repo: https://github.com/pre-commit/mirrors-mypy
rev: v1.15.0
hooks:
Expand Down
46 changes: 46 additions & 0 deletions LICENSE/LICENSE_FREETYPE
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
FREETYPE LICENSES
-----------------

The FreeType 2 font engine is copyrighted work and cannot be used
legally without a software license. In order to make this project
usable to a vast majority of developers, we distribute it under two
mutually exclusive open-source licenses.

This means that *you* must choose *one* of the two licenses described
below, then obey all its terms and conditions when using FreeType 2 in
any of your projects or products.

- The FreeType License, found in the file `docs/FTL.TXT`, which is
similar to the original BSD license *with* an advertising clause
that forces you to explicitly cite the FreeType project in your
product's documentation. All details are in the license file.
This license is suited to products which don't use the GNU General
Public License.

Note that this license is compatible to the GNU General Public
License version 3, but not version 2.

- The GNU General Public License version 2, found in
`docs/GPLv2.TXT` (any later version can be used also), for
programs which already use the GPL. Note that the FTL is
incompatible with GPLv2 due to its advertisement clause.

The contributed BDF and PCF drivers come with a license similar to
that of the X Window System. It is compatible to the above two
licenses (see files `src/bdf/README` and `src/pcf/README`). The same
holds for the source code files `src/base/fthash.c` and
`include/freetype/internal/fthash.h`; they were part of the BDF driver
in earlier FreeType versions.

The gzip module uses the zlib license (see `src/gzip/zlib.h`) which
too is compatible to the above two licenses.

The files `src/autofit/ft-hb.c` and `src/autofit/ft-hb.h` contain code
taken almost verbatim from the HarfBuzz file `hb-ft.cc`, which uses
the 'Old MIT' license, compatible to the above two licenses.

The MD5 checksum support (only used for debugging in development
builds) is in the public domain.


--- end of LICENSE.TXT ---
42 changes: 42 additions & 0 deletions LICENSE/LICENSE_HARFBUZZ
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
HarfBuzz is licensed under the so-called "Old MIT" license. Details follow.
For parts of HarfBuzz that are licensed under different licenses see individual
files names COPYING in subdirectories where applicable.

Copyright © 2010-2022 Google, Inc.
Copyright © 2015-2020 Ebrahim Byagowi
Copyright © 2019,2020 Facebook, Inc.
Copyright © 2012,2015 Mozilla Foundation
Copyright © 2011 Codethink Limited
Copyright © 2008,2010 Nokia Corporation and/or its subsidiary(-ies)
Copyright © 2009 Keith Stribley
Copyright © 2011 Martin Hosken and SIL International
Copyright © 2007 Chris Wilson
Copyright © 2005,2006,2020,2021,2022,2023 Behdad Esfahbod
Copyright © 2004,2007,2008,2009,2010,2013,2021,2022,2023 Red Hat, Inc.
Copyright © 1998-2005 David Turner and Werner Lemberg
Copyright © 2016 Igalia S.L.
Copyright © 2022 Matthias Clasen
Copyright © 2018,2021 Khaled Hosny
Copyright © 2018,2019,2020 Adobe, Inc
Copyright © 2013-2015 Alexei Podtelezhnikov

For full copyright notices consult the individual files in the package.


Permission is hereby granted, without written agreement and without
license or royalty fees, to use, copy, modify, and distribute this
software and its documentation for any purpose, provided that the
above copyright notice and the following two paragraphs appear in
all copies of this software.

IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGE.

THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
Copyright (c) 2018 The Meson development team
The MIT License (MIT)

Copyright © 2015 Information Technology Authority (ITA) <foss@ita.gov.om>
Copyright © 2016-2023 Khaled Hosny <khaled@aliftype.com>

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
Loading
Loading