Уяви: у Chrome літера в PDF на місці, а в іншому переглядачі зникає. Word-файл на твоєму комп’ютері має охайний вигляд, а в колеги роз’їжджається. А текст із PDF копіюється набором дивних знаків. Усі ці випадки легко списати на кодування, але причина може бути не в ньому.
Unicode розділяє проблеми з показом тексту на три основні типи: шрифт не має потрібного символу, програма неправильно формує письмо або символи пошкоджені чи закодовані не так. Спершу визнач, із чим саме маєш справу, - інакше можна виправляти не ту річ. Настанови Unicode, доступні 8 березня 2025 року, описують ці причини окремо.
Що саме ламається: символ, гліф чи кодування¶
Unicode - стандарт, який визначає символи й присвоює їм кодові позиції. Шрифт - це набір графічних форм, якими програма показує символи. Символ у тексті й намальована літера пов’язані, але це не одне й те саме.
Текст може містити правильний символ, якого немає у шрифті. Тоді програма може показати порожній квадрат, знак питання в рамці, квадрат із діагональними рисками, шістнадцятковий код або порожнє місце. Unicode називає типовий запасний гліф для відсутнього символу .notdef. Unicode описує такі ознаки у настановах, доступних 8 березня 2025 року.
Гліф - конкретне зображення символу у шрифті. Один символ у різних шрифтах або контекстах може виглядати по-різному, а два різні символи - бути схожими. Тож сам погляд на сторінку не завжди допоможе: перевір, який текст стоїть за видимими літерами.
Кодування відповідає за те, як символи Unicode подаються байтами під час збереження чи передавання тексту. UTF-8, UTF-16 і UTF-32 можуть представляти всі символи Unicode, але роблять це різними послідовностями байтів. За FAQ Unicode про UTF, доступним 8 березня 2025 року, UTF-8 використовує від одного до чотирьох 8-бітових байтів, UTF-16 - одну або дві 16-бітові одиниці, а UTF-32 - одну 32-бітову одиницю.
Як пояснює Unicode Consortium: “When Unicode text is displayed but there is a lack of font support for some characters in the text, the typical symptom is appearance of special character-not-supported or ‘tofu’ glyphs.”
Простими словами, «тофу» - це умовна назва квадрата, який з’являється замість символу, коли програма не може показати його наявним шрифтом. Такий знак сам по собі не доводить, що текст зіпсований.
Коли програма читає байти не в тому кодуванні, замість символів з’являються беззмістовні знаки. Це явище називають mojibake. Наприклад, документ зберегли в одному кодуванні, а програма намагається прочитати його в іншому. Проблема також може виникнути під час конвертації чи видобування тексту з PDF.
Якщо послідовність UTF-8 неправильна, програма, що дотримується стандарту, не має трактувати її як правильні символи. Вона може повідомити про помилку, відкинути байти або вставити U+FFFD - символ заміни. FAQ Unicode про UTF, доступний 8 березня 2025 року, описує ці варіанти.
Третя причина - неправильне формування письма. Програма отримує правильні символи, але не поєднує їх у потрібні форми або ставить діакритичні знаки не там. Арабські літери можуть не з’єднуватися, а індійські сполучення приголосних і позначки - показуватися неправильно. Тут проблема може бути в підтримці формування письма програмою, у шрифті або в помилці шрифту, а не в кодуванні.
Щоб не плутатися, перевір три речі окремо. Чи правильні символи в тексті? Чи має шрифт потрібні гліфи? Чи вміє програма правильно формувати й показувати послідовність для цього письма? Кожна відповідь підкаже інший спосіб виправлення.
Як текст проходить шлях від байтів до сторінки¶
Коли програма відкриває текстовий файл, вона читає байти й визначає, які символи за ними стоять. Якщо кодування правильне, перетворення між форматами UTF може пройти без втрати даних. Якщо байти прочитано не так, помилка з’явиться ще до того, як шрифт почне малювати літери.
Після читання тексту програма шукає для символів відповідні гліфи. Потрібного гліфа може не бути у шрифті, а самого шрифту - на комп’ютері. Тоді програма шукає заміну серед доступних шрифтів. Різні програми й операційні системи можуть обирати заміну по-різному, тож той самий файл не обов’язково матиме однаковий вигляд усюди.
Навіть якщо потрібні гліфи є, цього не досить для правильного відображення складного письма. Для арабської та індійських систем письма програма має врахувати послідовність символів і те, як вони впливають один на одного в контексті. Неправильна форма літери чи невдале розташування позначки можуть свідчити про помилку на цьому етапі, а не про відсутній символ.
Unicode зауважує: “The content might not be using the appropriate Unicode characters for the text, or it might not be using appropriate character sequences to represent certain text elements.”
Інакше кажучи, текст може містити не ті символи або не ті послідовності, навіть якщо на екрані вони схожі на потрібні. Наприклад, використання старих арабських Presentation Forms у звичайному арабському тексті заважає правильно формувати контекстні з’єднання.
Документ може виглядати правильно в одній програмі з одним шрифтом, але це не гарантує сумісності з іншими програмами. Коли перевіряєш багатомовний файл, дивись не лише на сторінку: переконайся, що текст можна виділити, скопіювати й знайти.
У PDF є ще один шар перевірки. Сторінка, яку ти бачиш, і текстовий шар для пошуку, копіювання та видобування тексту можуть поводитися по-різному. Сторінка може виглядати бездоганно, але копіювання дасть помилкові символи через неправильне зіставлення графічних форм із символами. Можлива й протилежна ситуація: текст копіюється правильно, а переглядач не показує частину символів через проблему зі шрифтом.
Для першої перевірки відкрий файл у програмі, де його створили, а потім - в іншому переглядачі. Скопіюй проблемний фрагмент у звичайний текстовий редактор і подивися, чи збереглися символи. Якщо це текстовий файл, з’ясуй, яке кодування програма використовує під час читання. Після цього перевір шрифт, його вбудовування та підтримку письма.
Як відрізнити проблему шрифту від помилки кодування¶
Те, що бачиш на сторінці, допомагає знайти причину, але не завжди дає готову відповідь. Квадрат замість однієї рідкісної літери частіше вказує на відсутній гліф. Абракадабра в багатьох словах після відкриття текстового файла більше схожа на неправильне читання байтів. Якщо PDF виглядає правильно, а копіюється погано, підозрюють зіставлення символів у його текстовому шарі.
Перевіряй у такому порядку:
- З’ясуй, де саме проблема. Перевір, чи зник один символ, ціле письмо або весь текст після відкриття чи конвертації. Одна відсутня літера й суцільна абракадабра - різні підказки.
- Порівняй програми. Відкрий файл у початковій програмі й іншому переглядачі. Якщо вигляд відрізняється, перевір взаємодію програми, операційної системи та шрифту.
- Скопіюй текст окремо. У PDF виділи проблемний фрагмент і встав його в текстовий редактор. Якщо скопійований текст правильний, а на сторінці є квадрати, символи можуть бути на місці, а проблема - у відображенні.
- Перевір кодування, якщо йдеться про текстовий файл. Переконайся, що програма читає байти в тому самому кодуванні, у якому їх записали. Правильно виконаний перехід між UTF-8, UTF-16 і UTF-32 не має псувати текст.
- Перевір шрифт і формування письма. З’ясуй, чи встановлений шрифт у системі й чи є в ньому потрібні гліфи. Для арабського чи індійського тексту відкрий фрагмент у програмі, яка підтримує відповідне формування письма.
- Перевір пошук і видобування. У PDF пошукай слово, скопіюй його й порівняй із тим, що бачиш на сторінці. Якщо результати різняться, окремо перевір візуальний шар і зіставлення тексту.
Ось чому варто порівнювати PDF-переглядачі. У зверненні до Mozilla PDF.js, обговорюваному у 2024 році, автор повідомив: “I have a PDF document using the font ‘UVN Hong Ha Hep’. My PDF file works well when viewed in Chrome, but some characters are missing when using PDF.js.”
Під час розслідування з’ясували, що для двох символів у самому шрифті були порожні гліфи. Після вилучення порожнього компонента відображення запрацювало в перевіреному середовищі. Обговорення також показало, що результат залежав від поєднання PDF.js, браузера, операційної системи й шрифту; учасники відтворювали симптоми у WordPad на Windows. Тож перевірка в одній програмі не дає повної картини.
Unicode також нагадує про невидимі символи керування. Наприклад, ZWJ і ZWNJ впливають на з’єднання символів, а керівні символи двонапрямного тексту задають напрямок. Те, що символ має нульову ширину або не видимий на сторінці, саме по собі не доводить пошкодження. FAQ Unicode про непідтримувані символи, доступний 8 березня 2025 року, пояснює поведінку таких символів.
Word, PDF і вбудовування шрифтів¶
У Word шрифт може бути на комп’ютері автора, але не на пристрої отримувача. Тоді програма підставляє інший. Сам текст може залишитися правильним, але нова гарнітура змінить ширину рядків, переноси, кількість сторінок і загальний вигляд документа.
Microsoft пише, що вбудовування шрифтів у документ Office може зберегти шрифт, макет і стиль на пристрої, де потрібного шрифту немає, а також допомогти уникнути прямокутників замість спеціальних символів. Але файл стане більшим, а можливість вбудувати шрифт залежить від його ліцензії. Деталі є в документації Microsoft про вбудовування шрифтів, доступній 8 березня 2025 року.
У деяких версіях Word і PowerPoint можна вбудувати тільки використані в документі символи або весь набір шрифту. Перший варіант зменшує файл, але може завадити подальшому редагуванню: для нових слів у отримувача може не бути потрібних символів. Якщо файл редагуватимуть, Microsoft радить розглянути вбудовування всіх символів. Документація Microsoft, доступна 8 березня 2025 року, також нагадує про дозволи творця шрифту: окремі шрифти не можна вбудовувати, а інші мають обмеження на перегляд, друк чи редагування.
Хмарні шрифти Office не гарантують, що отримувач матиме кожен нестандартний шрифт або зможе працювати з ним без інтернету. Microsoft зазначає, що хмарні шрифти Office доступні передплатникам Office за наявності підключення до мережі. Для власних шрифтів або роботи офлайн може знадобитися вбудовування. Документація про шрифти Office, доступна 8 березня 2025 року, пояснює це обмеження.
Сучасний засіб вибору шрифтів у Word для вебу й PowerPoint для вебу може позначити шрифт, якого бракує. Якщо програма підставляє інший для перегляду, назва шрифту в самому файлі не змінюється, але вигляд і компонування документа можуть відрізнятися. Microsoft пояснює поведінку засобу вибору шрифтів, документація доступна 8 березня 2025 року.
У LibreOffice є таблиця заміни шрифтів. Програма може показувати інший шрифт лише на екрані або і на екрані, і під час друку. Назва шрифту, збережена в документі, від цього не змінюється. Через це файл може прийнятно виглядати на одному пристрої й інакше - на іншому. Параметри описані в довідці LibreOffice про шрифти, доступній 8 березня 2025 року.
LibreOffice також дозволяє вбудовувати шрифти в документ. Це збільшує розмір файла й залежить від прапорців ліцензування. Для багатомовного файла перевір, які саме набори символів вбудовуються: у діалозі окремо позначають латинські, азійські та складні системи письма. Латинський набір не обов’язково покриває всі мови документа. Довідка LibreOffice про вбудовування, доступна 8 березня 2025 року, описує ці параметри.
Вбудовування не вирішує всіх проблем. Воно може прибрати залежність від шрифту, установленого на пристрої отримувача, але не виправить текст, який прочитали в неправильному кодуванні. Так само воно не виправляє хибні послідовності символів, помилки формування письма в програмі чи неправильне зіставлення символів під час копіювання з PDF.
Коли потрібен інший підхід і що часто йде не так¶
Не кожен документ треба передавати з вбудованими шрифтами. Якщо файл використовує поширені шрифти, правильно відображається на пристроях отримувачів і не містить складних символів, може вистачити перевірки макета в різних програмах. Якщо є спеціальні літери, нестандартна гарнітура або документ мають редагувати, перевір шрифт і дозвіл на вбудовування.
PDF для перегляду й документ для редагування варто перевіряти по-різному. Для перегляду важливі вигляд у кількох програмах і друк. Для подальшої роботи перевір також копіювання, пошук, виділення тексту й можливість додати нові символи. Якщо PDF архівують або обробляють автоматично, правильного вигляду сторінки недостатньо: перевір і текстовий шар.
Не розраховуй, що один шрифт покриє всі системи письма в багатомовному документі. Перевір окремо латиницю, кирилицю, арабський текст та інші письма, які використовуються у файлі. Подивись не лише на основний текст, а й на імена, назви, примітки, підписи та вставлені фрагменти: вони могли мати інше форматування.
Порожній квадрат ще не означає, що зіпсований текст. Якщо копіювання дає правильний символ, зміна кодування може створити нову помилку. Спершу перевір, чи є потрібний шрифт, як працює його заміна і чи не винен переглядач. Якщо ж під час копіювання з’являються неправильні символи, зміна гарнітури навряд чи допоможе.
Так само не вважай, що правильний вигляд доводить правильне кодування. Старі арабські Presentation Forms можуть виглядати правдоподібно з конкретним шрифтом, але не поводитися як звичайний арабський текст із контекстними формами. Перевір не лише зображення сторінки, а й символи та послідовності, з яких складається текст.
Перевіряй файл після кожної конвертації. Перехід із Word у PDF, розпізнавання чи повторне збереження в іншій програмі можуть змінити шрифти або текстовий шар. Порівняй вихідний і кінцевий файли за чотирма пунктами: вигляд, копіювання, пошук і виділення. Якщо зник один символ, перевір його в іншій програмі, а не роби висновок за єдиним переглядачем.
Ще одна пастка - вбудувати лише використані символи, а потім надіслати документ для редагування. Наявний текст може показуватися правильно, але потрібних гліфів для нових слів у файлі не буде. Перед надсиланням з’ясуй, чи отримувач лише переглядатиме документ, чи змінюватиме його. Відповідь підкаже, який режим вбудовування обрати, якщо ліцензія шрифту це дозволяє.
Для складного письма не змінюй навмання напрямок чи порядок символів. Невидимі керівні знаки можуть впливати на двонапрямний текст і з’єднання, хоча на сторінці їх не видно. Перевір, чи повторюється проблема в іншій програмі, а потім досліди послідовність тексту й підтримку формування письма.
FAQ¶
Як визначити, проблема в шрифті чи в кодуванні символів?¶
Скопіюй проблемний текст у звичайний текстовий редактор і порівняй результат із виглядом на сторінці. Правильний скопійований текст за наявності квадратів на екрані вказує на проблему шрифту або відображення; зіпсований текст під час копіювання вказує на проблему кодування чи текстового шару.
Чому багатомовний текст у PDF виглядає правильно, але копіюється абракадаброю?¶
PDF може містити гліфи, які відображаються правильно, але неправильне або неповне зіставлення цих гліфів із символами Unicode. Перевір текст окремим копіюванням і пошуком, а не лише візуальним переглядом.
Як запобігти заміні шрифту у Word після надсилання документа?¶
Вбудуй шрифт у файл, якщо це дозволяє його ліцензія, і перевір документ на іншому пристрої або в іншій програмі. Якщо отримувач редагуватиме файл, обирай вбудовування всіх символів, а не лише використаних.
Чому арабські або індійські літери показуються окремо чи в неправильному порядку?¶
Таке відображення може виникати через помилки формування письма, підтримку якого забезпечують програма й шрифт. Перевір текст в іншій програмі, а також упевнись, що вміст використовує належні символи й послідовності Unicode.
Чи виправить вбудовування шрифту помилки відображення й копіювання PDF?¶
Вбудований шрифт може допомогти, коли проблема спричинена відсутнім шрифтом або гліфом на пристрої отримувача. Вбудовування не виправляє помилкове кодування, формування письма чи зіставлення символів для видобування тексту.