Чому певні персонажі малюють жахливо, жахливо неправильно в Windows?


16

Непарні символи:

ก็็็็็็็็็็็็็็็็็็็็ กิิิิิิิิิิิิิิิิิิิิ ก้้้้้้้้้้้้้้้้้้้้ ก็็็็็็็็็็็็็็็็็็็็ กิิิิิิิิิิิิิิิิิิิิ ก้้้้้้้้้้้้้้้้้้้้ ก็็็็็็็็็็็็็็็็็็็็ กิิิิิิิิิิิิิิิิิิิิ ก้้้้้้้้้้้้้้้้้้้้ ก็็็็็็็็็็็็็็็็็็็็ กิิิิิิิิิิิิิิิิิิิิ ก้้้้้้้้

Питання: Чому ці символи малюють настільки дивно, коли ви дивитесь на них у Windows *?

Ось фрагмент з Outlook для вас щасливих ублюдків, які не змушені користуватися Windows:

Речі

Пов’язано: Для чого використовується кодування символів?

* Windows, як і в ОС. Програми, що малюють текст за допомогою GTK + та лайків, не показують, що це щось із помилки LSD-поїздки .


Ви кажете, що на вашій машині Windows символи, які ви ввели у запитанні, виглядають як символи на зображенні? Оскільки набрані символи добре виглядають на моїй машині Windows.
dsolimano

1
Ваше запитання містить необгрунтоване твердження - що Windows малює їх «неправильно». Це допоможе, якби ви заявили, як ви думаєте, як їх слід намалювати, а що конкретно не так із способом їх малювання.
Девід Шварц

2
Мені було б цікаво побачити, як інші операційні системи справляються з цим, я бачу лише те, як це робить Windows, і мені це здається "правильним".
Мокубай


1
Також пов'язано: en.wikipedia.org/wiki/Combining_character
iglvzx

Відповіді:


10

Оскільки я, здається, трохи постраждав, думаючи, що Windows "робить це правильно", я вважаю, що повинен написати відповідь, щоб виправдати свою позицію.

Справа в тому, що текст, який ви маєте, говорить операційній системі зробити божевільну кількість об'єднаних символів. Проблема в тому, що одна операційна система насправді їх рендерує, а інша - через низку проблем. Одне з цих питань полягає в тому, наскільки ретельними були програмісти, коли вони писали код для їх надання, інше, через те, що програмісти будуть занадто ледачими, щоб їх правильно реалізувати, якщо вони взагалі були.

В основному це зводиться до думки про те, що письмові мови є рідкими речами, і що багато символів на певних мовах мають багато різних діакритичних даних, які застосовуються для зміни вимови символів. Як ми поводимось із усіма цими діакритиками, чи даємо кожній букві з діакритиком новий символ (що призвело б до одного чорта безлічі нових і майже однакових символів) чи ми створюємо набір символів спеціально для діакритики та зменшуємо наш загальний алфавіт?

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

Майкрософт правильно чи неправильно вирішив дозволити користувачеві вирішувати, скільки зайвих марок людина хоче використати. Цей шлях потребує досить хорошого програміста і деякої жорсткої раціоналізації, яку слід пройти. Я цілком їх підтримую і в дозволі цього, і в тому, що вони роблять це добре .

Якби цих персонажів не було, з іншого боку, я хотів би знати, чому вони відсутні. Це було рішення "ми скидаємо це на підлогу після xдіакритики", чи це було через те, що програмісти занадто ліниві робити це належним чином і, можливо, піддають мене деякому переповненню буфера з кодом, прихованим у діакритиці, що передається для виконання система?

Проста проблема тут полягає в тому, що, фактично переводячи цих символів, я бачу, що система робить саме те, що їй сказано, а не робити те, що вважає за правильне, або, що ще гірше, робить щось потенційно шкідливе .


11
Або: Чому Windows так добре малює жахливо, жахливо неправильні символи?
mtone

Покриття чужого тексту відповідає критеріям "потенційно шкідливого" моєї книги. (Можливо, повідомлення, яке приховується, є важливим.) Між іншим, моїм кращим рішенням буде якась форма відсікання, а не обмеження кількості діакритиків. (Якщо дійсно є мови, в яких використовуються символи, які перетинаються з символами на сусідніх лініях, мені це неважливо знати!)
Гаррі Джонстон,

Далі: оскільки MS навряд чи незабаром змінить таку поведінку, Facebook та інші сайти, які приймають дані користувачів, швидше за все намагаються оздоровити набір персонажів, щоб запобігти зловмисникам не зловживати цією функцією. На жаль, процес санітарії може мати небажані побічні ефекти. Якщо Windows вирізала вихід, це не було б необхідним.
Гаррі Джонстон

4

Чому ці символи малюють настільки дивно, коли ви дивитесь на них у Windows *?

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


Імовірно, це означає, що Windows "робить це правильно" відповідно до того, що про це насправді просять, а не встановлює обмеження на кількість об'єднаних символів.
Мокубай

Дивіться також superuser.com/questions/389333/…, що, схоже, вказує на те, що такі хитрощі набули популярності у Facebook.
Jukka K. Korpela

@Mokubai: справа в тому, що це недовірені дані - дані, що надходять з Інтернету. Windows не повинна обов'язково робити те, що про це вимагають недовірені дані, якщо це може бути не в інтересах користувача.
Гаррі Джонстон

1
@HarryJohnston Я б більше хвилювався, якби він не показав усіх діакритиків, будь ласка, дивіться мою відповідь.
Мокубай
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.