Grapheme: визначення ширини символа

Перекладено ШІ 1 Laravel News 02 червня, 2026

Вам коли-небудь доводилося стикатися з проблемами вирівнювання тексту в термінальних програмах через неправильне визначення ширини символів? У нашій статті ми розглянемо інноваційну бібліотеку Grapheme, яка допоможе вам вирішити ці виклики та забезпечить коректне обчислення ширини символів у PHP-додатках

У термінальних програмах важливо точно визначити ширину відображення символів Unicode для коректного вирівнювання та форматування тексту. Однак сучасний текст Unicode має свої складнощі:

  • Емодзі та символи східноазійських мов (CJK) зазвичай займають дві клітинки в терміналах.
  • Символи з нульовою шириною (наприклад, сполучники, діакритичні знаки) не впливають на розташування, проте можуть спричинити помилки в розрахунках ширини.
  • Складний текст, такий як емодзі з модифікаторами кольору шкіри або прапорами, потребує особливого підходу.
  • Вбудовані функції PHP не завжди можуть вирішити ці проблеми.

Щоб вирішити ці питання, Аарон Франсіс створив бібліотеку Grapheme, яка забезпечує точні, швидкі та ретельно протестовані методи для обчислення ширини відображення будь-якого символа чи кластеру графем у PHP-додатках.

# Основні можливості:

  • Широка підтримка Unicode: Обробляє символи CJK, емодзі (включаючи модифікатори), символи з нульовою шириною, комбіновані знаки, регіональні індикатори та селектори варіацій.
  • Висока продуктивність: Оптимізовано з використанням раннього виходу та розумних механізмів кешування.
  • Мінімальні залежності: Потребує PHP 8.2+ та необов'язкове розширення intl.
  • Сумісність з терміналами: Спрямована на відповідність поведінці wcwidth() у сучасних емуляторах терміналів.

Щоб встановити цей пакет, скористайтеся Composer:

composer require soloterm/grapheme

Ось кілька прикладів використання пакета:

use SoloTerm\Grapheme\Grapheme;

Grapheme::wcwidth('Я'); // Поверне: 1
Grapheme::wcwidth('文'); // Поверне: 2
Grapheme::wcwidth('😀'); // Поверне: 2

Для отримання додаткової інформації та перегляду вихідного коду відвідайте репозиторій Grapheme на GitHub.

Популярні

Інше, що варто прочитати

17 Оновлено 01 червня, 2026

Налаштування Xdebug з Docker та PHP 8.4 всього за одну хвилину

Встановлення Xdebug може бути складним завданням, але в цій статті ми розкриємо, як швидко та просто налаштувати його за допомогою Docker на прикладі Laravel. Дочитайте до кінця, щоб дізнатися, як за кілька хвилин зробити Xdebug вашим надійним помічником у розробці

49 Оновлено 01 червня, 2026

Nuxt 3 + Laravel Sanctum: Просте та надійне рішення для автентифікації вашого SPA та API

У сучасній веб-розробці аутентифікація є ключовою для захисту додатків і даних користувачів. Дізнайтеся, як модуль nuxt-sanctum-authentication спростить інтеграцію між Nuxt 3 та Laravel Sanctum, забезпечуючи надійний і зручний спосіб реалізації аутентифікації для вашого проєкту

41 Оновлено 01 червня, 2026

Що нового в PHP 8.5

PHP 8.5 обіцяє безліч нових можливостей, таких як оператор Pipe, функції `array_first()` та `array_last()`, а також нове розширення URI. Чи готові ви дізнатися, як ці функції можуть спростити вашу розробку? Читайте далі, щоб дізнатися більше про ці захоплюючі нововведення