Internationalization is the process of designing and developing a software product to function in multiple locales. This process involves identifying the locales that must be supported, designing features which support those locales, and writing the code needed.

The supplementary RTL ranges have the property that it's sufficient to examine the high surrogate to determine if an astral character is RTL.
Once 1428771 is fixed, nsBidiUtils::HasRTLChars() should, therefore, use loop by code unit and check each code unit using UCS2_CHAR_IS_BIDI instead of checking for surrogate pairs.
Downside: Certain unpaired high surrogates will be classified as RTL. This should not be a practical problem.