HTML5 캔버스 2D 컨텍스트가있는 사각형 격자를 만듭니다. & 캔버스의 크기를 그리드 사각형이 하나의 단위가되도록 변환하지만 30px, 말하자면 변환되지 않은 것입니다. Here's an example 10x10 크기의 30px 정사각형입니다.크기가 조정 된 HTML5 캔버스에서 글꼴 크기가 1보다 작 으면
한 가지를 제외하면 잘 작동합니다 : 텍스트.
정사각형 안에 들어 맞는 캔버스의 글꼴을 지정하려면 글꼴 크기를 1보다 작게 지정해야합니다.
예를 들어, ".5px sans-serif"는 정사각형 크기의 절반 (예 : 30px 변형되지 않은 사각형의 경우 "15px sans-serif")이어야합니다. Chrome에서 적어도 실패하고 캔버스가 더 큰 기본값으로 되돌아갑니다.
내가 찾은 유일한 해결책은 텍스트를 그릴 때 캔버스 크기 조정을 실행 취소하는 것입니다.
하위 픽셀 글꼴 사양을 통해이를 해결할 수있는 방법이 있습니까? (당연히 변환 후 폰트는 깔끔한 큰 폰트가 될 것입니다. 서브 픽셀 폰트 크기는 캔바스 변환에만 관련됩니다.)
척도가 아닌 ctx.setTransform (1, 0, 0, 1, 0, 0)을 저장하는 것이 좋습니다. – backspaces
@backspaces save/restore는 성능면에서 다소 비쌉니다 (푸시/팝 스택 접근 방식을 사용하고 전체 컨텍스트의 설정을 저장/재검색 할 때 모두 필요합니다). setTransform은 스케일을 다시 설정하기위한 좋은 대안이지만, 스케일은 setTransform과 마찬가지로 변환 매트릭스 값을 설정하는 래퍼 일 뿐이지 만 scale()이 누적되면서 스케일을 완전히 재설정하려면 setTransform이 필요합니다. 희망이 대답을 도왔습니다! – K3N
아아, 나는 그것을 놓쳤다. 저장/복구 쌍을 피하는 것은 좋은 생각이다. – backspaces