1.4.4Poziom AA

Zmiana rozmiaru tekstu

Resize Text

Pozwól powiększyć tekst do 200% bez technologii asystującej i utraty treści lub funkcji, poza captions i obrazami tekstu.

Komu pomaga
Słabowidzenie
Zastosowanie
WWWAplikacje mobilneAplikacje desktopoweDokumenty cyfroweInne urządzenia

Warunki i wyjątki opisano w artykule.

Wersja
WCAG 2.2, wprowadzone w 2.0
Zasada / wytyczna
Postrzegalność / 1.4
Stan researchu
Draft AI. Bez przeglądu człowieka.
Redakcja artykułu
· wersja robocza
Na tej stronie

Co oznacza to kryterium

Użytkownik powinien móc powiększyć tekst dwukrotnie, przeczytać potrzebną informację i wykonać te same czynności. Dotyczy to również etykiet, przycisków, placeholderów i wpisanych danych. Układ może rosnąć i wymagać przewijania; istotna treść nie powinna znikać za krawędzią.

Pomaga to osobom słabowidzącym czytać bez specjalnego powiększalnika. Wyjątki obejmują captions i obrazy tekstu. Rozmiar wizualnego tekstu jest osobnym zagadnieniem niż jego dostępna nazwa.

Przykłady błędów i poprawek

Pełna instrukcja przy 200%

Pracownia używa P-104 i tych samych zdań: „Punkt otwarty do 18:00. Odbiór przy wejściu od ogrodu.” Good pozwala akapitowi rosnąć. Bad ogranicza go do dwóch wierszy z wielokropkiem, bez drogi do reszty instrukcji.

Pracownia iOS 200% własnej skali: pełna godzina i instrukcja wejścia, pole mieszczące placeholder.

Pracownia, końcowe wykonanie z 2026-10-04. 200% oznacza własny mechanizm wielkości tekstu, bez testu Dynamic Type lub zoomu przeglądarki. Obraz daje kontekst, a rozmiar i działanie potwierdzono osobnymi odczytami.

Pracownia iOS 200%: instrukcja ograniczona do dwóch wierszy z utraconym końcem.

Pracownia, końcowe wykonanie z 2026-10-04. 200% oznacza własny mechanizm wielkości tekstu, bez testu Dynamic Type lub zoomu przeglądarki. Obraz daje kontekst, a rozmiar i działanie potwierdzono osobnymi odczytami.

Control ma ten sam limit, lecz widoczny przycisk „Pokaż pełną informację” usuwa go. To kontrola granicy: skrócenie może być dopuszczalne, gdy pełna informacja jest rzeczywiście osiągalna i interfejs wskazuje tę możliwość.

Pracownia iOS 200%: skrócona instrukcja i przycisk Pokaż pełną informację.

Pracownia, końcowe wykonanie z 2026-10-04. 200% oznacza własny mechanizm wielkości tekstu, bez testu Dynamic Type lub zoomu przeglądarki. Obraz daje kontekst, a rozmiar i działanie potwierdzono osobnymi odczytami.

Pracownia iOS po Pokaż pełną informację: widoczny koniec instrukcji.

Pracownia, końcowe wykonanie z 2026-10-04. 200% oznacza własny mechanizm wielkości tekstu, bez testu Dynamic Type lub zoomu przeglądarki. Obraz daje kontekst, a rozmiar i działanie potwierdzono osobnymi odczytami.

Surowe PNG iOS pochodzą z końcowej próby. Pełna treść poniżej kadru wymaga zwykłego przewinięcia. Nie ustalaj wielkości fontu z etykiety „200%” ani dostępności podglądu z samej ramki przycisku.

Karta o stałej wysokości na WWW

Good ma naturalną wysokość. Bad/control ograniczają obszar informacji do 48 px i overflow:hidden; control pozwala rozwinąć kartę. Pole notatki, Ogrod, podgląd adresu i reset działają we wszystkich wariantach.

Pracownia WWW 200% własnego font-size: pełny akapit w rosnącej karcie.

Pracownia, końcowe wykonanie z 2026-10-04. 200% oznacza własny mechanizm wielkości tekstu, bez testu Dynamic Type lub zoomu przeglądarki. Obraz daje kontekst, a rozmiar i działanie potwierdzono osobnymi odczytami.

Pracownia WWW 200%: stała karta ucina dół drugiego wiersza.

Pracownia, końcowe wykonanie z 2026-10-04. 200% oznacza własny mechanizm wielkości tekstu, bez testu Dynamic Type lub zoomu przeglądarki. Obraz daje kontekst, a rozmiar i działanie potwierdzono osobnymi odczytami.

Pracownia WWW: skrócona karta i przycisk pokazania pełnej informacji.

Pracownia, końcowe wykonanie z 2026-10-04. 200% oznacza własny mechanizm wielkości tekstu, bez testu Dynamic Type lub zoomu przeglądarki. Obraz daje kontekst, a rozmiar i działanie potwierdzono osobnymi odczytami.

Pracownia WWW po aktywacji: karta pokazuje całą instrukcję.

Pracownia, końcowe wykonanie z 2026-10-04. 200% oznacza własny mechanizm wielkości tekstu, bez testu Dynamic Type lub zoomu przeglądarki. Obraz daje kontekst, a rozmiar i działanie potwierdzono osobnymi odczytami.

To rzeczywiste wykonanie własnego CSS html.fontSize, bez zoomu przeglądarki. Bad wykazuje błąd badanego mechanizmu. Ponieważ nie sprawdzono innych wspieranych sposobów powiększenia, nie stanowi końcowej oceny całej strony według 1.4.4.

Pozostałe błędy i poprawki

Problem Skutek i poprawka Zakres dowodu
Skaluje się opis, lecz pole lub przycisk pozostaje mały Skaluj także napisy kontrolek i wpisane dane; zapewnij im miejsce. W demonstracji rosły wszystkie te teksty; osobny błędny wariant F80 niewykonany.
Rozmiar oparty tylko na viewporcie lub zmniejszany przy zoomie Zmiana układu kompensuje powiększenie. Sprawdź osiągnięty rozmiar względem bazowego. F94 omówiono, bez osobnego odtworzenia; samo CSS px nie oznacza błędu pełnego zoomu.
Pole zbyt niskie dla placeholdera Napis jest w drzewie, lecz nachodzi na krawędź. Pozwól wysokości rosnąć. Pierwszy iOS ujawnił problem; wspólne minLines:2 naprawiło go w końcowej próbie.

Kiedy obowiązuje i gdzie są wyjątki

  • Żywy tekst pozostaje w zakresie, również przyciski, pola i treść pomocnicza. Nie przenoś tu wyjątku 1.4.3 dla nieaktywnej kontrolki. Wyjątki tego kryterium to captions i obrazy tekstu.
  • 200% oznacza podwojenie rozmiaru tekstu, bez technologii asystującej. Poszerzenie okna lub sam resize viewportu nie dowodzą powiększenia fontu.
  • Dla WWW wystarczy co najmniej jeden prawidłowy, wspierany mechanizm bez utraty treści i funkcji. Jeśli ma kroki pośrednie, sprawdź również je. Błąd text-only nie przesądza błędu całego kryterium, gdy pełny zoom działa poprawnie.
  • UI kontrolowany przez samą platformę lub odbiornik, np. jego tooltip czy wybór pliku, nie jest autorską treścią tego wymagania. To granica odpowiedzialności za dany element.
  • Breakpoint i zmniejszanie fontu nie mogą uniemożliwiać osiągnięcia dwukrotnego rozmiaru względem prezentacji bazowej.
  • Przewijanie samo w sobie nie oznacza utraty funkcji. 1.4.4 nie wymaga 320 CSS px, 400% ani zakazu przewijania w dwóch wymiarach; te warunki należą do innych kryteriów.
  • Przy skróceniu pełna treść musi być dostępna po fokusie lub aktywacji i mieć wyraźną drogę ujawnienia. Wielokropek, pełny aria-label/AX i tooltip nieosiągalny danym wejściem nie wystarczają.

Techniki G142/G178/G179, C28 oraz pomocnicze C12/C13/C14, SCR34/G146 i C17 opisują możliwe rozwiązania. F69/F80/F94 opisują określone błędy. Nie narzucają jednej jednostki, biblioteki czy mechanizmu.

Platformy

Środowisko Podstawa i adaptacja Wykonanie
WWW, także w telefonie WCAG 2.2, 1.4.4, bez adaptacji. Własne HTML/CSS w IAB/macOS; zoom i telefon niewykonane.
Aplikacje mobilne i desktopowe WCAG2ICT Group Note 2025-12-11: zastępcze brzmienie dla software, opisane poniżej. Flutter/iOS Simulator, własne przyciski rozmiaru; desktop, Android i ustawienie OS niewykonane.
Dokumenty poza WWW WCAG2ICT bez zmiany brzmienia; odbiornik może zapewnić zoom 200%, jeżeli dokument z nim współpracuje. Dokument i odbiornik niewykonane.
Wizualne oprogramowanie kiosku/telewizora Część webowa jak WWW, software według WCAG2ICT; ustalić możliwości i zamkniętą funkcjonalność. Niewykonane; bez oceny sprzętu.

Interpretacja AI z 2026-10-04 dla software dopuszcza 200% albo możliwości skalowania platformy, jeśli platforma je ma, lecz nie wszystkie typy tekstu osiągają 200%. Aplikacja musi z nimi współpracować, zachować informację, funkcje i semantyczne znaczenie różnic wielkości. To nie pozwolenie na własny dowolny limit, np. 130%. Gdy platforma nie zapewnia potrzebnego mechanizmu, rozważ własne skalowanie.

Demonstracja bada odrębny mechanizm aplikacji do 200%, bez potwierdzenia całego Dynamic Type. WebView oceniaj jak WWW, natywną otoczkę osobno. WCAG2ICT jest informacyjną interpretacją; brak testu nie wyłącza platformy. Nie ustalano EN 301 549 ani obowiązku prawnego.

Rozwiązania w technologiach

Dokumentację API sprawdzono 2026-10-04. Fragmenty poniżej są edukacyjne: nie budowano osobnych aplikacji ani zależności. Nie tłumaczą automatycznie dowodu Fluttera na wynik SwiftUI, Compose lub React Native.

Flutter

import 'package:flutter/cupertino.dart';

Widget pickupInformation() => SingleChildScrollView(
  child: Column(crossAxisAlignment: CrossAxisAlignment.stretch, children: [
    const Text('Punkt otwarty do 18:00. Odbiór przy wejściu od ogrodu.'),
    const Text('Notatka do odbioru'),
    const CupertinoTextField(minLines: 2, maxLines: null),
  ]),
);

Domyślnie dziedziczyć MediaQuery.textScaler, bez wymuszania noScaling, zmniejszania tekstu przez dopasowanie czy nieuzasadnionego clamp. TextScaler.scale(fontSize) uwzględnia również strategie nieliniowe, więc jedna liczba „fontScale” nie wystarcza do pomiaru wszystkich stylów. W demonstracji normalne przyciski 100/125/150/175/200% mnożą wynik skalera platformy przez wybrany mnożnik (AddedTextScaler), bez setterów OS i bez kanału testowego. Nie jest to wykonanie zmiany Dynamic Type. Powyższy fragment nie był oddzielnie kompilowany; właściwa implementacja w pełnej demonstracji ma analizę, testy hostowe, build i rzeczywisty test iOS. Flutter 3.44.9 / Dart 3.12.2.

iOS / SwiftUI

import SwiftUI

struct PickupInformation: View {
    @State private var note = ""
    var body: some View {
        ScrollView {
            VStack(alignment: .leading, spacing: 16) {
                Text("Punkt otwarty do 18:00. Odbiór przy wejściu od ogrodu.")
                    .font(.body)
                    .fixedSize(horizontal: false, vertical: true)
                TextField("Notatka do odbioru", text: $note)
                    .font(.body)
                Button("Pokaż adres") { /* normalna akcja aplikacji */ }
            }.padding()
        }
    }
}

Używać semantycznych stylów Dynamic Type i pozwalać wysokości rosnąć. fixedSize(horizontal:false, vertical:true) zachowuje idealną wysokość tekstu, ale rodzic nadal musi mieścić lub przewijać całość; nie gwarantuje poprawności całego ekranu. Unikać sztywnej wysokości, lineLimit(1) i ograniczania dynamicTypeSize bez oceny skutku. Dla własnych metryk można użyć @ScaledMetric(relativeTo:.body); nie zastępuje skalowania fontu. Dokumentacja Text/fixedSize i materiały Apple o Dynamic Type sprawdzone; fragment niekompilowany i nieuruchomiony, OS setting niewykonane.

Android / Compose

import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.sp

@Composable
fun PickupInformation() {
    Column(Modifier.verticalScroll(rememberScrollState())) {
        Text(
            "Punkt otwarty do 18:00. Odbiór przy wejściu od ogrodu.",
            fontSize = 17.sp
        )
    }
}

Tekst w sp, układ rosnący i zawijanie; bez ograniczenia maxLines dla potrzebnej informacji. Android od 14 stosuje nieliniową skalę do 200%; nie przeliczać fontów przez własne fontScale * scaledDensity. sp dla fontu nie oznacza automatycznej wysokości kontenera ani potwierdzenia całego ekranu. W formularzu zapewnić to samo dla TextField i napisów przycisków. Przegląd oficjalnego API i wskazówek skalowania wykonany; kompilacja, Android i OS setting niewykonane.

React Native

import React, { useState } from 'react';
import { ScrollView, Text, TextInput } from 'react-native';

export function PickupInformation() {
  const [note, setNote] = useState('');
  return (
    <ScrollView>
      <Text allowFontScaling maxFontSizeMultiplier={0}>
        Punkt otwarty do 18:00. Odbiór przy wejściu od ogrodu.
      </Text>
      <Text>Notatka do odbioru</Text>
      <TextInput
        value={note}
        onChangeText={setNote}
        multiline
        allowFontScaling
      />
    </ScrollView>
  );
}

allowFontScaling domyślnie jest włączone; maxFontSizeMultiplier={0} na Text usuwa limit także dziedziczony z rodzica. Nie wymuszać numberOfLines, adjustsFontSizeToFit i sztywnych wysokości tak, aby powiększony tekst był skracany lub ponownie zmniejszany. Sam prop nie dowodzi widocznej treści; zbadać pomiary i przepływ na każdej docelowej platformie. Dokumentacja Text/TextInput sprawdzona; typecheck/build/działanie React Native niewykonane.

HTML / CSS

<label for="note">Notatka do odbioru</label>
<textarea id="note"></textarea>
<style>
  html {
    font-size: 100%;
  }
  p,
  label,
  button,
  textarea {
    font-size: 1rem;
    line-height: 1.5;
  }
  textarea {
    width: 100%;
    box-sizing: border-box;
    min-height: 3em;
  }
  .information {
    height: auto;
    overflow-wrap: anywhere;
  }
</style>

Skalowalne fonty i kontrolki, bez stałej wysokości ukrywającej tekst. meta viewport nie powinno blokować zoomu; badanie musi uwzględniać rzeczywiste zachowanie user agenta. Fragment wyjaśnia mechanizm demonstracji i wymaga osadzenia w stronie. Składnia JS i rzeczywisty authored mechanizm WWW wykonane; zoom przeglądarki niewykonane.

Jak sprawdzić

  1. Ustal tekst poza wyjątkami, platformę i dostępne mechanizmy. Zapisz bazowe fonty, dane i stan formularza.
  2. W wybranym mechanizmie przejdź wszystkie dostępne kroki do 200%. Jeśli oceniasz współpracę z OS, zmień rzeczywiste ustawienie platformy, a nie tylko parametr demonstracji.
  3. Odczytaj osiągnięty rozmiar, sprawdź obcięcie, nachodzenie i zasłonięcie. Przewiń i użyj dostępnego ujawnienia pełnej informacji. Obecność w drzewie oceniaj osobno od widoczności.
  4. Wpisz notatkę, pokaż adres, zmniejsz tekst i zresetuj. Oczekuj pełnych danych i tego samego działania w powiększeniu.
  5. Jeżeli jedna metoda zawodzi, sprawdź inne wspierane metody przed oceną całego kryterium. Zapisz wynik konkretnego mechanizmu.

Historyczne wyniki z 2026-10-04

Sprawdzenie Wynik i granica
Flutter 3.44.9 / Dart 3.12.2 Analiza, 60 testów hostowych, końcowy iOS build/driver/install PASS; host używa fontu Ahem.
Końcowy XCTest v5 PASS, 151,088 sekundy testu; 40 stanów, 59 wejść, 8 PNG.
Rozmiar iOS 17 / 21,25 / 25,5 / 29,75 / 34 logical px; OS large bez zmiany. Good pełny, bad/control skracają od 150%; control ujawnia całość. Placeholder mieści się w RenderEditable.
Końcowe WWW 23 odczyty, 25 wejść, 4 JPEG; font 16 / 20 / 24 / 28 / 32 CSS px. Good przy 200%: 160 px wysokości; bad/control: 112 px przy scrollHeight 160. Ujawnienie control przywraca 160 px i visible overflow.
Formularz Wszystkie trzy warianty przyjmują Ogrod i wykonują podgląd. Nie każdy podgląd jest w kadrze; pełny wynik potwierdzają odczyty i asercje.
SwiftUI, Compose i React Native Dokumentacja sprawdzona; osobne kompilacje i runtime niewykonane.

Cztery wcześniejsze iOS FAIL i dwa hostowe FAIL zachowano w researchu. Początkowa geometria hostowego fontu różniła się od oczekiwań; pierwsza próba iOS ujawniła też placeholder poza polem. Kolejne próby nie potwierdziły aktywacji przycisku mimo widocznej ramki. Dopiero v5 z oczekiwaniem na ustanie ruchu po normalnych wejściach ukończył scenariusz.

Pierwsza szerokość WWW 42rem rosła razem z fontem i nie wykazała bariery. Po wspólnej zmianie na max 672 px bad ją ujawnił. Pierwszy końcowy zapis miał pustą tablicę odczytów; końcowe dane pochodzą z powtórzonego rzeczywistego przebiegu, nie z dopisanego wyniku. Nieustalone silnik/DPR WWW i rozmiary JPEG nie są dowodem zoomu.

Weryfikacja i ograniczenia

ACT b4f0c3 sprawdza ograniczenia meta viewport, a nie pełną zdolność użycia strony. Alternatywny mechanizm i zachowanie przeglądarki mogą zmienić ocenę założeń. Sprawdzone w researchu ACT 59br37 miało status PROPOSED i badało określone obcięcia przy kontrolowanym viewporcie; resize nie mierzy rzeczywistego zoomu. Nie wykonano silnika ACT.

Pełny tekst w AX dowodzi obecności semantycznej. didExceedMaxLines rozpoznaje limit, ale nie wszystkie klipy rodzica lub nachodzenie placeholdera. RenderParagraph/Editable pokazują geometrię Fluttera, bez pomiaru UIKit i odczytu AT. scrollHeight>clientHeight z overflow hidden daje kandydata dla prostej karty, bez ogólnego algorytmu transformacji i nakładek. Dane renderera i obraz są sekwencyjne; stara ramka po przewinięciu nie jest aktualną pozycją na PNG.

Jak sprawdza Clearship

Clearship porównuje drzewo i zrzuty tego samego ekranu przed zmianą systemowej wielkości tekstu i po niej. Metoda text-resize-3 szuka braku powiększenia, obcięcia, ukrycia, nakładania i utraty kontrolki; skalę szacuje z wysokości wierszy atramentu zamiast przyjmować ją z nazwy ustawienia. Dostępną drogę ujawnienia rozpoznaje tylko w zapisanych przejściach.

Android spełnił próg pomiaru, ale wynik wymaga ostrożności: kierunek zmian między próbami wybrano również po liczbach zestawu kontrolnego, więc pozostaje otwarta decyzja o niezależnym ponownym pomiarze. iOS jest poniżej progu i wymaga człowieka. Porównanie obejmuje jeden poziom OS, bez kroków pośrednich, własnych mechanizmów, pełnej oceny hierarchii i działania wszystkich kontrolek. P2 nie przewija, więc treść poza widocznym obszarem nie jest zbadana. Ustawienie Androida 2.0 nie oznacza dwukrotnego rozmiaru każdego fontu. Brak kandydata nie potwierdza wszystkich mechanizmów.

Powiązane kryteria