The ICU LocaleMatcher which uses CLDR supplemental/languageInfo.xml <languageMatches type="written_new"> data fails to match desired="ja-Latn" to supported="ja"="ja-Jpan-JP" because of the script mismatch.
Please add languageMatch entries for Japanese and Koran language-script tags, to create a small one-way distance between a script code and the code for the encompassing group script.
I suggest a distance of 5, same as for desired="sr_Latn" supported="sr_Cyrl".
I am using an ICU data patch equivalent to the following.
These entries should be the last ones in the language-script section: Insert just before the "*_*" line.