Étant donné un dessin enregistré en SVG depuis illustrator / inkscakpe (puis compressé avec imageoptim ); le code du svg est directement intégré à la page web (svg inline) :

    <svg enable-background="new 0 0 184 138" viewBox="0 0 184 138" xmlns="…
        <path fill="none" stroke="#000" stroke-width="2" d="… 

Les tracés doivent avoir un contour (stroke), et une épaisseur de contour (stroke-width):

    <path fill="none" stroke="#000" stroke-width="2" d="…
            

Le code du svg est directement intégré à la page, et des attributs "class" sont ajoutés aux "path", pour pouvoir les différencier:

    <path class="signature" fill="none" stroke="#000" stroke-width="2" d="…
            

En CSS, on peut alors cibler le path et lui attribuer un pointillé :

    .signature { stroke-dasharray: 6; }

On peut également animer le tracé :

    .signature { animation: anim-signature 10s linear infinite; }
    @keyframes anim-signature {
      to {
        stroke-dashoffset: 1000;
      }
    }

Si la longueur du pointillé équivaut à celle du tracé, et que l’offset (le décalage du pointillé) équivaut également à la longueur du tracé, on peut alors animer cette dernière propriété et ainsi “remplir” le tracé progressivement.
Pour que l’animation se termine sur la dernière frame (et ne revienne pas à la position initiale ; ce qui est le comportement par défaut), il faut ajouter :

    .signature { animation-fill-mode: forwards; }
            

Pour mesurer la longueur du tracé, on peut utiliser javascript :

    var signature_path = document.querySelector('.signature');
    var signature_length = signature_path.getTotalLength();
    console.log(signature_length);    
            

Source : How SVG Line Animation Works @ CSS Tricks