БраузерNintendo DSi

| Разрешение экрана | 256 × 192, 2 штуки |
| Размер вьюпорта | 240 × 176 |
| Браузер | Opera (Presto) |
| User Agent | Opera/9.50 (Nintendo DSi; Opera/507; U; en-US) |
| Acid3 | 59/100 |
| HTML5 Test | 82/555 |
| CSS3 Test | Не запустился |
Nintendo DSi — портативная игровая приставка с двумя экранами. Нижний — тачскрин с резистивным тачем, верхний — обычный экран. Интерфейс и качество тачскрина предполагают управление стилусом.
Железка крайне слабая. Частота процессора 133 МГц, оперативная память — 16 Мб. Связь с интернетом по Wi-Fi. Браузер — Опера (не мини, то есть не пропускает трафик через свой сервер).
Сайты могут отображаться в двух режимах. Первый — для сайтов, не адаптированных под мобильные устройства. Один экран в этом случае используется для отображения уменьшенной картинки сайта, другой показывает увеличенный выделенный участок:

Функции экранов можно менять местами, при этом на нижнем экране можно перетаскивать выделенную область:

Второй режим для адаптированных под маленькие экраны сайтов. В этом случае верхний экран служит продолжением нижнего. Сайт появляется на нижнем экране, верхний изначально пустой. При скролле страницы верхний экран заполняется:

Мобильный режим активируется при наличии мета-тега с подходящим вьюпортом, например <meta name="viewport" content="width=device-width">.
Особенности
Поддержка фич
Фичи тестировались Модернайзером. Полная таблица моих тестов на гугл доксах.
| Фича | Тест | Реальный результат |
|---|---|---|
| backgroundsize | False | False |
| bgsizecover | False | False |
| borderradius | False | False |
| boxshadow | False | False |
| boxsizing | False | True |
| cssanimations | False | False |
| cssgradients | False | False |
| csstransforms | False | False |
| csstransforms3d | False | False |
| csstransitions | False | False |
| fontface | False | False |
| mediaqueries | True | True |
| opacity | True | True |
| rgba | False | False |
| textshadow | True | True (без блюра) |
| touch | False | False |
| video | False | False |
Из моего набора тестов браузер поддерживает только Media queries, opacity, box-sizing и text-shadow без размывки. Причем тест Модернайзера на поддержку box-sizing дает ложноотрицательный результат. Браузер понимает и корректно обрабатывает CSS-свойство, но никак не реагирует на обращение к style.boxSizing через яваскрипт (в том числе с префиксом Оперы).
Шрифты
Браузер использует один шрифт для всего вообще. Шрифт без засечек. Где-то в приватной области юникода лежит набор пиктограмм, которые, видимо, используются в интерфейсе консоли.
Кроме того, браузер использует всего три размера шрифта и преобразует любой размер в один из своих: маленький для ComputedStyle от 0px до 11px, средний для 12px — 14px и большой для 15px и больше.
При этом все остальные метрики остаются неизменными. Поэтому, например, если у параграфа стоит свойство margin: 0 0 1.5em 0, отступ получится относительно заданного размера шрифта, а не относительно получившегося в результате.
Главный и самый противный баг шрифта: кириллические символы отображаются с огромным межбуквенным расстоянием:

Скролл
Сайт можно скроллить джойстиком, драгскроллом (перетаскиванием), либо с помощью постоянно видимого скроллбара.
Блоки с overflow: scroll / auto при переполнении также имеют постоянно видимый скролл. Драгскролл для них не работает.
Формы
Браузер, на удивление, поддерживает довольно много новых типов полей ввода: url, email, datetime, date, month, week, time, datetime-local, number, range:

Все поля валидируются на соответствие типу при отправке формы. Также работает валидация по аттрибуту pattern. Датапикер глючит:

jQuery
jQuery не работает начиная с версии 1.9.1 и выше. Причину выяснить я не смог.
Итого
Вполне можно адаптировать несложный мобильный сайт под эту железку без особых усилий, если использовать грамотные фоллбеки и исправить проблему с шрифтом. Тот же сайт твиттера, например, работает вполне сносно.
Ссылки по теме
- Using the Nintendo DSi browser, Anna Debenham
- Nintendo DS & DSi Browser, Wikipedia
- Nintendo DSi на Game Console Browsers