Android vs всё остальное: почему переносы строк различаются?
Ситуация:
Мы используем code.google.com/p/hyphenator для автоматической расстановки мягких переносов в текстах. Далее, имеем некоторый блок фиксированного размера с выравниванием, например, по ширине. После обработки текста библиотекой (динамически у клиента) каждое слово снабжается мягкими переносами. Хотя, это не принципиально, можно и вручную натыкать в текст
Мы визуально контролируем расстановку переносов при создании страницы и в некоторых случаях добавляем жёсткие переносы или переводы строк. Например, если слишком много подряд строк с переносами, если образовались коридоры из пробелов в тексте или библиотека ошиблась с мягким переносом.
Но вот фигня - Android (системный браузер и Chrome) переносят слова иначе по сравнению с (Firefox, IE, Chrome, Safari) на Win7 и Safari на iOS. Конечно, тоже по мягким переносам, но по другим. В целом, кажется, что текст чуть менее плотный. Почему - не ясно. Пробовал ставить letter-spacing в ноль принудительно - не толку. Может системы устанавливают разные межсловные интервалы при выравнивании по ширине? Но если использовать text-align:left, результат тот же. Андроид режет по своему.
В результате мы не можем сделать корректировку, поскольку в одном из случаев она будет неверная.
Кто-то сталкивался? Может попробовать собственные шрифты для таких случаев? Может у Андроида отличаются?
И - да. Кажется можно спастись использованием подгружаемых шрифтов. Но выяснилась еще одно.
Например имеем текст: А. А. Иванов
пробелы - обычные, не неразрывные
IE на десктопе, андроид и iOS рвут после первой "А."
А firefox и chrome на декстопе - только после второй А.
Случайность или браузеры "понимают", что это инициалы?
Т.е. нужно строго ставить неразрывные пробелы, иначе не только можем получить не только разрыв там, где не ожидалось, но и наоборот...