You’re right! I found both issues, and neither were related to VF. In the Hebrew font, I still had old LTR kerning, which seems to dominate over RTL kerning. In the Arabic font I had kerned Arabic-Indic numerals RTL, but they actually need to be kerned LTR. It feels counter-intuitive, but it makes sense because Arabic-Indic digits are treated as “weak” characters in the Unicode bidi algorithm. Shaping engines process them in logical LTR order even within an RTL run, so kerning applied RTL ends up affecting the wrong side of the preceding glyph. Kern LTR for digits, RTL for letters, and you get predictable results.