유니 코드 표준 이외의 문자 는 하나 이상의 그래프 로 구성된 개별 텍스트 단위입니다 . 유니 코드 표준이 "문자"로 정의하는 것은 실제로 그래프와 문자가 혼합 된 것입니다. 유니 코드는 병렬 그래프를 개별 문자로 해석하는 규칙을 제공합니다.
유니 코드 코드 포인트는 각각에 할당 된 고유 번호이다 유니 코드 문자 (문자 나 자모 하나 인).
불행하게도, 유니 코드 규칙은 일부 병렬 그래프를 이미 자체 코드 포인트가있는 다른 그래프로 해석 할 수 있도록 허용합니다 ( 사전 작성된 형식 ). 즉, 유니 코드에는 문자를 나타내는 여러 가지 방법이 있습니다. 유니 코드 정규화는 이 문제를 해결합니다.
글리프는 캐릭터의 시각적 표현입니다. 글꼴은 유니 코드 문자가 아닌 특정 문자 세트에 대한 글리프 세트를 제공합니다. 모든 캐릭터에 대해 가능한 많은 글리프가 있습니다.
Mark Amery에게 답장
먼저 언급했듯이 각 문자에 대해 가능한 많은 글리프가 있으므로 문자가 "항상 단일 글리프로 표시되지 않습니다". 유니 코드는 글리프와 크게 관련이 없으며 코드 차트에서 정의하는 것은 글리프가 아닙니다. 문제는 모두 문자가 아니라는 것입니다. 그래서 그들은 무엇입니까?
더 큰 엔티티, 그래프 또는 문자는 무엇입니까? 문자 나 문장 부호가 아닌 텍스트의 그래픽 요소를 무엇이라고 부릅니까? 빠르게 떠오르는 용어는 "그래프"입니다. "텍스트의 그래픽 단위"라는 개념을 정확하게 구체화하는 단어입니다. 나는이 정의를 제공한다 : grapheme은 서면 텍스트에서 가장 작은 별개의 구성 요소이다 .
다른 방법으로 가서 graphemes가 문자로 구성되어 있다고 말하면 "Chinese graphemes"로 불리고, 중국 graphemes로 구성되는 모든 비트와 조각은 "characters"로 불리어야합니다. 그러나 그것은 모두 거꾸로입니다. 그래 핀은 별개의 작은 조각과 조각입니다. 캐릭터가 더 발달합니다. "문자는 컴포지션 가능"이라는 구절은 유니 코드와 관련하여 "문자는 컴포지션 가능"으로 더 잘 표현됩니다.
유니 코드는 문자를 정의하지만 다른 grapheme 또는 문자로 구성 될 grapheme도 정의합니다. 당신이 작곡 한 괴물은 이것의 좋은 예입니다. 그들이 붙잡는다면 나중 버전의 유니 코드에서 자신의 코드 포인트를 얻을 수 있습니다.)
이 모든 것에는 재귀적인 요소가 있습니다. 더 높은 수준에서 그래 핀은 문자가 그래 핀이되지만 그래 핀은 끝까지 내려갑니다.
TS에 대한 답변
표준 상태의 1 장 : "유니 코드 문자 인코딩은 알파벳 문자, 표의 문자 및 기호를 동일하게 처리하므로 모든 혼합 및 동일한 기능으로 사용할 수 있습니다". 이 진술이 주어지면, 우리는 표준에서 용어의 혼동에 대비해야합니다. 때로는 표준이 발전함에 따라 적절한 용어가 소급하여 명확 해 지기도합니다.
언어의 공식적인 정의에서 종종 두 가지 기본 사항이 서로 관련하여 정의됩니다. 예를 들어,
XML 에서 요소는 시작 태그, 컨텐츠, 종료 태그로 정의됩니다. 콘텐츠는 차례로 요소, 문자 데이터 또는 기타 몇 가지 가능한 것으로 정의됩니다. 자체 참조 정의 패턴은 유니 코드 표준에도 내재되어 있습니다.
grapheme은 코드 포인트 또는 문자입니다.
문자는 하나 이상의 그래 핀 순서로 구성됩니다.
처음에이 두 가지 정의에 직면했을 때 독자는 코드 포인트 가 문자 라는 근거로 첫 번째 정의에 반대 할 수 있지만 항상 그런 것은 아닙니다. 두 코드 포인트의 시퀀스는 정규화 하에서 단일 코드 포인트를 인코딩하는 경우가
있으며, 해당 인코딩 된 코드 포인트는 그림 2.7 과 같이 문자를 나타냅니다
. 다른 코드 포인트를 인코딩하는 코드 포인트 시퀀스 이것은 조금 까다로워지고 UTF-8 과 같은 문자 인코딩 체계 가 코드 포인트를 바이트 시퀀스로 인코딩하는 데 사용되는 계층에 도달하지 못했습니다 .
예를 들어 분음 부호 에 대한 학술 기사
및 일부 문자의 경우 문자 자체가 텍스트에 나타날 수 있습니다. 이러한 맥락에서 개별 문자 부분은 문자로 간주 될 수 있으므로 유니 코드 표준도 유연하게 유지됩니다.
Mark Avery가 지적했듯이 캐릭터는 더 복잡한 것으로 구성 될 수 있습니다. 즉, 각 문자는 원하는 경우 그래픽으로 사용할 수 있습니다. 모든 구성의 최종 결과는 "사용자가 캐릭터로 생각하는 것"입니다. 표준 또는이 논의에서, 최상위 레벨에서 사용자가 개별 문자로 생각하는 텍스트에 이러한 것들이 있다는 생각에 대한 실제 저항은없는 것 같습니다. 이 용어에 과부하가 걸리지 않도록 문자를 구성하는 데 사용되는 부분을 참조하려는 모든 경우에 "grapheme"을 사용할 수 있습니다.
때때로 유니 코드 표준은 그 용어와 함께 사방에 있습니다. 예를 들어, 3 장
에서는 UTF-8을 "인코딩 형식"으로 정의하고 용어집에서는 "인코딩 형식"을 다른 것으로 정의하고 UTF-8을 "문자 인코딩 체계"로 정의합니다. 또 다른 예는 "Grapheme_Base"및 "Grapheme_Extend"이며, 이는 실수 로 인정 되지만 제거하는 것이 약간의 작업이므로 지속됩니다. 이 표준에서 사용하는 용어를 강화하기 위해 아직해야 할 일이 있습니다.
그래 핀 소목 장이 결합을 추가하기위한 제안은 그것이 밝혔다 잘못 때있어 "제자가 그 대응 사용자가 문자로 어떻게 생각하는지에 대한 하나의 시퀀스 이상의 인코딩 된 문자가 있습니다." 대신에 "하나 이상의 graphemes의 시퀀스는 사용자가 캐릭터로 생각하는 것을 구성합니다." 그런 다음 "문자 시퀀스"라는 용어와 "그래프 시퀀스"라는 용어를 구별하여 사용할 수 있습니다. 두 용어 모두 유용합니다. "그래프 순서"는 작은 조각으로 캐릭터를 만드는 과정을 깔끔하게 의미합니다. "문자 순서"는 일반적으로 "사용자가 문자로 생각하는 일련의 것들"이라는 의미를 의미합니다.
때때로 프로그래머는 그래 핀 시퀀스 수준에서 작동하기를 원하기 때문에 시퀀스를 검사하고 조작하는 메커니즘을 사용할 수 있어야하지만 일반적으로 텍스트를 처리 할 때는 "문자 시퀀스"(사용자가 생각하는 것)에서 작동하는 것으로 충분합니다. 시스템을 하위 레벨 세부 사항을 관리하게하십시오.
이 논의에서 지금까지 다루었던 모든 경우에, "grapheme"을 사용하여 불가분의 구성 요소를, "문자"를 사용하여 작성된 엔티티를 나타내는 것이 더 깨끗합니다. 이 사용법은 두 용어의 오랜 의미를 더 잘 반영합니다.