© 1997–2019 Adobe.
이 문서 파일의 사본을 획득 할 사람에게 허가는 다음과 같이 부여됩니다. 문서의 사본을 사용, 복사, 게시, 배포, 서브 리센스 및/또는 판매 할 수있는 사람에게 다음과 같은 경우 다른 사람이 동일한 작업을 수행 할 수 있습니다.
이 문서의 수정, 편집 또는 기타 변경이 허용되지 않습니다. 그리고
위의 저작권 통지 및이 권한 통지는 문서의 모든 사본에 포함되어야한다.
이 문서 파일의 사본을 얻는 사람은이 문서의 내용으로부터 자신의 파생물 작품을 만들기 위해 자신의 파생물 작품을 작성하여 파생물을 사용하고, 복사, 게시, 배포하고, 서브 리센스 및/또는 판매 할 수 있도록 허가를받을 수 있도록 허가가 부여됩니다. 파생 된 작업 이이 문서의 사본 또는 버전으로 표시되지 않는 경우 다른 사람이 동일하게 수행 할 수 있습니다.
Adobe는 수입 또는 이익 손실 또는 간접적, 부수적, 특별, 결과적 또는 기타 유사한 손해에 대해 어떤 당사자에게도 책임을지지 않아야합니다 (불법 행위 또는 엄격한 책임 포함), Adobe가 그러한 손해의 가능성에 대해 조언을 받았거나 계약 또는 기타 법적 또는 공평한 근거를 기반으로하는 불법 행위에 근거한 경우. Adobe 재료는 "그대로"기준으로 제공됩니다. Adobe는 구체적으로 Adobe 자료에 대한 상업성 또는 특정 목적에 대한 적합성 또는 적합성에 관한 것과 관련이 있지만 Adobe 자료에 관한 타사 권리의 비 침해를 포함하여 Adobe 자료와 관련된 모든 Express, 법정 또는 묵시적 보증을 부인합니다.
Adobe는이 사양의 주제에 대한 특허를 보유하지 않습니다.
문서 버전 2.9. 2019 년 8 월 21 일 마지막 업데이트
Adobe Glyph 목록 사양 의 목적은 Glyph 이름 시퀀스에서 유니 코드 문자열의 계산을 설명하는 것입니다. 이것은 글리프 이름에서 유니 코드 문자열로의 매핑을 지정하여 달성됩니다.
매핑은 기본 의미를 유지하면서 일련의 글리프 이름을 일반 텍스트로 변환하기위한 것입니다. 예를 들어, 'a'의 글리프 이름, '작은 자본 a'의 글리프 이름, 'a'의 스와시 변형의 글리프 이름은 모두 동일한 UV ( 유니 코드 값 )에 매핑됩니다. 이것은 일부 환경에서 텍스트를 복사하는 데 유용하며 'A'에 해당하는 원래 문자열의 모든 글리프 이름과 일치하는 텍스트 검색을 수행하는 데 유용합니다.
법적 글리프 이름 세트를 결정하는 것은이 사양의 범위를 벗어납니다. 글리프 이름은 여러 가지 다른 맥락에서 발생하며, 각각은 법적 이름을 구성하는 것에 대한 자체 정의를 가지고 있습니다. 이 사양은 글리프 이름이 임의로 유한 한 유한 유니 코드 문자 시퀀스에 해당한다고 가정합니다.
사양은 AGL ( Adobe Glyph List )으로 구성되며, 이는 Glyph 이름을 분해하고 해석하기위한 규칙과 함께 특정 글리프 이름을 유니 코드 값에 매핑하는 것을 제공합니다. 이 사양이 많은 소프트웨어에서 구현 될 것이며, 사용하는 모든 구현을 수정하는 것이 가능성이 거의 없을 것으로 예상되기 때문에,이 사양은 안정적이기 때문에 실질적인 방식으로 수정되지 않아야합니다. 특히, AGL에 매핑이 추가되지 않기로합니다. 또한 AGL은 새 글리프 이름을 선택하는 가이드 역할을하는 것이 아닙니다. 이를 위해 AGLFN ( 새 글꼴의 Adobe Glyph 목록 )이 존재합니다 (섹션 6 참조).
이 사양은 U+10FFFF를 통해 U+0000의 전체 범위의 유니 코드 스칼라 값을 지원합니다. 특정 유니 코드 버전의 문자 레퍼토리에 의존하지 않습니다. 따라서 유니 코드 표준의 과거, 현재 및 미래 버전에 적용 할 수 있습니다.
글꼴 제작자는 글리프를 글꼴로 명명 할 때이 사양을 존중하도록 강력히 권장됩니다. 글꼴 소비자는 글리프 이름에서 컨텐츠를 도출하려고 할 때이 사양을 따르도록 권장됩니다.
글리프 이름을 문자열에 매핑하려면 아래 세 단계를 따르십시오.
Glyph 이름에서 모든 문자를 첫 번째주기 (U+002e Full Spet)부터 시작하여 시작하십시오.
밑줄 (u+005f Low Line)을 구분기로 사용하여 나머지 문자열을 일련의 구성 요소로 분할하십시오.
아래 절차에 따라 각 구성 요소를 문자열에 매핑하고 해당 문자열을 연결하십시오. 결과는 Glyph 이름이 매핑 된 문자열입니다.
글꼴이 zapf dingbats (postscript fontname : zapfdingbats )이고 구성 요소가 ITC ZAPF Dingbats Glyph 목록 에 있으면 해당 목록의 해당 문자에 매핑하십시오.
그렇지 않으면 구성 요소가 AGL에 있으면 해당 목록의 해당 문자에 매핑하십시오.
그렇지 않으면, 구성 요소가 'U+0075, U+006E 및 U+0069) 형식 인 경우, 대문자 16 진수 숫자 (0–9 및 A – F, U+0030을 통해 U+0030 ~ U+0046)의 시퀀스가 뒤 따릅니다. 범위 0000부터 D7ff 또는 E000을 통해 FFFF를 통해 각각을 유니 코드 스칼라 값으로 해석하고 해당 스칼라 값으로 만든 문자열에 구성 요소를 매핑하십시오. 범위 및 숫자 길이 제한은 'Uni'Glyph 이름 접두사가 기본 다국어 평면 (BMP)에서 UVS에서만 사용할 수 있음을 의미합니다.
그렇지 않으면, 구성 요소가 'u'(u+0075)에 이어 4 ~ 6 개의 대문자 16 진수 숫자 (0–9 및 a – f, u+0030을 통해 U+0039 및 U+0041을 통해 U+0046을 통해 U+0041을 의미)의 시퀀스 인 경우, D7ff 또는 E000을 통한 값의 값을 나타내는 값을 나타냅니다. 이 스칼라 값으로 만든 문자열의 구성 요소.
그렇지 않으면 구성 요소를 빈 문자열에 매핑하십시오.
'lcommaaccent'라는 이름에는 단일 구성 요소가 있으며 AGL이 문자열 U+013B에 매핑됩니다.
'UNI20AC0308'이라는 이름에는 단일 구성 요소가 있으며 문자열 U+20AC U+0308에 매핑됩니다.
'u1040c'라는 이름에는 단일 구성 요소가 있으며 문자열 u+1040c에 매핑됩니다.
'UNID801DC0C'라는 이름에는 단일 구성 요소가있어 빈 문자열에 매핑됩니다. D801이나 DC0C는 적절한 세트에 없습니다. 이 양식은 UTF-16에서 D801 DC0C, 특히 U+1040C로 표시되는 문자에 매핑하는 데 사용될 수 없습니다. 이 문자는 글리프 이름 'U1040C'를 사용하여 올바르게 매핑 할 수 있습니다.
'uni20AC'라는 이름에는 단일 구성 요소가 있으며,이 구성 요소는 빈 문자열에 매핑됩니다 (소문자 'a'및 'c'참고).
'lcommaaccent_uni20AC0308_U1040C. Alternate'라는 이름에는 'lcommaaccent', 'uni20AC0308'및 'u1040c'인 세 가지 구성 요소가 있습니다. 문자열 U+013B U+20AC U+0308 U+1040C에 매핑됩니다.
일반적으로 여러 이름이 동일한 문자열에 매핑 될 수 있습니다. 예를 들어, 구성 요소 'lcommaaccent', 'uni013b'및 'u013b'는 모두 문자열 u+013b에 맵을 맵핑합니다.
'foo'라는 이름은 'foo'가 Agl에 있지 않으며 'U'로 시작하지 않기 때문에 빈 문자열에 맵핑됩니다.
'.notdef'라는 이름은 첫 번째 단계에 의해 빈 문자열로 축소되며 세 번째 단계의 마지막 조항에 의해 빈 문자열에 맵핑됩니다.
이 사양은 Glyph 이름을 PUA 값을 포함하는 문자열로 맵핑하는 것을 지원합니다. 예를 들어, 이름 'ogoneksmall'및 'unif6fb'는 모두 u+f6fb에 해당하는 문자열에 맵핑됩니다.
이 사양에는 특정 PUA 사용법이 포함되어 있거나 암시하거나 가정하지 않습니다. 그것은 단지 복원 된 문자열에 PUA 코드 포인트가 포함되도록 글리프의 이름을 허용합니다. PUA 사용에 대한 계약을 체결하는 것은 글리프 이름의 생산자와 소비자에게 달려 있습니다.
글꼴 디자이너는 일반 목적 글꼴 사용자 와이 계약을 설정하는 것은 어려울 수 있습니다. Glyph 이름으로 구축 된 문자열을 조작하는 모든 도구가 PUA 사용을 올바르게 구현하는 것은 아니며, 이는 잘못되거나 예기치 않은 기능으로 이어질 수 있습니다. 따라서 모든 글리프 이름은 PUA 코드 포인트를 포함하지 않는 문자열로 변환하는 것이 좋습니다.
이 사양은 시간이 지남에 따라 발전했습니다. 변경 사항은 섹션 7 ( 문서 변경 )을 참조하십시오.
유니 코드 표준의 문자에 해당하는 글리프의 경우, 섹션 2의 규칙에 따라 기본 다국어 평면 (BMP)의 문자에 'Uni'접두사와 16 개의 보충 평면의 문자에 대한 짧은 'U'접두사를 사용하여 이름을 지정하는 것이 좋습니다.
그렇다고 글리프 이름에 'uni'및 'u'접두사를 사용하지 않고 만들어지면 글꼴이 유효하지 않다는 것을 의미하지는 않습니다. 한 가지 예외 그룹으로 AGL의 모든 글리프 이름은 현재 알려진 모든 환경에서 작동하고 'Uni'접두사가있는 이름입니다. 예외는 PUA 코드 포인트와 관련된 AGL Glyph 이름입니다. 여기에는 모든 상사와 작은 캡 이름이 포함됩니다. 이 이름을 사용하면 텍스트를 검색하기 위해 현재 구현이 'ASMall'과 같은 이름을 'A'에 대한 UV가 아닌 AGL에 지정된 PUA 값에 매핑하도록 이끌어냅니다. 이제이 섹션에 명시된 규칙에 따라이 글리프 이름을 지정하는 것이 좋습니다. PUA와 관련된 이름을 제외한 AGL의 서브 세트는 AGLFN ( Adobe Glyph List for New Fonts )에 의해 제공됩니다.
글꼴의 여러 글리프가 'a'및 'a.swash'와 같은 유니 코드 표준에서 동일한 문자를 나타내는 경우, 다른 접미사로 동일한 기본 이름을 사용하여 구별 할 수 있습니다. 접미사 (첫 번째 기간을 따르는 글리프 이름의 일부)는 문자 순서의 계산에 참여하지 않습니다. 글꼴 디자이너가 글리프의 특수 특성을 나타내는 데 사용할 수 있습니다. 접미사에는 기간 또는 기타 허용 된 문자가 포함될 수 있습니다. 예를 들어, 작은 캡 'a'는 'uni0041.sc'또는 'a.sc'로 명명 될 수 있습니다.
동일한 기본 글리프의 여러 변형이있는 경우 변형 접미사에는 제로 패딩 된 고정 길이 숫자가 포함되어야하며 Glyph 이름이 정렬되면 의도 된 순서를 보존 할 수 있습니다. 예를 들어, '앰퍼 샌드'글리프에 23 개의 대체 양식이 있다면 '암페인드 .Alt23'을 통해 '암페인드 .Alt23'을 통해 '암페인드 .Alt23'을 통해 '암페인드 .Alt23'을 통해 '암페인드 .Alt23'을 통해 '암페인드 .Alt23'을 통해 '암페인드. 이 규칙은 글꼴 개발 및 테스트를위한 약간의 편의성 만 제공합니다. 위에서 언급 한 바와 같이,이 글리프 이름 접미사는 문자 순서의 계산에 참여하지 않습니다.
이 사양은 접미사를 표준화하지 않습니다. 임의의 접미사는 텍스트 검색 목적으로 작동합니다. 개발 및 테스트 중 편의를 위해 Adobe는 가장 적합한 OpenType 레이아웃 기능 이름을 접미사로 사용합니다. 예를 들어, 작은 캡 'a'는 'a.smcp', 초기 양식 'a.init', 최종 형태 'a.fina'및 스와시 형식 'A.swsh'라는 이름을 지정할 수 있습니다. 추가 Swash 양식이 있으면 'A.swsh1', 'A.swsh2'등으로 명명 될 수 있습니다. 다음은 Adobe의 글꼴에 사용되는 접미사의 예입니다.
유니 코드 표준의 문자에 해당하지 않는 글리프의 경우 이름에는 기술적 인 유용성이 없습니다. 이름 이이 문서의 규칙에 따라 의미 값을 갖는 것으로 해석되지 않는 한 이름을 지정할 수 있습니다. Adobe의 유형 개발 팀의 관행은 Glyph에 대한 유용한 설명 태그가 있으면 'Mouse', 'Signforsale', 'Christmastreeball12'등과 같이 그에 따라 이름을 지정한다는 것입니다. 그렇지 않으면 'Orn', 'Orn123'등과 같은 'Orn'(장식품의 짧음)의 변형으로 이름을 지정하십시오.
표준 유니 코드 문자의 인대를 나타내는 글리프의 경우 다음과 같이 글리프 이름에 대한 제안 된 두 가지 형식이 있습니다.
설명 분해는 밑줄 (u+005f Low Line)을 사용하여 표준 유니 코드 문자의 글리프 이름을 순서대로 결합하여 표현됩니다. 문자의 글리프 이름은 'uni'또는 'u'접두사를 지정하고 위에서 설명한대로 대문자 16 진수 숫자를 사용해야합니다. 예를 들어, 'Off I'합자의 이름은 'O_F_F_I'라는 이름을 지정해야합니다.
'Uni'접두사가있는 UV는 Glyph 이름이 접두사 'uni'로 표현 된 다음 4 개의 대문자 16 진수 숫자의 2 개 이상의 시퀀스로 표시됩니다. 4 개의 대문자 16 진수 숫자의 각 시퀀스는 순서대로 BMP 내에서 유니 코드 스칼라 값을 지정합니다. 예를 들어, 유니 코드에 있지 않은 CILLFLEX 및 GRAVE가 장착 된 라틴 대문자 EZH 캐릭터는 'UNI01B703020300'으로 명명되어야합니다. 라틴 캐피탈 레터 EZH는 U+01B7이기 때문에 CircleFlex Accent는 U+0302이며 Grave Accent는 U+0300이기 때문입니다. 't.wash'와 'h'라는 글리프의 합자는 't_h.wash'라고 명명 될 수 있습니다. 'T.wash_h'는 't'의 글리파 변이체로 해석되기 때문에 잘못된 것입니다. 모든 글리프 이름은 63 자의 길이가 1 인 경우에 따라 다음 세트의 문자로 구성되어 있어야합니다 : A – Z, A – Z, 0–9, '.' (기간; u+002e 전체 정지) 및 '_'(밑줄; U+005F LOW LINE). 일부 이전 구현은 31 자의 길이 제한을 부과 할 수 있습니다.
과거의 구현 문제와 Glyph 이름에 대한 결과적인 한계에 대한 간단한 검토는 아래의 인라인으로 제공되는 문서 Glyph 이름 및 현재 구현 (2003-01-31 일자 버전 1.1, 2003-01-31)에 제공됩니다.
소개이 기사는 현재 구현에 대한 의견이 포함되어 있으므로 시간이 많이 걸립니다. 2002 년 10 월 이후에 많이 읽으면 이것을 명심하십시오.
(Longer-Available) 기사 유니 코드 및 Glyph 이름 의 명명 규칙에 따라 Glyph 이름이 어디에나 사용되는 이유는 현재 PDF ( 휴대용 문서 형식 ) 문서에서 텍스트를 복사하고 텍스트를 검색하여 이름이없는 것보다 더 광범위한 환경에서 문서를 복사 할 수 있습니다. 유용하기 위해 많은 문서를 검색 할 수 있어야하는 인터넷 시대에 이것은 매우 중요합니다.
많은 PDF 파일은 포스트 스크립트 프린터 파일로 만들어졌으며 문서에서 참조 된 원래 글꼴을 사용할 수없고 내장 된 글꼴 데이터를 사용해야합니다. 이 경우 OpenType 글꼴의 유니 코드 'CMAP'테이블을 사용할 수 없으며 PDF 생산자가 글리프의 의미론에 대해 가질 수있는 유일한 단서는 그 이름입니다.
원래 글꼴 파일을 사용할 수있는 경우에도 유니 코드의 문자에 직접 해당하지 않는 글리프는 여전히 이름을 통해 유니 코드 문자에 유용하게 연결될 수 있습니다. 예를 들어, 't.alt'로 't'의 장식 변형을 지정하면 PDF 생산자는 't.alt'가 검색 및 기타 목적에 대해 't'와 동일한 의미를 전달한다는 점에 유의 할 수 있습니다.
앞으로 Adobe 자신의 제품보다 더 많은 제품이 글리프의 유니 코드 기반 텍스트 문자열 검색을 지원할 것으로 예상됩니다. 즉, 이러한 규칙의 유용성 범위가 훨씬 더욱 넓어 질 것으로 예상됩니다.
글리프 이름이 모두 누락 될 수있는 트루 타입 글꼴의 경우, 'CMAP'테이블에 글리프에 대한 유니 코드 값이 있으면 대부분의 경우 글리프가 유니 코드 문자와 올바르게 연관 될 수 있습니다. 그러나 유니 코드 코드 포인트에서 매핑되지 않은 글리프의 경우 이전 주석이 적용됩니다.
유니 코드의 BMP에서 인코딩 된 글리프에 대해서는 아직 접두사 'U'가 권장되지 않는 이유는 무엇입니까? 접두사 'U'는 Acrobat 버전 4 및 5에서 지원되지 않으며 Acrobat 버전 6 이상의 지원을 받았으며, 이는 BMP ( 기본 다국어 평면 ) 외부의 유니 코드 문자에 대한 지원이 도입 될 때이기도합니다. 'uni'와 함께 '' '를 사용하는 AGL 이름과 글리프 이름. 그리고 '_'구문 분석 규칙은 이미 Acrobat 버전 4와 5에 의해 지원됩니다.
Western OpenType/CFF 및 Truetype 글꼴의 이름에 대한 길이 및 문자 세트 제한 사항은 여전히 많은 워크 플로에서 이름 키가 붙은 글꼴 데이터로 참조되어야합니다. 결과적으로 Glyph 이름은 여전히 Type 1 사양 및 PostScript 통역 구현에 의해 부과되는 길이 및 문자 세트 제한이 적용됩니다. 이 두 가지는 글리프 이름의 길이가 31 자를 넘지 않음, 특히 현대 환경에서는 63 자에이를 수 있지만 숫자 나 기간으로 시작해서는 안되며 다음 제한 세트의 문자로 완전히 구성되어야합니다.
이러한 요구 사항에 대한 유일한 예외는 Special '.notdef'Glyph입니다.
예를 들어, 'twocents', 'a1'및 '_'는 유효한 글리프 이름이지만 '2cents'및 '.twocents'는 그렇지 않습니다.
ATM 및 Kerning 쌍 필터링 많은 응용 프로그램에 대한 Kerning의 Kerning 지원은 Windows 및 Macintosh 버전의 ATM ( Adobe Type Manager )에 의해 제한적으로 제공되었습니다. 이 제한은 OpenType 인식이 아닌 대부분의 애플리케이션이 글꼴의 모든 커닝 쌍이 합리적으로 적합 할 수 있다고 가정했기 때문에 발생하며, 수천 개의 커닝 쌍이있을 것이라고 생각합니다. 이보다 더 많은 커닝 쌍을 제공하면 그러한 응용 프로그램이 충돌했습니다. OpenType 레이아웃에 의해 지원되는 클래스 기반 Kerning의 경우, 220 개의 글리프 만있는 글꼴조차도 잘 어울리는 경우이 한계를 초과합니다. ATM은 많은 현재 애플리케이션을 충돌시키지 않고 이러한 Opentyoe 글꼴을 사용할 수 있도록 레거시 OS 기반 API를 통해 Kerning을 지원하여 클래스 기반 Kerning을 단일 Glyph-Name 쌍 목록으로 완전히 확장 한 다음이 목록을 하드 코딩 된 Glyph 이름 목록을 통해 필터링했습니다. 커닝 쌍의 양쪽에있는 글리프 이름이 필터 목록에 존재하지 않으면 전체 커닝 쌍이 생략되었습니다. Windows 95 및 Mac OS 9의 Kerning 쌍 필터링 목록과 Windows NT 및 Windows 2000의 경우 더 이상 사용할 수 없습니다.
버전 2.9 (2019 년 8 월 21 일) 편집 업데이트.
버전 2.8 (2018 년 8 월 9 일) Glyph 이름의 길이 제한은 현재 관행과 구현을 반영하기 위해 31 개에서 63 자로 조정되었으며 일부 구현 구현은 31 자식 제한을 부과 할 수 있다는 점에 주목했습니다.
버전 2.7 (2017 년 8 월 12 일) Glyph 이름과 편집 변경이 포함 된 현재 구현이라는 제목의 외부 문서가 섹션 6에 추가되었습니다.
버전 2.6 (2015 년 3 월 28 일) GitHub로 마이그레이션하는 것과 관련된 사소한 편집 개정.
버전 2.5 (2010 년 11 월 10 일) 공개 사양으로 만드는 것과 관련된 사소한 편집 개정.
버전 2.4 (2003 년 9 월 24 일) 사소한 개정. 새 개정에 대한 새로운 글리프 이름에 대한 Adobe Glyph 이름에 대한 URL.
버전 2.3 (2003 년 4 월 17 일) 사소한 개정. 'Uni'접두사를 BMP 유니 코드 값으로 만 사용할 수 있음을 분명히하기 위해 짧은 문장을 추가했습니다.
버전 2.2 (2003 년 1 월 31 일) 사소한 개정. 새 글꼴을 만들 때 사용할 글리프 이름 목록에 링크를 추가했으며 AGL 버전 2.0 이이 목적을위한 것이 아니며 글리프를 글꼴로 인코딩하는 것이 아니라는 점을 강조했습니다.
버전 2.1 (2002 년 11 월 4 일) 사소한 개정, 새로운 글꼴로 글리프 이름을 할당하는 섹션을 확장합니다.
버전 2.0 (2002 년 9 월 20 일) 주요 개정판은 글리프 이름을 유니 코드 스칼라 값으로 변환하는 데 중점을 둡니다. 많은 이름을 AGL에 추가합니다. ZapfdingBats 목록의 업데이트는 Unicode 버전 3.2로 업데이트됩니다.
버전 1.1 (1998 년 12 월 17 일)은 일반적으로 전체 문서를 개정했습니다. 대부분의 테이블 및 데이터 파일을 업데이트했습니다. 글리프 이름 선택에 대한 섹션이 추가되었습니다. 시맨틱 추출을위한 의사 코드는 비 unicode 타자 및 glyphic 변형을 포함하도록 확장되었습니다. 이중 매핑을위한 별도의 디자인 제공에 섹션이 추가되었습니다. WGL4가있는 불일치에 대한 섹션이 제거되었습니다 (더 이상 해당되지 않음; WGL4가 업데이트 됨).
버전 1.0 (1997 년 11 월 10 일) 첫 번째 버전.