Progress: Various updates.
The main FSS specification with clarifications.
I'm generally in favor of performing calculations once.
However, I decided to try reducing the memory allocation and deallocation cost of variables by applying the simple math operations each time for some functions where this is performed only once.
This has a cost of some code readability, however.
The affected functions are single purpose and simple making the cost rather moot.
Begin changing the logic to add a new feature to solve a problem with insufficient compliance to the Unicode standards.
The joiners need to be handled.
The combining combines into what is effectively a graph character.
Treat the joiner characters the same, even though one can join two non-printing characters.
New lines must ignore joiners (I have seen this as the standard behavior by a lot of software and decided to go with that to avoid problems).
The is_combining, is_joiner, and is_combining_joiner are new features added to help solve these problems.
A lot of the logic is incomplete as of this commit.
I didn't want to add a cost of auto-checking every character after the first.
This means that I cannot have the is_space, is_graph, or other such functions automnate this.
Therefore, the logic must be changed to check for these spaces.
The code will become more complex but this will not incur as much of a performance cost compared to checking each character 2x+ times.
I also decided not to continue on after the first combining and joiner characters.
The combining already makes something a graph.
The joiner requires more searched and is highly subjective.
Therefore, make life easier and just treat all joiners as graph-making for the purposes of processing and syntax.