shape-rendering crispEdges em SVG: quando ajuda?
Veja quando crispEdges ajuda marcas em grade de pixels, quando pode deixar curvas ásperas e por que testar dois tamanhos no navegador é melhor que tratá-lo como correção.
Nesta página
Use shape-rendering="crispEdges" quando um SVG tiver bordas propositalmente duras e majoritariamente retas e um teste no tamanho final de exibição ficar melhor com essa opção. Mantenha o padrão auto quando a diferença for insignificante. Em arte curva, a indicação pode deixar uma borda mais áspera. Ela muda como um renderizador desenha formas existentes, não as formas em si. A especificação SVG 2 a chama de indicação e permite que o renderizador reduza o antisserrilhamento ou alinhe algumas bordas aos pixels do dispositivo.
Essa distinção importa se um ícone minúsculo parecer desfocado ou um logo ficar serrilhado após a exportação. crispEdges não transforma um PNG incorporado em traçados, não repara um contorno quebrado nem promete os mesmos pixels em todos os navegadores. Antes de mudar o arquivo globalmente, compare uma forma representativa com auto, crispEdges e geometricPrecision nos tamanhos que as pessoas realmente verão.
Escolha pela borda de que você precisa
- Arte retangular em grade de pixels: teste
crispEdgesnas formas relevantes e confira tamanhos de saída pequenos e maiores. - Curvas ou letras arredondadas: comece com
auto; tentegeometricPrecisionse o renderizador produzir uma diferença visível. - Um espaço entre formas adjacentes: inspecione primeiro a geometria. Uma indicação de renderização não fecha uma abertura real.
- Um PNG escalado dentro de SVG: use controles de escala raster ou reconstrua a arte como traçados se o objetivo for editabilidade.
O que crispEdges pede ao renderizador
O SVG tem quatro valores de shape-rendering. Eles são prioridades, não quatro formatos de exportação. O padrão auto permite que o renderizador equilibre velocidade, contraste de bordas e precisão geométrica. crispEdges favorece contraste forte nas bordas e pode suprimir o antisserrilhamento; geometricPrecision favorece geometria fiel. A referência de atributos SVG do MDN explica que um renderizador pode tratar todas as bordas, ou apenas as quase horizontais e quase verticais, de maneira diferente. Não há um filtro obrigatório de nitidez.
| Valor | O que solicita | Primeiro teste útil |
|---|---|---|
auto | O renderizador escolhe o equilíbrio | Referência inicial para todo SVG |
crispEdges | Mais contraste nas bordas das formas | Marcas quadradas ou detalhes semelhantes a grades |
geometricPrecision | Posicionamento geométrico mais fiel | Curvas, diagonais e contornos finos |
optimizeSpeed | Prioridade de velocidade de renderização | Contextos especializados; não presuma ganho visual |
Um atributo no SVG pai pode ser herdado pelas formas filhas, portanto aplicá-lo na raiz pode afetar um círculo que deveria permanecer suave. Você pode direcioná-lo a um único retângulo ou traçado. Se o atributo de apresentação SVG e uma declaração CSS shape-rendering se aplicarem, a propriedade CSS tem precedência.
Comparamos as mesmas formas em dois tamanhos
Criamos uma marca retangular em grade e um contorno curvo como formas SVG originais. A marcação, os preenchimentos e o viewBox eram idênticos nas três colunas; apenas o valor de shape-rendering mudou. Cada forma foi renderizada com 63 e 111 pixels CSS no Chromium, com zoom do navegador em 100%. A figura é uma captura do navegador desse teste local, não uma ilustração de um resultado imaginado.

Nenhum dos modos muda os traçados. Nesta captura, as diferenças são pequenas demais para declarar uma configuração vencedora em geral. O nome soa como uma ferramenta de correção, mas o efeito pode ser discreto para uma forma, tamanho e renderizador específicos. Inspecione o destino real antes de manter o atributo extra.
Esta foi uma renderização no Chromium, não um estudo de compatibilidade entre navegadores. Um visualizador PDF, editor de design ou navegador em outra escala de dispositivo pode rasterizar os mesmos traçados de forma diferente. A definição SVG 2 deixa deliberadamente as escolhas de implementação em aberto.
Teste em uma forma antes de aplicar em tudo
Salve uma cópia do SVG e coloque a indicação em uma forma representativa. Por exemplo, aplique-a à parte retangular de um ícone, deixando o detalhe curvo em auto:
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<rect x="4" y="4" width="16" height="8" fill="#154b67"
shape-rendering="crispEdges" />
<path d="M5 18 Q12 11 19 18" fill="none" stroke="#23a6a1"
stroke-width="2" shape-rendering="auto" />
</svg>Abra o arquivo no visualizador pretendido em um tamanho pequeno de ícone e em um tamanho maior. Compare-o com o original salvo, incluindo diagonais e curvas. Se você estiver estilizando SVG embutido com CSS, procure uma regra que substitua o atributo. Remova a indicação quando ela não produzir uma melhora relevante; uma propriedade desnecessária dificulta o diagnóstico de diferenças futuras de exibição.
Combine a correção com o sintoma real
| Sintoma | O que conferir primeiro | Próxima ação melhor |
|---|---|---|
| Uma marca quadrada parece pouco nítida em um tamanho | Compare auto e crispEdges nesse tamanho | Mantenha a indicação apenas se melhorar a saída pretendida |
| Um círculo ou diagonal parece serrilhado | Confira se crispEdges é herdado ou exportado nessa forma | Remova-o ou compare auto com geometricPrecision |
| Uma linha fina aparece entre preenchimentos que se tocam | Compare zoom, fundo e limites dos traçados | Use o diagnóstico de emendas SVG; repare a geometria apenas se o espaço for real |
| O arquivo ainda mostra pixels quadrados quando ampliado | Inspecione se há uma imagem raster incorporada | Use a lista de verificação de SVG pixelado em vez de mudar shape-rendering |
Para um sprite PNG cuja grade exata de pixels é o design, manter o raster pode ser a escolha mais limpa. O CSS image-rendering: pixelated controla como uma imagem escalada é amostrada; é uma propriedade diferente de shape-rendering do SVG. O guia de conversão de pixel art aborda quando preservar a grade, construir blocos vetoriais ou suavizar deliberadamente o contorno.
Quando o PerfectVector se encaixa
Se sua única origem é um pequeno PNG achatado e você precisa de traçados editáveis, uma indicação de renderização não pode fornecê-los. O PerfectVector é útil nessa etapa anterior: converta o PNG em um candidato SVG e inspecione as formas no tamanho necessário. Confira o contorno, as aberturas internas e os pequenos detalhes antes de experimentar uma indicação de exibição em traçados selecionados. Uma vetorização por traçado pode reinterpretar pixels como geometria; ela não decide se um degrau de pixel art deveria se tornar uma curva suave.
Mantenha o PNG quando a grade original for a arte final. Se você já tem um SVG limpo e apenas sua exibição no navegador parece estranha, corrija diretamente a exibição ou a geometria. Quando um PNG achatado realmente precisar de contornos editáveis, crie um candidato SVG com o PerfectVector, inspecione seus traçados e compare a renderização no navegador no tamanho final antes de adicionar crispEdges.
Perguntas frequentes
crispEdges remove o antisserrilhamento de todas as formas SVG?
Não. Ele pede ao renderizador que favoreça o contraste das bordas. A especificação permite implementações diferentes, incluindo as que mudam apenas algumas bordas quase verticais ou quase horizontais. Teste a saída no visualizador que você usará.
Devo colocar shape-rendering="crispEdges" no SVG inteiro?
Apenas se todas as formas filhas se beneficiarem. Uma indicação na raiz também pode afetar filhos curvos. Aplicar o atributo a uma forma retangular é mais fácil de avaliar e tem menos chance de deixar uma curva áspera.
crispEdges corrige emendas brancas ou um PNG borrado dentro de SVG?
Ele não fecha um espaço real nem substitui pixels raster por traçados vetoriais. Diagnostique primeiro a geometria da emenda. Para um PNG escalado, use um método adequado de escala raster ou crie traçados vetoriais editáveis se essa for a necessidade real.
Fontes
- W3C — Propriedade shape-rendering do SVG 2 — Define os quatro valores como indicações ao renderizador e explica seus ajustes permitidos.
- MDN — Atributo SVG shape-rendering — Documenta formas SVG aplicáveis, herança e prioridade CSS.
- MDN — Propriedade CSS shape-rendering — Descreve o comportamento da propriedade e por que a renderização de curvas pode variar.
- MDN — Propriedade CSS image-rendering — Distingue a escala de pixels raster da renderização de bordas de formas vetoriais.
Mais do blog

Converter em vetor no Scratch: por que ainda fica pixelado
O botão Convert to Vector do Scratch muda o modo de edição sem traçar o bitmap. Confira os pontos da fantasia, escolha uma correção e inspecione um SVG importado antes de usar.

z-index SVG não funciona? Corrija a ordem dos traçados
Quando z-index não traz um traçado SVG para a frente, confira a ordem dos elementos. Compare o mesmo emblema antes e depois de reordenar e verifique grupos e exportações.