我最近一直在使用一些SVG,我注意到在Safari上,带有图案填充的区域呈现出非常模糊的状态。
我试图查看是否是代码问题,但是在此过程中,我意识到通过Mac的触摸板放大了SVG的一部分(不放大View-> Zoom中的文本),然后刷新了页面将使SVG模式清晰明了-至少对于顶级SVG元素而言,其物理上靠近屏幕的可见部分(其他未关闭的SVG元素并未放大显示的屏幕部分)
混乱的是字体显示方式也发生了变化,刷新时字形之间的间距变小了。
我去了,并在其他浏览器上进行了测试。在Firefox上,无法像在Safari上一样放大SVG。对于支持相同macOS区域放大功能的Chrome,SVG模式从一开始就填充了清晰明了的渲染效果(就像我本来想要的那样)。
所以我的问题是,为什么Desktop Safari会以这种奇怪的方式运行,有哪些解决方法?幸运的是,Safari的使用率仅为5%,并且不会影响整体功能,但是要求最终用户刷新页面才能看到清晰呈现的SVG模式而不是模糊的感觉。
作为一般说明,我的svg使用preserveAspectRatio="xMinYMin meet"
。我的模式使用width="100%" height="100%" patternUnits="objectBoundingBox"
,并且内容始终按比例缩放(通常按transform='scale(1 1)
缩放,尽管这似乎不是问题所在)。
谢谢。
(注意:我也在Mobile Safari上进行了尝试,但是刷新并不能解决问题,模糊处理使图案完全模糊不清。MobileOpera Mini与Mobile Safari有着相同的问题,但并不是一切都难以辨认。)