SVG: crea líneas superpuestas en un elemento visible

Estoy creando un blog y me gustaría tener una línea de íconos de redes sociales inmediatamente debajo del título. Lo he logrado de alguna manera usando FontAwesome .

Sin embargo, me gustaría incluir algunos íconos que no están presentes en el kit de herramientas. Me di cuenta de que podía diseñar mi propio icono como un SVG y crear una fuente personalizada con la aplicación Icomoon . Sin embargo, tengo problemas para implementar esto, como se explica en la pregunta SO relacionada .

Parece que mi SVG original es el problema y, a pesar de ser una sola capa en Inkscape, la aplicación Icomoon seleccionó <path>elementos individuales en el SVG. A partir de esto y del hecho de que todos los SVG sin procesar de FontAwesome parecen tener rutas únicas, concluyo que yo también necesito un <path>SVG de un solo elemento.

Este es el icono que estoy tratando de generar:

ingrese la descripción de la imagen aquí

A mi modo de ver, hay tres formas superpuestas en la imagen; la escuadra, el bolsillo y la flecha. Para demostrar que tengo todas las formas aquí, cada una individualmente:

ingrese la descripción de la imagen aquí

Luego arreglé las formas en un solo SVG así:

<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="
  M 1664 416
  v 960
  q 0 119-84.5 203.5
  t -203.5 84.5
  h -960
  q -119 0 -203.5 -84.5
  t -84.5-203.5v-960
  q 0 -119 84.5-203.5
  t 203.5 -84.5
  h 960
  q 119 0 203.5 84.5
  t 84.5 203.5
  z

  m 1322.122, 445.11577
  q 38.4213, 0 65.0205, 26.89486 26.5994, 26.89487 26.5994, 65.31612
  v 306.77881
  q 0,104.03295 -40.1945, 198.60834 -40.1946, 94.5752 -107.8751, 162.5513 -67.6805, 67.9761 -161.9603, 107.875 -94.2798, 39.899 -197.72163, 39.899 -104.03284,0 -198.3127,-39.899 -94.2798, -39.8989 -162.25584, -107.875 -67.97604, -67.9761 -108.17057, -162.5513 -40.19453, -94.57539 -40.19453, -198.60834
  V 537.32675
  q 0, -37.83015 27.19042, -65.02057 27.19041, -27.19041 65.02056, -27.19041
  z

  M 905.99037,1074.0419
  q 27.78153, 0 48.46995, -19.5062
  L 1193.2631, 825.19051
  q 21.8705, -20.68842 21.8705, -50.2432 0, -28.96366 -20.3928, -49.35651 -20.3928, -20.39277 -49.3565, -20.39277 -27.7815, 0 -48.4699, 19.50617
  L 905.99037, 907.94381 715.06637, 724.7042
  q -20.68836, -19.50617 -47.87878, -19.50617 -28.96369,
  0 -49.35651, 20.39277 -20.39281, 20.39285 -20.39281, 49.35651 0, 30.1459 21.27946, 50.2432
  l 239.39384, 229.34519
  q 19.50618,19.5062 47.8788,19.5062
  z"/></svg>

En última instancia, me gustaría que las formas fueran negras, blancas y negras, respectivamente, con el blanco como fondo, ya que la forma se recorta de las formas debajo de ella. Sin embargo, el aspecto real de este SVG es:

ingrese la descripción de la imagen aquí

y las formas se ven negras, negras y blancas respectivamente.

Por lo tanto, las formas superpuestas pueden cambiar de negro a blanco (o recortadas), como también se ve en los SVG sin procesar de FontAwesome (por ejemplo , este ), pero en este caso no es la forma correcta.

¿Qué determina esto y cómo puedo lograr lo que busco?

Respuestas (1)

Resulta que la palabra clave de Google es "ruta compuesta", lo que me llevó a esta publicación de blog sobre la propiedad SVG fill-rule. He aprendido que los caminos superpuestos que van en direcciones opuestas dan como resultado que se corte el camino interior.

Mirando mis formas, el cuadrado, el bolsillo y la flecha, observé que estaban siendo dibujadas en sentido horario, horario y antihorario respectivamente. Esto explicaba por qué se cortaba la flecha pero no el bolsillo.

Por lo tanto, seguí esta pregunta e invertí la dirección del cuadrado para que ahora fueran en sentido contrario a las agujas del reloj, en el sentido de las agujas del reloj, en el sentido contrario a las agujas del reloj. También establecí el Mcomando de relativo a absoluto para cada forma. Esto me consiguió el SVG deseado. Aquí está el código final:

<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg">
  <path d="
  M 1664, 416
  Q 1664, 297 1579.5, 212.5 1495, 128 1376, 128
  H 416
  Q 297, 128 212.5, 212.5 128, 297 128, 416
  v 960
  q 0,119 84.5, 203.5
  Q 297,1664 416, 1664
  h 960
  q 119, 0 203.5, -84.5
  Q 1664, 1495 1664, 1376
  Z

  M 1322.122, 445.11577
  q 38.4213, 0 65.0205, 26.89486 26.5994, 26.89487 26.5994, 65.31612
  v 306.77881
  q 0,104.03295 -40.1945, 198.60834 -40.1946, 94.5752 -107.8751, 162.5513 -67.6805, 67.9761 -161.9603, 107.875 -94.2798, 39.899 -197.72163, 39.899 -104.03284,0 -198.3127,-39.899 -94.2798, -39.8989 -162.25584, -107.875 -67.97604, -67.9761 -108.17057, -162.5513 -40.19453, -94.57539 -40.19453, -198.60834
  V 537.32675
  q 0, -37.83015 27.19042, -65.02057 27.19041, -27.19041 65.02056, -27.19041
  z

  M 905.99037,1074.0419
  q 27.78153, 0 48.46995, -19.5062
  L 1193.2631, 825.19051
  q 21.8705, -20.68842 21.8705, -50.2432 0, -28.96366 -20.3928, -49.35651 -20.3928, -20.39277 -49.3565, -20.39277 -27.7815, 0 -48.4699, 19.50617
  L 905.99037, 907.94381 715.06637, 724.7042
  q -20.68836, -19.50617 -47.87878, -19.50617 -28.96369,
  0 -49.35651, 20.39277 -20.39281, 20.39285 -20.39281, 49.35651 0, 30.1459 21.27946, 50.2432
  l 239.39384, 229.34519
  q 19.50618,19.5062 47.8788,19.5062
  z"
  />
</svg>