iCalendar (RFC 5545) is nested BEGIN/END blocks of content lines, folded at 75 octets with CRLF and a leading space. A time can be a date, floating local time, UTC with a Z, or wall-clock time in a named zone, and repeating rules expand in that zone, so DST moves the UTC instants and not the meeting. Open an .ics, or one of the two samples, to see every line, every event in your own time zone, and a recurrence expanded across a clock change.
weekly-sync.ics: invite with VTIMEZONE, weekly RRULE + UNTIL, EXDATE, escaped text, a folded UTF-8 description, alarm, all-day eventWith DTSTART;TZID=…, every occurrence keeps its local time and its UTC instant shifts by an hour at each DST change. Write the same start in UTC (…Z) and the instants stay put, so in local time the meeting jumps to 08:00 or 10:00. Each row shows both. Gaps (times skipped in spring) and repeated hours are marked.
Lines longer than 75 bytes are split with CRLF + space. Count characters instead of UTF-8 bytes and a line of accented text overflows; split in the middle of a multi-byte character and some readers show a replacement glyph. Text values also escape backslash, comma, semicolon and newline. Type a description to see both.