Asset Managment

Quill exports a binary blob of all the assets it finds in a project's assets directory. By default, it outputs it to gui_assets.bin. The assets bin should be passed to ink_load_assets_bin prior to loading the main gui.bin using ink_load_gui_bin.

Asset Types

Supported Image Formats

Images may have a single channel, 3 channels (RGB), or 4 channels (RGBA). In single channel images white is fully opaque and black is fully transparent.

Supported Font Formats

Icon Fonts

Icon fonts are recognized by Quill when it finds a css and font file with the same name. For example, icomoon.ttf and icomoon.css. Quill uses the following regular expression when parsing css files to find glyphs:


Which matches content like this:

.icon-link:before {
  content: "\e90c";


Only the subset of SVG compatible with icon fonts is supported, that is close looped paths that consist only of lines and cubic bezier curves.


Translations are xml files with one or more <translation> root elements.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<translation lang="en">
    <key>NEW_MESSAGES {{n}}</key>
    <other>You have {{n}} unread messages.</other>

See Localization for more details on writing translation files.

Image variants

Using the runtimes scaling feature results in bitmaps being stretched when rendered. To provide higher resolution variants of bitmap images postfix a .x# to your file name before the image format extension, where # is the target scale factor.

For example, if you have a 64x64 icon.png, you can have a 128x128 icon.x2.png. So if you're precise about what scale factors you set, you can still make sure images have a 1 to 1 pixel ratio with the display.

When the bitmap scale factor and the ink scale don't have an exact match, it always picks the highest density version that doesn't cause down-sampling. (e.g. a scale of 1.9 will pick the original, where as 2.1 will pick the .x2.png)


.x2, .x3, and so on is only a convention. So long as the image has the same name with the postfix .x it's registered as a scaled variant. The runtime looks at the actual image size when picking which variant to use in a given situation. We suggest the convention of using underscore for fractonal components. i.e. .x1_5 to denote images at 1.5x the size of the original.

N-Patch images

N-patch files use the same image format as Android, which means you can use assets created by tools like AndroidAssetStudio. Single channel n-patch images should use black for the border and white for control points.