Skip to main content

FontCollector

FontCollector - Version FontCollector - Python Version FontCollector - Downloads FontCollector - Coverage FontCollector - mypy

FontCollector for Advanced SubStation Alpha file. This tool allows to recover and/or mux the fonts necessary in an mkv.

Installation

pip install FontCollector

PS: If you get the error error: externally-managed-environment (PEP 668), you might wanna use pipx instead of pip.

Dependencies

FontCollector Usage

$ fontcollector --help
usage: fontcollector [-h] [--input INPUT [INPUT ...]] [-mkv MKV] [--use-ass-in-mkv] [--output OUTPUT] [-mkvtoolnix MKVTOOLNIX] [--delete-fonts] [--additional-fonts ADDITIONAL_FONTS [ADDITIONAL_FONTS ...]]
                     [--additional-fonts-recursive ADDITIONAL_FONTS_RECURSIVE [ADDITIONAL_FONTS_RECURSIVE ...]] [--exclude-system-fonts] [--collect-draw-fonts] [--dont-convert-variable-to-collection] [--logging [LOGGING]]

FontCollector for Advanced SubStation Alpha file.

options:
  -h, --help            show this help message and exit
  --input INPUT [INPUT ...], -i INPUT [INPUT ...]
                        Subtitles file. Must be an ASS file/directory. You can specify more than one .ass file/path.
  -mkv MKV
                        Video where the fonts will be merge. Must be a Matroska file.
  --use-ass-in-mkv, -ass-mkv
                        If specified, it will use the .ass file muxed to the mkv and collect those fonts and mux them to the mkv. If not specified, it will do nothing.
  --output OUTPUT, -o OUTPUT
                        Destination path of the font. If -o and -mkv aren't specified, it will be the current path.
  -mkvtoolnix MKVTOOLNIX
                        Path to the MKVToolNix folder if not in variable environments. If -mkv is not specified, it will do nothing.
  --delete-fonts, -d
                        If -d is specified, it will delete the font attached to the mkv before merging the new needed font. If -mkv is not specified, it will do nothing.
  --additional-fonts ADDITIONAL_FONTS [ADDITIONAL_FONTS ...], -add-fonts ADDITIONAL_FONTS [ADDITIONAL_FONTS ...]
                        May be a directory containing font files or a single font file. You can specify more than one additional-fonts. If it is a directory, it won't search recursively for fonts
  --additional-fonts-recursive ADDITIONAL_FONTS_RECURSIVE [ADDITIONAL_FONTS_RECURSIVE ...], -add-fonts-rec ADDITIONAL_FONTS_RECURSIVE [ADDITIONAL_FONTS_RECURSIVE ...]
                        Path to font directory, which will be recursively searched for fonts.
  --exclude-system-fonts
                        If specified, FontCollector won't use the system font to find the font used by an .ass file.
  --collect-draw-fonts
                        If specified, FontCollector will collect the font used by the draw. For more detail when this is usefull, see: https://github.com/libass/libass/issues/617
  --dont-convert-variable-to-collection
                        If specified, FontCollector won't convert variable font to a font collection. see: https://github.com/libass/libass/issues/386
  --logging [LOGGING], -log [LOGGING]
                        Destination path of log. If it isn't specified, it will be YYYY-MM-DD--HH-MM-SS_font_collector.log.

Examples

Recover fonts from 2 .ass files and save them in the current folder

fontCollector -i "file1.ass" "file2.ass"

Take all the .ass files from the current folder and save the font in the current folder

fontCollector -i .

Mux font from .ass file into an mkv

fontCollector -i "file1.ass" -mkv "example.mkv" -mkvtoolnix "C:\Program Files\MKVToolNix"

Mux the font from the .ass file into an mkv and delete the currently attached fonts.

fontCollector -i "file1.ass" -mkv "example.mkv" -mkvtoolnix "C:\Program Files\MKVToolNix" -d

MKVFontValidator Usage

$ mkvfontvalidator --help
usage: mkvfontvalidator [-h] -mkv MKV [-mkvtoolnix MKVTOOLNIX] [--need-draw-fonts] [--delete-fonts-not-used] [--logging [LOGGING]]

MKV font validator for Advanced SubStation Alpha file.

options:
  -h, --help
                        show this help message and exit
  -mkv MKV
                        The video file to be verified. Must be a Matroska file.
  -mkvtoolnix MKVTOOLNIX
                        Path to the MKVToolNix folder if not in variable environments.
  --need-draw-fonts
                        If specified, MKVFontValidator will report a error if a font used in a draw isn't muxed to the mkv. For more detail when this is usefull, see: https://github.com/libass/libass/issues/617
  --delete-fonts-not-used, -d
                        If specified, MKVFontValidator will remove the fonts that aren't used by the subtitle(s) of the mkv file.
  --logging [LOGGING], -log [LOGGING]
                        Destination path of log. If it isn't specified, it will be YYYY-MM-DD--HH-MM-SS_mkvfontvalidator.log.

Variable Font

Since Libass does not support variable font, this tool will automatically generate a OpenType Font Collection. The generated collection is designed to simulate how VSFilter/GDI handles variable font.

Acknowledgments

  • fontmerge for the idea to automatically merge the font into the mkv.
  • Myaamori-Aegisub-Scripts Without this tool, I probably could never have created the fontCollector. I got a lot of inspiration from his work.
  • PyonFX I inspired myself from his setup.py to create mine.
  • rcombs for her help with how VSFilter pick font when faux-bold need to be applied.
  • assfc for all the idea behind the font_loader.
  • Christopher Leung for his help on how GDI handle variable font.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fontcollector-4.0.3.tar.gz (54.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fontcollector-4.0.3-py3-none-any.whl (70.2 kB view details)

Uploaded Python 3

File details

Details for the file fontcollector-4.0.3.tar.gz.

File metadata

  • Download URL: fontcollector-4.0.3.tar.gz
  • Upload date:
  • Size: 54.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for fontcollector-4.0.3.tar.gz
Algorithm Hash digest
SHA256 8dca9a33e525b69e86c235940a8504543d5e4f97010af56928e97ab8eff086ff
MD5 8dd89295c16c2dcfb289f7b08ee05ec7
BLAKE2b-256 cafc441cd0d31be7a7de5b26198246121234021e4b156b3c18066cc21e3b992b

See more details on using hashes here.

Provenance

The following attestation bundles were made for fontcollector-4.0.3.tar.gz:

Publisher: publish_to_pypi.yml on moi15moi/FontCollector

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fontcollector-4.0.3-py3-none-any.whl.

File metadata

  • Download URL: fontcollector-4.0.3-py3-none-any.whl
  • Upload date:
  • Size: 70.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for fontcollector-4.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 78a3db940d11c7829d2c3f1d3620c4a32135e2343c4b623e7de2b9af9f0cfe1e
MD5 101129bec4e54c23f35b4c94a4761a88
BLAKE2b-256 c9768dbd3ebaa10af784204e73125002c16790f485679bfc53fab9c13fae09ea

See more details on using hashes here.

Provenance

The following attestation bundles were made for fontcollector-4.0.3-py3-none-any.whl:

Publisher: publish_to_pypi.yml on moi15moi/FontCollector

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

4.0.3 This release

2 files

4.0.2

2 files

4.0.1

2 files

4.0.0

2 files

3.1.2

2 files

3.1.1

2 files

3.1.0

2 files

3.0.0

2 files

2.1.4

2 files

2.1.2

2 files

2.1.1

2 files

2.1.0

2 files

2.0.5

2 files

2.0.4

2 files

2.0.3

2 files

2.0.2

2 files

2.0.1

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page