SVG 업로드가 너무 작게 표시됩니다

Maker 포럼에서는 레이저 각인기 및 컷터 사용자 커뮤니티가 존재하며, 이러한 장비에서 SVG 파일이 널리 사용되기 때문에 SVG 업로드를 허용하고 있습니다. 우리는 사용자들이 다른 사람들이 다운로드할 수 있도록, 또는 토론 과정에서 볼 수 있도록 SVG를 업로드할 수 있기를 바랍니다. 이는 주로 도움이 필요한 요청의 맥락에서 이루어집니다.

불행히도, SVG는 극도로 작게 렌더링되는 경향이 있으며, 때로는 거의 보이지 않을 정도로 작아지기도 합니다. 오늘 밤 누군가가 SVG를 업로드했는데, 자동으로 12x8픽셀로 설정되어 컬러 라인이 사라질 정도로 작아졌고, 마치 눈보라 속의 북극곰 사진처럼 보였습니다. (카테고리 모더레이터가 아예 SVG가 있다는 것을 알아챈 것 자체가 놀라웠습니다.) 이는 우리에게 흔한 문제였습니다.

경험 있는 사용자들은 예를 들어 12x8을 480x320으로 변경하여 실제로 이미지를 볼 수 있다는 것을 배울 수 있을 것입니다. 하지만 경험 있는 사용자는 대부분 이렇게 할 필요가 없으며, SVG를 게시하는 대부분의 사람은 이 Discourse의 특이한 점에 대해 모르는 도움을 구하는 초보자들입니다.

Discourse가 SVG를 몇 픽셀에 불과하도록 제한하도록 만드는 원인은 무엇일까요?

참고로, 카테고리 모더레이터로부터 받은 쿼리는 다음과 같습니다:

수정: 해당 스레드에서, 이 문제가 다른 포럼보다 이 특정 포럼에 더 큰 영향을 미칠 수 있는 가능한 이유가 있습니다:

흔한 “K40” 레이저 컷터는 12"x8" 베드를 가지고 있으며, 미터법 대신 정확히 1/1000인치 단위로 작동합니다. 따라서 이러한 SVG 파일의 경우 인치를 사용하는 것이 실제로 매우 합리적이며, "사용자는 미터법을 사용해야 한다"는 문제가 아닙니다.

2개의 좋아요

사용자님의 설정이 비표준적인 것 같습니다. 여기서 SVG를 업로드하면 어떤 일이 발생하나요?

SVG는 보안 위험이 될 수 있으므로, 게시물에서 자유롭게 렌더링되도록 허용하는 경우는 드뭅니다.

감사합니다!

해당 예시 그래픽이 여기에서 어떻게 보이는지 확인해 보세요. (화면에 묻은 먼지가 아니라, 렌더링된 그래픽입니다):

e1ff136dadb082718c04bb5aaf0f1395de79ba93

여기서도 동일한 12x8 픽셀 크기가 유추되는 것을 확인할 수 있습니다. 이 파일을 업로드했을 때 변경 없이 그대로 표시되는 원시 마크다운은 다음과 같습니다:

![e1ff136dadb082718c04bb5aaf0f1395de79ba93|12x8](upload://wffVySQ30j5UczxrY5nifKC0kEP.svg) 

유추된 크기를 12x8에서 480x320으로 변경하면 이미지가 먼지 알갱이보다 더 크게 보이도록 표시됩니다:

![e1ff136dadb082718c04bb5aaf0f1395de79ba93|480x320](upload://wffVySQ30j5UczxrY5nifKC0kEP.svg) 

e1ff136dadb082718c04bb5aaf0f1395de79ba93

어떤 "설정"을 말씀하시는 건가요?

물론 SVG 업로드를 허용해야 했습니다. 제 기억으로는 2년 전쯤 authorized_extensions 설정에 svg를 추가해야 했던 것 같습니다.

Discourse에서 SVG 정제(sanitization) 코드를 확인했습니다. 여기서는 렌더링되는 것을 볼 수 있습니다. Maker 포럼의 핵심 사명 중 하나인 SVG의 가치와 우리의 사용자 기반 관리 방식을 고려하여, 우리는 의도적으로 SVG를 표시하도록 선택했습니다. 사람들이 SVG를 레이저 절단/각인하는 데 어려움을 겪고 있을 때, 대화 맥락에서 SVG를 볼 수 있는 것은 이해와 진단에 있어 매우 유용한 도움이 됩니다.

제가 meta에서도 SVG를 표시할 수 있었던 점을 볼 때, 아마도 당신도 동일한 결정을 내린 것으로 보입니다. 물론 이유는 분명히 다를 것입니다.

2개의 좋아요

훌륭합니다. 추가적인 세부 정보를 제공해 주셔서 감사합니다. 아마도 @jamie.wilson 님이 이번 주에 해당 문제를 살펴봐 주실 수 있을 것입니다.

5개의 좋아요

감사합니다!

조사를 진행하면서, 위에서 Scorch가 언급한 12x8 픽셀의 값이 우연한 것이 아니라 svg 요소의 width와 height 속성에서 단위를 처리하지 않아서 발생한 것일 가능성이 높다는 점을 확인하고 싶었습니다. 처음 질문을 올릴 당시에는 그 사실을 인지하지 못했습니다. :smiling_face:

4개의 좋아요

정말 정확히 지적해 주셨습니다. 이미지 크기를 가져오기 위해 사용하는 라이브러리는 SVG 파일의 width와 height 속성에서 정수 값만 가져오고, 단위 유형을 파싱하려는 시도는 하지 않습니다. 이 문제를 가장 깔끔하게 해결할 방법을 찾아보겠습니다.

문제가 있는 파일 몇 개를 ImageMagick과 librsvg를 모두 사용하여 실험해 보았습니다. ImageMagick은 기본적으로 DPI 96을, librsvg는 90을 사용하는 것 같습니다. 합리적인 기본값을 선택하여 일관되게 적용하기만 하면 어느 쪽이든 괜찮을 것 같습니다…

5개의 좋아요

90dpi 또는 96dpi를 사용하면, SVG의 너비와 높이가 인치뿐 아니라 밀리미터 단위일 때도 더 합리적인 크기로 표시될 수 있습니다. 현재 밀리미터 단위로 너비와 높이가 지정된 SVG는 기본적으로 브라우저 픽셀 1개당 1mm 비율로, 즉 약 ⅓~¼ 배율로 표시됩니다. 이전에는 “그래도 확장 가능한 거니까…” 하고 넘겼지만, 인치와 밀리미터 모두를 합리적인 기본 해상도로 지원해 주시면 두 단위 모두 훨씬 더 잘 렌더링될 것입니다. :tada:

감사합니다!

우리는 SVG가 이메일에서 전혀 렌더링되지 않기 때문에, 이 기능의 효용이 상당히 제한적이라고 우려하고 있습니다.

이메일 HTML은 매우 제한적인 (그리고 비일관되게 구현된; Litmus 참조) HTML 집합이며, 여러분은 Discourse가 현대적인 웹(예: 무한 스크롤)을 위해 만들어졌다는 점을 강조하고 있습니다. 저는 웹에서 표현할 수 있는 모든 것을 이메일에서 완벽하게 표현하는 것이 핵심 고려 사항이라는 사실을 전혀 인지하지 못하고 있었습니다. 이는 제가 이해해야 할 새로운 쟁점입니다. (무한한 자원이 있다면 SVG를 PNG로 렌더링하여 이메일에 포함할 수 있을 것이라 상상해 볼 수 있습니다. 이는 일반적으로 HTML 이메일에 필요한 많은 무의미한 처리보다 훨씬 높은 충실도를 제공할 것입니다. 하지만 SVG가 기본적으로 비활성화되어 있어, 이는 우선순위로서 훨씬 낮게 느껴집니다…)

@Neotinker는 언젠가 threejs를 사용하여 Discourse 대화에 인터랙티브한 3D 모델을 임베드하는 onebox를 구축하는 아이디어를 가지고 있었습니다. Maker Forums가 실제로 기능으로 존재하게 된다면 이를 활성화하고 싶은 것이었습니다. 만약 그분이나 다른 누군가가 이를 구현한다면, "이메일에서 이를 렌더링할 수 없다"는 고려 사항이 이러한 작업을 수용하는 데 장애가 될까요? (참고로 threejs가 자신의 포럼에 Discourse를 사용하고 있습니다…)

아니면 이것이 CDCK가 이 문제에 얼마나 많은 시간을 투자할지에 대한 우선순위 결정 문제라면, 코드에 대한 안내를 주시면 감사하겠습니다. 여기서 부담을 주려는 의도는 아닙니다. 이전 기여를 통해 보셨듯이 저는 Ruby나 RoR 전문가가 아니지만, 검토할 일들의 큐에 추가할 의향이 있습니다. (제가 원래 이 토픽을 게시했을 당시에는 단위 유실과 픽셀 가정 문제가 디자인 결정이었을 것이라고 생각하여, Contribute > UX 대신 #contribute:bug에 넣지 않았습니다 :smiling_face:)

1개의 좋아요

금요일 오후에 풀 리퀘스트를 생성했습니다. 이 리퀘스트는 치수(inches, cm, mm 등)가 인치, 센티미터, 밀리미터 또는 이와 유사한 단위로 표현될 때 SVG 파일이 매우 작게 표시되는 문제를 해결하기 위한 것입니다.

풀 리퀘스트는 현재 코드 리뷰를 기다리고 있어 아직 사용 가능하지 않지만, 곧 배포될 예정입니다.

5개의 좋아요

커밋을 공유해줘서 감사합니다. 덕분에 어디서 어떻게 처리했는지 확인할 수 있었어요!

@codinghorror 님의 말씀을 오해한 점 죄송합니다. 그분이 ‘개미 구멍’ 같은 문제(복잡한 사연이 얽힌 문제)를 의미하는 줄 알고, 여기에서 많은 작업을 유발할 의도는 아니었는데 말이죠.

2개의 좋아요

문제없어요! 우리는 SVG를 좋아하지만 현실주의자이기도 하니까요 :wink:

어쨌든, 작은 개선에 대한 제안은 언제나 환영입니다!

4개의 좋아요

여기 연필의 SVG가 있습니다. 크기는 8인치 x 12인치입니다.

변경 사항이 병합되었으며 업데이트 후 사용하실 수 있습니다.

8개의 좋아요

정말 감사합니다! 이제 Maker Forums에 배포했습니다 :tada:

5개의 좋아요