A tool for organising and batch exporting SVG emoji sets.

Dzuk 4a733e3734 New size and bare image format path variables 5 years ago
docs 8f2aa67cf0 New size and bare image format path variables 5 years ago
orx cd8baff512 Some code and documentation improvements 5 years ago
.gitignore 0d667ec5f5 the beginnings of parameters, lots more documentation 5 years ago
README.md 8f2aa67cf0 New size and bare image format path variables 5 years ago
cache.py c5f9b9b759 Add Cache class 5 years ago
check.py 9e63a9bff8 Check directly with the cache at export time 5 years ago
dest_paths.py 8f2aa67cf0 New size and bare image format path variables 5 years ago
emoji.py 43ef20f9f6 Some hacky refactoring, some commenting 5 years ago
exception.py 43ef20f9f6 Some hacky refactoring, some commenting 5 years ago
export.py 179ee6fede Add support for emoji caching in the check and export steps. 5 years ago
export_task.py 984bd7204a Improved code readability a little 5 years ago
export_thread.py 9be109cd30 Ensure out directories are created for exports copying files from cache 5 years ago
files.py e09027009a Optimised SVGs 5 years ago
image_proc.py ce9f578c35 EXIF handling refactoring, lots of bug fixes 5 years ago
jsonutils.py 7eb5d3ec5e 0.1.0 rc 6 years ago
license.txt 8cc440e598 Changed license to CNPL 5 years ago
log.py 37dfe25f88 Loading bars with elapsed time, orcs, more log changes 5 years ago
orxport.py 179ee6fede Add support for emoji caching in the check and export steps. 5 years ago
orxporter_logo.png 2ca402d6b1 Tidying stuff 5 years ago
requirements.txt f7c15ce233 Add a requirements.txt file with PyPI packages 5 years ago
svg.py 8aacc80e11 Rewrite svg.translate_color, add func to return which colours changed 5 years ago
util.py 11c94b7345 Refactor color palette code to utility function 5 years ago

README.md

Orxporter logo with 'orxporter' next to it, in white against a lime green background.

orxporter is a rich toolkit for organising and exporting an SVG-based emoji set. It has a system for storing emoji metadata and making large batch export operations with that metadata, including multi-format and multi-resolution batch rendering, automated recolouring tools, unicode and shortcode filename export, EXIF metadata embedding, JSON metadata export and more.

Disclaimer

Orxporter was created as a rewrite of scripts used to automate some of the workflow for Mutant Standard. Its main purpose remains to be the primary build tool for Mutant Standard packages, and so its features are mainly focused on a single use case.

That said, there has been interest in this tool, as it allows custom builds or modifications of Mutant Standard packages, and is generic enough to work for similar projects.

We welcome suggestions, feature requests and collaboration in order to make orxporter more useful for independent emoji creators and end-users. We follow Mutant Standard's code of conduct.

Features

  • A custom declarative language for defining your emoji semantics and metadata
  • Color remapping
  • Outputting emoji both as shortcode-named files (ie. 'ice_cream') and unicode codepoint-named files (ie. '1f368')
  • Export to SVG, PNG, Lossless WebP, Lossless AVIF and FLIF
  • Optional lossless crushing of SVG and PNG files
  • Supports multiple SVG renderers (rendersvg, Inkscape and ImageMagick)
  • Output options including emoji filtering, export directory structure and filenames
  • JSON output of emoji set metadata
  • SVG and EXIF licensing metadata embedding
  • Optional caching to save time on re-exporting
  • Multithreading

Prerequisites

  • Python 3.6+
  • progress
  • A rasteriser if you are going to rasterise your SVGs:
    • rendersvg (recommended rasteriser)
    • Inkscape
    • ImageMagick
  • exiftool (Optional; for embedding EXIF license metadata)
  • svgcleaner (Optional; for Optimised SVG output)
  • oxipng (Optional; for Crushed PNG output)
  • FLIF (Optional; for FLIF output)
  • libwebp (Optional; for Lossless WebP output)
  • go-avif (Optional; for AVIF output) (Experimental; does not currently produce truly lossless images. We're trying to figure out why that is.)

Install the compatible progress package by running the following in your shell:

pip install -r requirements.txt

How to use

There are two guides for using orxporter:

kiilas's usage guide

A more concise and technical brief of how to use orxporter.

Dzuk's how to guide

A longer guide with simpler language for those who are less techincally inclined. (Still requires that you know how CLIs and some other things work though)

Contributors

Old changelog from 0.1.0 to 0.2.0

License

orxporter is licensed under the Cooperative Non-Violent License (CNPL) v4.