So I finally got compound glyphs working. For the uninitiated some glyphs are actually a combination of two or more glyphs, usually these are accented characters, and in the font file it just gives you a reference to the other glyphs being used and some information on how to scale/rotate/position them in relation to each other.
While positioning them was no big deal, scaling, skewing and rotating was a little confusing since the documentation wasn’t terribly descriptive about the format the information was stored in. You might get a single short for the x/y axis, one for each or a two by two matrix. The docs from apple simply said “The numbers stored as shorts are treated as signed fixed binary point numbers with one bit to the left of the binary point and 14 to the right.” While the docs on Microsoft’s website stated “If the bit WE_HAVE_A_SCALE is set, the scale value is read in 2.14 format-the value can be between -2 to almost +2.”
So I looked up 2.14 format and came up with something called Fixed Point Maths which is a method to describe real numbers, floating point, using only integer values, however, this turned out to be a dead end. My next thought was, well maybe they’re simply storing the integral part in the first two bits of the 16 bit short, one bit for sign and then the integral part could be either 0 or 1 which fits in with Microsoft’s description. So I used some bitwise operations and bit shifting to part out the first two and last 14 bits then combine them with a decimal point in between, but unfortunately this was also a dead end.
At this point I was starting to think maybe there was a bug in Sfntly, I have enountered one elsewhere in Sfntly, and perhaps it was just reading the wrong data from the file, maybe the offset was off by a bit or two. I went through Sfntly and compared it to the docs and everything seemed to be lined up correctly. Although I did find the following in Sfntly:
/**
* Reads the F2DOT14 at the given index.
*
* @param index index into the font data
* @return the F2DOT14
* @throws IndexOutOfBoundsException if index is outside the FontData's range
*/
public BigDecimal readF2Dot14(int index) {
throw new UnsupportedOperationException();
}
After doing a bunch more searching I found a single Wikipedia article about a format called Q, that’s right just Q, which is a fixed point format for storing floating point values on systems that don’t support floating point. Apparently I just needed to multiply the stored short by 2^-14. I feel like the docs could’ve just mentioned that haha. 
P.S. I downloaded a free font creator called FontForge so I could make that sweet looking piece of awesomeness you see on the screen just to test compound glyphs.