diff --git a/Helper/ProgressBar.php b/Helper/ProgressBar.php index f4eec051c..b406292b4 100644 --- a/Helper/ProgressBar.php +++ b/Helper/ProgressBar.php @@ -183,9 +183,9 @@ public function setMessage(string $message, string $name = 'message'): void $this->messages[$name] = $message; } - public function getMessage(string $name = 'message'): string + public function getMessage(string $name = 'message'): ?string { - return $this->messages[$name]; + return $this->messages[$name] ?? null; } public function getStartTime(): int diff --git a/Helper/Table.php b/Helper/Table.php index 6aad9e95b..1f026dc50 100644 --- a/Helper/Table.php +++ b/Helper/Table.php @@ -371,8 +371,9 @@ public function render() if ($headers && !$containsColspan) { if (0 === $idx) { $rows[] = [sprintf( - '%s: %s', - str_pad($headers[$i] ?? '', $maxHeaderLength, ' ', \STR_PAD_LEFT), + '%s%s: %s', + str_repeat(' ', $maxHeaderLength - Helper::width(Helper::removeDecoration($formatter, $headers[$i] ?? ''))), + $headers[$i] ?? '', $part )]; } else { diff --git a/Tests/Helper/TableTest.php b/Tests/Helper/TableTest.php index 728ea847f..4af12e34c 100644 --- a/Tests/Helper/TableTest.php +++ b/Tests/Helper/TableTest.php @@ -1649,6 +1649,28 @@ public static function provideRenderVerticalTests(): \Traversable $books, ]; + yield 'With multibyte characters in some headers (the "í" in "Títle") and cells (the "í" in "Dívíne")' => [ + << [ <<