의 마지막 요소입니다.
글리프의 점 수는 마지막으로 endPtsOfContours
+ 1과 같습니다. 일반적으로 이것은 플래그 수 n
과 같지만 꼭 그런 것은 아닙니다. 플래그의 비트 3 (반복 플래그)은 동일한 플래그가 여러 번 반복됨을 나타 내기 위해 사용됩니다. 이 플래그가 설정되면, 플래그의 수는 점의 수보다 낮을 수 있습니다.
사실, 플래그를 읽기 전에 얼마나 많은 바이트를 읽어야하는지 알 수 없습니다. 포인트 수에 도달 할 때까지 플래그를 계속 읽어야합니다. 다음은 플래그를 읽는 방법을 구현하는 방법을 보여주는 작은 Javascript 스 니펫입니다.
var pointCount; // This has to the set to the last endPtsOfContours + 1
var flags = []; // our internal array of flags
while (flags.length < pointCount) {
var flag = fontReader.readByte(); // flag is a single byte
flags.push(flag); // add flag
if (flag & 8) { // if bit 3 is set
var repeats = fontReader.readByte(); // next byte indicates repeats of the flag
for (; repeats > 0; repeats--) {
flags.push(flag); // add same flag again
}
}
}
나는 반복 플래그 (브래들리 핸드 ITC 정기 아마 두 개의 글꼴을 사용 위의 설명에서 언급 기울임 꼴을 분노) 실제 글꼴을 사용하는 경우 또는 얼마나 자주 당신을 말할 수는 없지만 당신이 경우 플래그의 수를 정확하게 읽고 싶다면 플래그를 고려해야합니다.
Bradley Hand ITC Regular 및 Rage Italic이 수식에 포함되지 않는 글꼴이 두 개 이상 발견되었습니다. TTFDUMP는 다른 수의 플래그를 리턴합니다. –
@IgorBrejc 좋아, 무슨 상형 문자 가이 문제를 보여줍니다. 플래그의 실제 개수는 얼마입니까? endPtsOfContours의 마지막 요소에서보고되는 내용은 무엇입니까? 개별 바이트를 검사해야하는 경우 C#의 작은 구현은 https://github.com/vidstige/NRasterizer를 참조하십시오. 주석 파일에서 글꼴 파일을 연결할 수 있습니까? – vidstige
@IgorBrejc 아래 나의 대답을 참조하십시오. 언급 된 두 글꼴은 * 반복 * 플래그를 사용할 수 있습니다. 이는 플래그의 수와 포인트의 수 사이에 차이를 유발할 수 있습니다. – Waruyama