최신 버전의 Chromium에서이 문제가 발생합니다. @ font-face을 통해 임베드 된 글꼴 패밀리를 사용하는 첫 번째 요소를 만든 후 잘못된 offsetXyz 값이 전달됩니다. 스크립트가 실행될 때까지는 window.onload 훅이 이미 시작되고 폰트는 이미로드되어있을 것이다.@ Font-face와 offsetWidth 속성의 잘못된 값
이 스크립트는 (개략적) 모습입니다 :
var e = document.createElement("span");
e["innerText" in e?"innerText":"textContent"] = "fooBar";
e.style.fontFamily = "fontFaceEmbeddedFontFamily";
document.body.appendChild(e);
alert(e.offsetWidth); // Returns two different values
setTimeout(function() {
alert(e.offsetWidth); // The latter being correct
}, 1000);
값은 "자동"으로 업데이트됩니다. 값을 수정하는 것을 기다리는 방법은 없지만 간단히 setInterval- 값을 확인한 다음 솔루션을 렌더링합니다. 나는 그런 더러운 것을하는 것을 공상하지 않는다.
누구든지 어떤 방법으로 진행할 수 있습니까? src: local(" ... ")
이 지정되지 않은 경우에만 발생하며, 따라서 문제는 다운로드됩니다. 글꼴에 따라 다릅니다.
어쩌면 당신이 어떤 도움을 여기에서 찾을 수 있습니다 http://paulirish.com/2009/fighting-the-font-face-fout/ - 일부 브라우저에서는 글꼴이 다운로드 된 다음 전환 할 때까지 "스타일이없는"텍스트를 표시하는 것이 일반적으로 보입니다. – James
글쎄, 내가 말했듯이 폰트는 window.onload 이벤트가 ** 발생한 후에 ** 스크립트가 실행될 때 이미로드되어야합니다. 요소가 문서의 본문에 추가 될 때 이미로드되고 시각적으로 적용됩니다. 오프셋 값이 잘못되었습니다. – Witiko