When Microsoft Word runs in multilingual mode, there's a dual selection of Complex Font (like Hebrew, Arabic, Russian, Chinese, etc.) and Latin text font. If they don't match, when you send the document (DOCX or DOC) to Kindle (in my case Paperwhite) via e-mail, a space is added before any letter that precedes any punctuation (comma, dot, etc.).

For example, in A line. the line. will turn to lin e.
If you copy the resulting AZW3 file from your Kindle into your computer, open it in Calibre and choose to "Edit book", you'll see it happened because Send to Kindle added letter-spacing:0.25rem to the e of line.:

<span style=" font-size:1.0rem">lin</span><span style=" font-size:1.0rem ;letter-spacing:0.25rem">e</span><span style=" font-size:1.0rem">.

Download link for an example DOCX and resulting AZW3.

When the fonts don't match

None of this shenanigans happen if you modify the document so that Complex Font and Latin text font match. Once I understood that, I came up with this code:

Sub FixMismatchedFont()
    Application.Selection.EndOf 'Get the default font by not selecting any specific text
    ActiveDocument.Content.Font.Name = Selection.Font.Name
End Sub

Now I can finally read the example document right! But I don't understand why is it needed in the first place. Send to Kindle removes the document's font face anyway. So why should a document's font make Send to Kindle decide if letter-spacing is needed or not?

If you can confirm this in other types of Kindle than Paperwhite, feel free to remove the Paperwhite tag.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.