Lighting and Blending Modes

The lighting primitives treat an input's alpha channel as a height map and light it with the Phong model: <feDiffuseLighting> for a matte surface, <feSpecularLighting> for a shiny one. Inside goes one light: <fePointLight>, <feSpotLight> or <feDistantLight> (the sun). Combine that light with the original through <feComposite operator="arithmetic"> (k1*in*in2 + k2*in + k3*in2 + k4) or <feBlend>, which takes every CSS blend mode.

A beveled wordmark from specular light, and leather from lit noiseHTMLLive
<svg width="600" height="100" font-family="Georgia" font-weight="bold" font-size="54">
  <filter id="bevel">
    <feGaussianBlur in="SourceAlpha" stdDeviation="2" result="bump"/>
    <feSpecularLighting in="bump" surfaceScale="4" specularConstant="1" specularExponent="20"
      lighting-color="#fff" result="spec"><fePointLight x="80" y="-40" z="120"/>
    </feSpecularLighting>
    <feComposite in="spec" in2="SourceAlpha" operator="in" result="shine"/>
    <feComposite in="SourceGraphic" in2="shine" operator="arithmetic" k2="1" k3="1"/>
  </filter>
  <filter id="leather" x="0" y="0" width="1" height="1">
    <feTurbulence type="fractalNoise" baseFrequency=".25" numOctaves="3" result="grain"/>
    <feDiffuseLighting in="grain" surfaceScale="2" lighting-color="#fff" result="lit">
      <feDistantLight azimuth="225" elevation="50"/></feDiffuseLighting>
    <feBlend in="SourceGraphic" in2="lit" mode="multiply"/>
    <feComposite in2="SourceAlpha" operator="in"/>
  </filter>
  <text x="10" y="70" fill="#1f5f8b" filter="url(#bevel)">BookNest</text>
  <rect x="300" y="5" width="120" height="90" rx="4" fill="#b5452f" filter="url(#leather)"/>
</svg>
Browser output of Listing 1.23
Browser output of 23

The bevel blurs the silhouette so its edges slope, lights it, keeps the light inside the letters and adds it to the original. The leather multiplies lit noise into the cover color and trims it to the rounded shape.