Dziwne znaki:
ก็็็็็็็็็็็็็็็็็็็็ กิิิิิิิิิิิิิิิิิิิิ ก้้้้้้้้้้้้้้้้้้้้ ก็็็็็็็็็็็็็็็็็็็็ กิิิิิิิิิิิิิิิิิิิิ ก้้้้้้้้้้้้้้้้้้้้ ก็็็็็็็็็็็็็็็็็็็็ กิิิิิิิิิิิิิิิิิิิิ ก้้้้้้้้้้้้้้้้้้้้ ก็็็็็็็็็็็็็็็็็็็็ กิิิิิิิิิิิิิิิิิิิิ ก้้้้้้้้
Pytanie: Dlaczego te postacie rysują tak dziwnie, gdy patrzysz na nie w systemie Windows *?
Oto fragment z programu Outlook dla szczęśliwych drani, którzy nie są zmuszeni do korzystania z systemu Windows:
Powiązane: Jakie jest używane kodowanie znaków?
* Windows jak w systemie operacyjnym. Aplikacje rysujące tekst za pomocą GTK + i podobnych nie pokazują tego, jak coś z podróży LSD poszło nie tak .
windows
characters
Marcus Hansson
źródło
źródło
Odpowiedzi:
Ponieważ wydaje mi się, że trochę uderzyłem, myśląc, że Windows „robi to dobrze”, uważam, że powinienem opublikować odpowiedź, aby uzasadnić swoją pozycję.
Faktem jest, że tekst, który masz, mówi systemowi operacyjnemu, aby renderował niesamowitą ilość łączonych znaków. Problem, który jeden system operacyjny faktycznie renderuje, a inny nie, wynika z wielu problemów. Jednym z tych problemów jest to, jak dokładni byli programiści, kiedy pisali kod, aby je renderować, inny byłby spowodowany tym, że programiści byli zbyt leniwi, aby je właściwie wdrożyć, jeśli w ogóle.
Zasadniczo sprowadza się to do tego, że języki pisane są płynnymi rzeczami i że wiele znaków w niektórych językach ma wiele różnych znaków diakrytycznych, które stosuje się w celu modyfikacji wymowy znaków. Jak radzimy sobie z tymi wszystkimi znakami diakrytycznymi, czy nadajemy każdej literze znak diakrytyczny nowy znak (co skutkowałoby jedną dużą liczbą nowych i prawie identycznych znaków), czy też tworzymy zestaw znaków specjalnie dla znaków diakrytycznych i zmniejszamy nasz ogólny alfabet?
Unicode daje nam możliwość zrobienia obu tych rzeczy, ale robiąc to, programiści, którzy muszą wyrenderować te znaki diakrytyczne, muszą poradzić sobie z faktem, że niektóre znaki mają wiele znaków diakrytycznych, jeden powyżej i jeden poniżej, a następnie programista ma zadać pytanie, kiedy przestaną. Mogą ograniczyć go do dwóch i zadowolić większość ludzi, ale zignorować tych, którzy chcą lub potrzebują trzech znaków diakrytycznych, aby formalnie pisać w swoim własnym języku.
Microsoft, czy to słusznie, czy nie, postanowił pozwolić użytkownikowi zdecydować, ile dodatkowych znaków osoba chce użyć. Ta ścieżka wymaga raczej dobrego programisty i trudnej racjonalizacji. W pełni ich popieram, zarówno pozwalając na to, jak i na to, że robią to dobrze .
Z drugiej strony, gdyby te postacie zaginęły, chciałbym wiedzieć, dlaczego ich nie ma. Czy była to decyzja „upuszczamy to na podłogę po
x
znakach diakrytycznych”, czy może dlatego, że programiści byli zbyt leniwi, aby zrobić to właściwie i potencjalnie narażali mnie na przepełnienie bufora z kodem ukrytym w znakach diakrytycznych, który został wydany do wykonania przez system?Prostym problemem jest to, że poprzez renderowanie tych postaci widzę, że system robi dokładnie to, co mu polecono, zamiast robić to, co uważa za słuszne, lub, co gorsza, robi coś potencjalnie szkodliwego .
źródło
Ponieważ system Windows próbuje renderować dużą liczbę znaków Unicode łączących znaki, gdy tekst je zawiera, nawet jeśli żaden rzeczywisty skrypt nigdy nie połączyłby tylu znaków razem.
źródło