2014-09-08 5 views
1

TrueTypeOpenType의 사양은 Sfnt의 'head'또는 'bhed'테이블에 checkSumAdjustment를 지정합니다. 두 스펙 모두이 값을 계산하는 방법을 설명하지만이 값의 존재 이유와 그 용도에 대한 정보는 찾을 수 없습니다.TTF/OTF 헤드 테이블의 checkSumAdjustment는 무엇입니까?

보너스 질문 : 0xB1B0AFBA에서 뺄셈이 필요한 이유는 무엇입니까?

+1

단지 체크섬 체크섬입니다. 원래 TTF 파일 형식은 비트가 전송에서 손실되는 빈도가 더 높은 시간으로 거슬러 올라갑니다. (noobs 및 16 진수 편집자가 자신의 이름을 저작권이있는 글꼴에 삽입하는 것을 방지하는 쉬운 방법이기도합니다.) – usr2564301

답변

4

이 값의 포인트는 글꼴 엔진이 실제로 모든 글꼴 데이터를 먼저 구문 분석 할 필요없이 글꼴의 손상을 감지 할 수있게하는 것입니다. 이상적으로 파일의 시작 부분에 체크섬이 있지만, 다양한 글꼴 형식을 통일해야하기 때문에 체크섬은 그렇지 않습니다. 대신 머리 테이블에 있습니다. 바보 같지만 우리는 그걸로 붙어 있습니다.

글꼴의 각 테이블에는 자체 체크섬 값이 있으므로 엔진은 글꼴의 일부가 "있는 그대로"올바른지 확인할 수 있지만 일을 쉽게하기 위해 글꼴 자체에도 마스터 체크섬이 있습니다. compute (최소값의 데이터를 파싱하여 바이트 스트림에서 값 오프셋을 찾은 다음이 체크섬이 0x00000000 인 4 바이트를 처리하면서 전체 바이트 스트림을 LONG으로 합칩니다) 글꼴이 OpenType을 따랐는지 여부를 결정하는 데 사용할 수 있습니다 스펙이 인코딩 될 때마다 모든 테이블이 체크섬이라고 말한 것을 검색 할 필요가없고, 시작 위치, 길이, 바이트 스트림의 다른 부분에 대해 동일한 체크섬 계산을 여러 번 실행해야합니다. 마스터 체크섬에 실패하면 개별 테이블에 대한 체크섬이 올바른지 여부는 중요하지 않습니다.이 글꼴에 대해 뭔가 이상한 점이 있습니다.

0xB1B0AFBA에서 뺄셈은 "역사적인 이유로"OpenType이 처음부터 시작하지 않고 몇 가지 사양을 통일하기 때문에 거의 그대로입니다. 따라서 오래된 형식의 수하물이 남아 있습니다 (예 : "OS/2"표). 는 일반적인 메타 데이터 테이블이며 더 이상 OS/2 Warp 운영 체제와 관련이 없으며 오랫동안 사용하지 않았습니다.