Up: Contributing   [Contents][Index]


13.1 Providing ponies

Most pony images are browser ponies or desktop ponies, browser ponies is a port of desktop ponies, implementing it in JavaScript. Browser ponies are available at https://github.com/panzi/Browser-Ponies. Desktop ponies are available at http://desktop-pony-team.deviantart.com/.

There is also a collection of ponies that are not yet pixelated in a Java reimplementation of the early Ponysay: https://github.com/maandree/unisay/tree/develop/dev/newponies

There is a checklist named pony-checklist at the dev/ directory. You can use the check which ponies are added and which are not. Please update it when fit.

New ponies can be created from regular images by using util-say, which is available at https://github.com/maandree/util-say. Prior to version 2.1 of ponysay, img2xterm could be used, by since version 2.1 ponysay is using a new format that only util-say supports. img2xterm (https://github.com/rossy2401/img2xterm) was used in the early stage, but util-say tries to optimise the images in some aspects: as good as possible for low capability terminals, tries to place the pony–balloon link, displayed as good as possible when marked in the terminal (somewhat compromised by the first aspect,) and same width on all rows.

Using util-say:

img2ponysay -2 -- SOURCE_IMAGE > PONY_FILE

PONY_FILE should end with .pony and be localed in ponies/,
or extraponies/ if the pony is not a MLP:FiM pony.

Omit -2 if the source image does not use double pixel size.

For more information is available in util-say's info manual. img2ponysay
is a legacy command that uses the default settings of ponytool for
converting a image file to a pony file.

If you have util-say installed, which is required to build ponies, you can use PNG files as argument the for ponysay -f, this requires that the file is named .png at the end.

The following bash code will print the palette the ponies (the terminals) use:

c=16
while ((c < 256)); do
    echo -en "\e[48;5;${c}m  \e[49m"
    c=$(( $c + 1 ))
    if (( $(( c % 36 )) == 16 )); then
        echo
    fi
done; echo

For the palette to be correct, which is especially important when you draw ponies, you must not redefine the colours in the range 16 to 255 (inclusive).

When a pony is added please also add a ttypony version, i.e. the pony files used in TTY, but if you don’t please state so in the pull request so we do not miss the create it; the simplest way to do this is to run dev/dist.sh ttyponies after adding the ponies to ponies/, running dev/dist.sh ttyponies will build (or rebuild) all ttyponies with a pony present in ponies/, and creates all needed symlinks.

To be able to run dev/dist.sh ttyponies you must have the packages listed under Dependencies for pony providers.

Also when adding new ponies, please map them up in the file ponyquotes/ponies. If the pony is a new pony without any other alternative image just add it to a new line, without .pony, preferably in its alphabetical position. If the file is a symlink add it to the same line as the target pony, and if the pony has and alternative image add it the the same line as that pony. Ponies on the same line are separated with a plus sign (+) without any white space. When a line is too long for a file name (this has happened to Pinkie Pie [pinkie],) it must be split into multiple lines, these lines should have their first pony file in common.


Up: Contributing   [Contents][Index]