After spending a long time looking for a solution for this I finally found a VNC client that does work! If you use Remote Desktop Manager (you can find this app on Play Store) it can indeed pass through the fn keys if you press them with left Shift. So, for example, instead of pressing fn+o for dash, you would press left shift + fn + o. I know, Remote Desktop Manager is a bit overkill to just quickly connect to a VNC server, but it is the only solution I could find that actually works. Before that, I was using Unicode hex codes to insert symbols, like Ctrl+u+"2d" = dash, Ctrl+u+"22" = quotation mark, etc.