Hey!
1)
Basically, Unity's default "outline" component (which I've only added support for in the last update, so still seeing its limitations...) will do this to render outlines: Take the existing vert, set the colour to the desired colour, and move it a bit. So when it actually renders, the same coloured *texture* is still applied, but now multiplied by the outline colour. If you set a quad's color mode to "silhouette", you can see *that* works as expected, since the quad will render as if it's text, relying on vertex colour to receive color. This behaviour would happen if a quad is rendered on the default "Text Mesh" component as well.
To fix this, I'd have to either change it so STM somehow provides a different Material to the Outline component, which clears the "mask" property that provides the texture used on non-silhouette quads, or make a custom outline script that does this... For both of these, while Unity *does* have the IMaterialModifier interface similar to the IMeshModifer interface used by the outline component, but I can't seem to find a way to wedge it between the actual render and the outline, either both or neither, giving the same result as a silhouette quad. So I don't think there's a way to do this with the default outline component...
The included "Ultra" shader has its own outline rendering technique that avoids this by the way, since I can manipulate textures in a shader in a way I can't in C#, will that work for you instead of the Outline component?
Additionally, the shader you're editing there seems to be doing exactly what the silhouette quads do anyway, I think... Where if there's no "mask" it ends up multiplying by 1, ignoring the mask. So... if that's the result you're after, I'd suggest changing the "Color Mode" of quads to "Silhouette".
2)
Not sure if this is properly feasible, since there's multiple ways to tackle outlines and I don't want to lock stuff down too much... You could set it up so that typing quads looks like this: <m=default><q=myQuad></m> to switch materials mid-string though? More on this in the next answer:
3)
Similar to the last one, but I've run into this myself thinking it would be convenient for pixel-based fonts to force a specific size. I decided against it, since while you can assign an integer to a quad saying "always render at this size"! You also have to factor in things like pixel-to-unit ratios, where a quad rendering at a size of 16 might look fine on a canvas, but be way too big outside of a canvas... so things could end up inconsistent in the same project. So the solution I ended up going with was like the last one: Write some code for STM's pre-parsing event that forces quads to a specific size, but on a per-mesh basis! (e.g. spits out a string like <size=0.16><q=myQuad></size> when it sees a <q=x> tag.) I've got some example regex code in the "links" sample scene, but let me know if you'd like this solution, I just have to clean up my own messy code that does this exact thing.
So... short version: Try the outlines on the Ultra shader, try setting your quads to be silhouettes, and per-mesh quad resizing is how I'd go about this and I really should include that as a utility script asap.