A tool for organising and batch exporting SVG emoji sets.

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

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.