2009-05-05 3 views
5

예를 들어 wcwidth()과 같은 함수에 대해 glibc는 유니 코드 속성의 데이터베이스를 어디에서 얻습니까? 몇 가지 오류 항목을 수정하는 데 관심이 있지만이 정보가 소스 배포판에있는 곳을 찾을 수없는 것 같습니다.glibc는 어디에서 유니 코드 속성의 데이터베이스를 얻습니까?

나는 주로 데비안 또는 우분투 리눅스에서이 문제에 관심이 있습니다.

답변

1

좋아, 그래서 난 그냥 내가 절대적으로 확실하지 않다, 그러나 당신이 찾고있는 테이블이 glibc는 루트에 다음과 같은 상대적인 위치에있는 것 같습니다 자신의 주위에 파고 해요 :

localedata/locales/i18n 

이것은 유니 코드 (버전 5) 로켈 인 것으로 보입니다. 당신이 궁금

% ENCLOSED ALPHANUMERICS/ 
    <U24D0>..<U24E9>;/ 

경우, 함수 ctype_output (LD-ctype.c가) wcwidth_table_init를 호출 allocate_arrays를 호출 : 내가 당신을 변경해야 믿는 곳이다 다음을 포함합니다. wcwidth_table_init 함수는 3level.h (동일한 템플릿을 따르는 다른 테이블도 생성 함)에 의해 생성됩니다. 이것은 내가 localedate/locales에있는 파일을 추적하기 위해 추적 한 체인입니다.

내가 말했듯이, 나는 이것이 올바른 테이블이라는 것을 100 % 확신하지 못했지만, 내가 찾은 것을 나눌 것이라고 생각했습니다.

+1

해당 파일의 주석은 UnicodeData 파일에 대해 이야기하는 localedata/gen-unicode-ctype.c에 의해 생성되었지만 UnicodeData 파일은 어디에 있는지 설명합니다 그 glibc 배포판에 사용되는 ...? 나는 생성 된 파일을 패치하고 싶지 않다. 다음에 새로운 릴리즈가있을 때 끈적해질 것 같다. – bdonlan

+0

흠 ... 좋은 지적입니다. 어쨌든 wcwidth()가 올바른 값을 반환하는지 확인하기 위해 생성 된 파일을 수정 해 보았습니까? 이것은 우리가 올바른 길을 가고 있음을 입증하는 데 유용 할 수 있습니다. 그런 다음 파일을 생성하는 방법을 찾는 데 더 많은 노력을 기울여 문제를 루트에서 수정할 수 있습니다. – Naaff

+0

@bdonlan : 유니 코드 6.0.0 유니 코드 데이터 파일로 다시 실행하도록 업데이트 했습니까? 어쩌면 현재 릴리스에서 수정되었을 수 있습니다. – tchrist

0

로켈 정의 파일에 정의되어 있다고 생각합니다. 로케일에 대한 자세한 내용은 this page을 참조하십시오. glibc에는 localedate/locales에 많은 로케일 정의가 포함되어 있지만 그 중 어느 것도 너비 정보가없는 것 같습니다.

+0

그러나 로캘은 glibc와 함께 제공되는 localedef 응용 프로그램에 의해 생성됩니다. 이 정보를 편집 할 표준 위치를 찾는 데 더 관심이 있습니다 ... – bdonlan

2

http://unicode.org/Public/UNIDATA/에 게시 된 유니 코드 데이터 파일에서 (분명히 수동으로 실행되는) localedata/gen-unicode-ctype.c에 의해 데이터가 생성 된 것처럼 보입니다. Naaff에게 올바른 방향으로 나를 가리켜 주셔서 감사합니다!