Được rồi, vì vậy tôi chỉ chọc xung quanh bản thân mình vì vậy tôi không hoàn toàn chắc chắn, nhưng có vẻ như các bảng mà bạn đang tìm kiếm được tìm thấy ở vị trí sau liên quan đến gốc glibc:
localedata/locales/i18n
Có vẻ như đây là ngôn ngữ Unicode (phiên bản 5). Nó chứa thông tin sau, đó là nơi tôi tin rằng bạn cần phải thực hiện những thay đổi của bạn:
% ENCLOSED ALPHANUMERICS/
<U24D0>..<U24E9>;/
Trong trường hợp bạn đang tự hỏi, hàm ctype_output (ld-ctype.c) gọi allocate_arrays trong đó kêu gọi wcwidth_table_init. Hàm wcwidth_table_init được tạo bởi 3level.h (cũng tạo ra các bảng khác theo cùng một khuôn mẫu). Đây là chuỗi mà tôi theo dõi để theo dõi các tập tin trong localedate/locale.
Như tôi đã nói, tôi không chắc chắn 100% rằng đây là bảng bên phải, nhưng tôi nghĩ tôi sẽ chia sẻ những gì tôi đã tìm thấy.
Nhận xét trong tệp đó đề xuất tệp được tạo bởi localedata/gen-unicode-ctype.c, nói về tệp UnicodeData, nhưng tệp UnicodeData ở đâu được sử dụng trong phân phối glibc ...? Tôi không muốn vá một tập tin được tạo ra, có vẻ như nó sẽ bị dính trong lần phát hành mới. – bdonlan
Hmmm ... đó là một điểm tốt. Bạn đã thử sửa đổi tệp đã tạo chưa, chỉ để xác minh rằng wcwidth() trả về các giá trị chính xác? Điều này có thể hữu ích vì nó sẽ chứng minh rằng chúng ta đang đi đúng hướng. Sau đó, chúng tôi có thể nỗ lực nhiều hơn để tìm hiểu cách các tệp được tạo ra để vấn đề có thể được khắc phục ở gốc của nó. – Naaff
@bdonlan: Họ đã cập nhật để chạy lại bằng tệp UnicodeData Unicode 6.0.0 chưa? Có thể nó đã được sửa trong bản phát hành hiện tại. – tchrist