После того, как я снова ударился головой о стол, я нашел решение:
К сожалению, похоже, что iOS и Android просто ведут себя по-разному (Android явно не делает то, что говорит спецификация, игнорируя максимальный масштаб). Решение заключается в том, чтобы специализироваться на основе разрешения с использованием JavaScript:
Если ширина экрана (см. Примечание ниже) больше или равна фиксированной ширине страницы (в моем примере 640), тогда установите ширину содержимого мета-тега области просмотра равной ширине экрана
В противном случае установите ширину содержимого метатега области просмотра на фиксированную ширину страницы (640)
Presto. Хромо, что требует специализации JavaScript, но такова жизнь.
Обратите внимание, что Javascript screen.width на iPad / iPhone некорректен, если устройство находится в альбомном режиме (iPad по-прежнему отображает ширину портретной ориентации вместо ширины альбомной ориентации, в отличие от Android, которая правильно понимает это дело!). Поэтому вам нужно проверить window.orientation на iPad / iPhone и использовать screen.height вместо screen.width , если вы находитесь в альбомной ориентации.