Ok, więc ja tylko grzebie wokół siebie, więc nie jestem absolutnie pewien, ale wydaje się, że tabela szukasz znajduje się w następującej lokalizacji w stosunku do korzenia glibc:
localedata/locales/i18n
Wygląda na to, że jest to ustawienie regionalne w Unicode (wersja 5). Zawiera on następujące, czyli tam, gdzie uważam, trzeba dokonać zmian:
% ENCLOSED ALPHANUMERICS/
<U24D0>..<U24E9>;/
W przypadku, gdy zastanawiasz się, ctype_output function (ld-ctype.c) wywołuje allocate_arrays który wzywa wcwidth_table_init. Funkcja wcwidth_table_init jest generowana przez 3level.h (która również generuje inne tabele, które podążają za tym samym szablonem). To jest łańcuch, który śledziłem, aby wyśledzić pliki w localedate/locales.
Tak jak powiedziałem, nie jestem w 100% pewien, czy to właściwy stół, ale pomyślałem, że podzielę się tym, co znalazłem.
Komentarze w tym pliku sugerują, że jest on generowany przez localedata/gen-unicode-ctype.c, który mówi o pliku UnicodeData, ale gdzie jest plik UnicodeData który jest używany w dystrybucji glibc ...? Nie chcę łatać wygenerowanego pliku, wydaje się, że przy następnym pojawieniu się nowej wersji stanie się on lepki. – bdonlan
Hmmm ... to dobra uwaga. Czy mimo to próbowałeś zmodyfikować wygenerowany plik, tylko w celu sprawdzenia, czy funkcja wcwidth() zwraca poprawne wartości? Może to być przydatne, ponieważ udowodni, że jesteśmy na dobrej drodze. Następnie możemy włożyć więcej wysiłku, aby dowiedzieć się, jak generowane są pliki, aby problem mógł zostać naprawiony w katalogu głównym. – Naaff
@bdonlan: Czy zaktualizowali to, aby ponownie uruchomić plik Unicode 6.0.0 UnicodeData? Może zostało to naprawione w obecnej wersji. – tchrist