User Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:34.0) Gecko/20100101 Firefox/34.0 (Beta/Release) Build ID: 20140815030202 Steps to reproduce: Open a page that contains U+3099 (Combining Katakana-Hiragana Voiced Sound Mark; looks like dots on top of a letter), such as 'じし' (U+3057 U+3099 U+3057). The same problem reproduces on U+309A (Combining Katakana-Hiragana Semi-Voiced Sound Mark; looks like a circle on top of a letter). Actual results: Voiced sound mark is rendered on the letter after U+3099, like 'しじ' (U+3057 U+3058). Expected results: Voiced sound mark should be rendered on the letter before U+3099, like 'じし' (U+3058 U+3057).
This is most likely the same issue as bug 1024349 on FirefoxOS: the combining sound marks are not supported by the font being used, so they fall back to a different font (maybe Droid Sans Fallback?), but this results in a font-run boundary between the base character and the combining mark, and mark positioning doesn't work well across run boundaries as the separate font runs are shaped completely independently. The "right" fix would be to ensure that the Japanese fonts being used actually support these characters, but we can't easily do that for Android devices as we don't control the fonts that are being shipped.
This is going to depend on the phone's fonts that are part of the OS. Can the stock browser or Chrome on Android render this glyph correctly? Quote from bug 992100 comment 6 on how to retrieve the fonts from your phone. If you have a computer with the android sdk tools installed, you should be able to use adb for this. With your device connected, you can do something like mkdir fonts-from-android cd fonts-from-android adb pull /system/fonts/ to "pull" everything from the device's /system/fonts/ into a directory on your computer; then zip that into an archive and attach to this bug. If Bugzilla complains they are too big to attach we will work out a delivery method for the file (If you first need to install the android sdk, details will depend on your computer platform, but there are plenty of instructions available online.)
Yes, the Android (4.0.3) browser renders them correctly. I attached the fonts on my phone, and screenshots on both of browsers. I noticed that Firefox renders the combining voiced mark, not only on an unexpected letter, positioned slightly upper and righter than the combined one (U+3058) and the Android browser does. So I guess that the Android browser combines U+3057 U+3099 into U+3058 before rendering them as in UAX#15 (for the case where combining marks are not supported).