Pixel Art: Arc Sign codes & their correlation to the CreatiSign Generator
In this guide I'll try to explain my understanding of the Arc Sign codes for the game Creativerse, free to play on Steam.
Most of it will apply to the game regardless of the CreatiSign Generator, the parts that apply to the Generator will be clearly marked.
The purpose of this guide is to explain the commands which are necessary to create images with Arc Signs. For that reason it will not cover the commands that are not strictly related to the task of creating images within Arc Signs.
This guide will try to explain the subject in the simplest possible way but it will not try to dumb it down: this is a pretty technical subject, so you're expected to understand each word of it as much as you can before proceeding further, you're also expected to actively test everything out in the game by yourself to fully grasp the concepts.
I may have my own good share of misunderstandings, of course, so feel free to point out any errors or imperfections, as well feel free to provide your own advices about how to further improve this guide even if it's just about rephrasing some part of it.
Table of contents
Introduction
Pixel Art in Arc Signs is an imprecise technique which renders pixels by sticking together a series of characters, and in this guide we'll be using the "period" character.
Each section of this guide is composed by at least two examples to copy and paste into the game in two different Arc Signs in order to show the specific effect of each command.
Each comparison will be complemented with a screenshot meant to display the exact effect given by each change in the code.
There are many more examples than the amount of screenshot, please make sure you test the examples (and modify them yourself at your will) checking out the results, repeatedly, until you have fully grasped how each command works.
If you still have doubts about what a command exactly does do not dismiss the problem: try to find any word you didn't fully understand, test more variations and eventually post your specific questions on the forum until you've fully understood the command before proceeding with the next one.
FONT tag
Left Arc Sign:
default font
Right Arc Sign:
<font=Arial SDF>Arial SDF font
Result:

The first Arc Sign shows the default font used by Arc Signs. This font has a white outline and a semitransparent color. This font makes no distinction between lowercase and uppercase characters (everything is uppercase).
The second Arc Signs shows the Arial SDF font. This font has no outline and has a fully opaque color. This font represents lowercase and uppercase characters differently. This seems to be the best font to use to make Pixel Art because it gives full control over the opacity of the "pixels". This is also the font that we will use in almost all the examples to ensure we are seeing the exact colors that we want.
Arial SDF is the font used by default in the Generator.
COLOR tag
Left Arc Sign:
<color=black>default font text in black
Right Arc Sign:
<font=Arial SDF><color=black>Arial SDF font text in black
Result:

The main thing to remark here above is how the Arial SDF font takes full advantage of the COLOR tag (for the purpose of making Pixel Art), showing a fully opaque black text when compared to the default font, which gives a semitransparent and outlined text.
The COLOR tag determines the color that will be used by any following character. The color can be changed in any point of the Arc Sign by further COLOR tags.
<font=Arial SDF><color=red>this text is red <color=black>this text is black
In addition to some english names of the colors, the COLOR tag accepts RGB (Red, Green and Blue) hexadecimal vales, with an optional A (Alpha) value.
There are two ways to shorten the length of a COLOR tag when using the hexadecimal codes, one is to omit the "color=" part as in the following example:
<font=Arial SDF><#FF0000>this text is red
Another is to use the short exadecimal notation:
<font=Arial SDF><#F00>this text is red
Short color codes take less space but allow for a smaller range of colors.
The Alpha value determines the opacity of the text:
<font=Arial SDF><#F00F>this text is fully opaque red
<font=Arial SDF><#F009>this text is semitransparent red
Summing up, these are all the possible forms a color code can assume, where any of the R, G, B and A characters must be replaced by an hexadecimal digit (hexadecimal digits are the decimal digits going from zero to nine plus the first six letters of the alphabet, so from A to F):
- #RGB:
<font=Arial SDF><#F00>red
- #RGBA:
<font=Arial SDF><#00F9>semitransparent blue
- #RRGGBB:
<font=Arial SDF><#00FF00>green
- #RRGGBBAA:
<font=Arial SDF><#FFFF0099>semitransparent yellow
The Generator uses only the hexadecimal notation and automatically converts long color codes into their short counterpart when this does not change the color (for example, it will convert #FF0000 to #F00 but will leave #FE0000 as it is). If the "Short Codes" option is enabled, the Generator will convert also #FE0000 to #F00, saving space but also altering the final colors.
SIZE tag
Left Arc Sign:
<font=Arial SDF>default size (1)
Right Arc Sign:
<font=Arial SDF><size=4>custom size (4)
Result:

The SIZE tag is measured by in "points", which is a specific unit of measure of font sizes. By roughly comparing the size of the text and the size of a block it's pretty clear that a point is way smaller than a block.
The precise relation between the size of a single "point" and the size of a single block in Creativerse is unknown to me. By trial and error I've found that using default size of 1 point, sticking periods together, I can fit more or less a square composed of 100x100 periods in a block. This is one of the things that makes Pixel Art with Arc Signs tricky: in order to get exactly the results you want, you need a lot of trial and error.
The Generator uses a default size of 2.
MSPACE tag
Left Arc Sign:
<font=Arial SDF><size=4>....
Right Arc Sign:
<font=Arial SDF><size=4><mspace=0.04>....
Result:

The MSPACE tag determines the horizontal interval at which every character starts. This value seems to be expressed in blocks.
As you can see, by setting MSPACE to one hundredth of the value of the SIZE tag, we get the periods to sit almost perfectly side by side.
The Generator does not allow to alter the MSPACE value directly: it automatically computes it dividing SIZE by one hundred and then allows for tweaking it with the "Main Spacing" value, which is a percentage value that gets added or subtracted to it (-10 subtracts ten percent from it, 10 adds ten percent to it and so forth)
LINE-HEIGHT tag
Left Arc Sign:
<font=Arial SDF><size=4><mspace=0.04>.... ....
Right Arc Sign:
<font=Arial SDF><size=4><mspace=0.04><line-height=0.04>.... ....
Result:

The LINE-HEIGHT tag determines the vertical interval at which each line starts. This value seems to be expressed in blocks.
Just like with the MSPACE tag, using a LINE-HEIGHT set to one hundredth of SIZE we are able to display lines sitting almost perfectly on top of each other.
The Generator does not allow to alter the LINE-HEIGHT value directly: its value is equal to the computed value of MSPACE after getting applied the "Main Spacing" tweak; this value can be further tweaked by the "Vertical Spacing" value, which is a percentage value that gets multiplied to it (100 gives an equal vertical and horizontal spacing, 50 halves the vertical space, 200 doubles it and so forth).
WIDTH tag
Left Arc Sign:
<font=Arial SDF>ABCDEFGHIJKLMNOPQRSTUVWXYZ
Right Arc Sign:
<font=Arial SDF><width=1>ABCDEFGHIJKLMNOPQRSTUVWXYZ
Result:

The WIDTH tag, measured in blocks, determines the space the text is allowed to grow before wrapping. This value is capped to 8.
In the left sign we see the effect of completely omitting the WIDTH tag, which gives it the default value of 3. In the right sign we see how the text wraps almost at the limit of the block (slabs are there to have a closer reference to the block limit because the text normally sits in the middle of a block on the z-axis, which is the axis that determines the forward and backward positions related to the Arc Sign itself).
The actual space given to the Arc Sign by the WIDTH tag is always computed from the middle of the sign itself, so you'll get half of it on the left, the other half on the right.
The Generator uses the maximum allowed value of 8 to let images grow horizontally as much as possible but you can reduce this value to achieve special placements of multiple sets, which will be explained later on.
Pixel Spacing
Left Arc Sign:
<font=Arial SDF><size=10><mspace=0.1><line-height=0.1><#000>..... .<#F00>...<#000>. .<#F00>...<#000>. .<#F00>...<#000>. .....
Right Arc Sign:
<font=Arial SDF><size=10><mspace=0.09><line-height=0.09><#000>..... .<#F00>...<#000>. .<#F00>...<#000>. .<#F00>...<#000>. .....
Result:

Here above you can see how the fake pixels we're creating with periods aren't perfectly square, and as such show weird gaps at the pixels' corners (left sign). One way to deal with it is by slightly reducing the MSPACE and LINE-HEIGHT values - notice in fact how the values at 0.1 in the left sign become 0.09 for the right sign.
Take the chance to notice how the colors, <#000>
in this example, apply to the pixels even if they are on the next line: there is no need to add such a color tag at the beginning of a line its first pixel has the same color of the last pixel of the previous line.
The above approach of reducing the spacing tags, though, gives us a slightly smaller image, as can be seen in the right sign. This problem can be worked around by increasing the SIZE value instead:
Left Arc Sign:
<font=Arial SDF><size=10><mspace=0.1><line-height=0.1><#000>..... .<#F00>...<#000>. .<#F00>...<#000>. .<#F00>...<#000>. .....
Right Arc Sign:
<font=Arial SDF><size=11><mspace=0.1><line-height=0.1><#000>..... .<#F00>...<#000>. .<#F00>...<#000>. .<#F00>...<#000>. .....
Result:

Here above the MSPACE and LINE-HEIGHT are identical from sign to sign, what changes is the SIZE value that goes from 10 (left sign) to 11 (right sign).
Please also notice how the image not only is slightly larger now but also how it has been slightly moved upwards: this is yet another thing that makes it so hard to perfectly align the whole images and what forces you to do a lot of trial and error if you are looking for very precise placement and sizes.
In the Generator, once you've worked out the exact values you want for the "Main Spacing" and for the "Vertical Spacing" (which are normally fine by default, unless you want to achieve some special behavior) you just have to change the SIZE tag in order to zoom the image in and out without changing its resolution.