svg antialiasing

Evitar líneas entre rectángulos svge adjecent



antialiasing (1)

Aunque hay algunas opciones estandarizadas para insinuar al navegador sobre anti-aliasing en svg , ninguna de ellas parece funcionar para mi caso en que tengo rectángulos con esquinas redondeadas, y por lo tanto no puedo permitir apagar el anti-aliasing.

Aunque mis rectángulos están dimensionados para no dejar espacios verticales entre ellos, se muestra una delgada línea entre ellos, debido a los efectos del anti-aliasing. Por ejemplo, mi svg tiene un extremo de rectángulo en el píxel 80 y el siguiente comienza en 81, pero aún así se muestra una delgada línea de fondo entre ellos.

No hay forma de forzar la última versión de los navegadores para evitar el anti-aliasing para líneas rectas (crispEdges no lo hace para mis rectángulos redondeados).

Leí algunos sobre ajustes añadiendo 0.5 de un píxel a los valores y y sobre ajustar solo pares o solo valores impares (creo que esto está relacionado con el hecho de que la mayoría de las pantallas LCD actuales comprenden dos píxeles verticales de hardware por píxel expuesto por software ). No estoy seguro de con qué precisión esto mitiga el problema, y ​​me gustaría obtener una explicación clara de por qué exactamente esto tiene sentido y cuál es el enfoque de ajuste más correcto / sólido.


dos píxeles verticales de hardware por pixel expuesto al software

No eso está mal.

Cuando especifica una coordenada como "81" en un SVG, esa coordenada cae en la línea imaginaria entre el píxel 80 y 81. Si su línea tiene un ancho "1", el representador intentará dibujarlo colocando el 50% del color en los 80 píxeles y 50% en los 81 píxeles. Esto es anti-aliasing. Si desea que la línea de un píxel no se antialiase así, proporciónele la coordenada 81.5. De esta forma, toda la línea caerá dentro del píxel 81.

Sin embargo, si su línea tiene ancho 2 (o cualquier otro ancho par), no debería usar 81.5, sino quedarse con 81. Porque rendirá 50% (es decir, 1) en el píxel 80 y 50% (1) en el píxel 81. Como resultado sin efecto anti-aliasing

Esto aplica tanto para líneas horizontales como verticales. Y se aplica ya sea que esté en una pantalla LCD o un CRT antiguo.

¿Tiene esta explicación sentido ahora?