This example produces letter R that appears to be cut into the surface of a tile. Skip to output
center<-c(100,10)
WH<-c(8050,400)
RWH<-c(200,150)
svgR(
wh=WH,
defs(
filter( id='emboss',
feGaussianBlur( in1='SourceAlpha', stdDeviation=2, result='blur'),
feSpecularLighting( in1='blur', surfaceScale=-3, style='lighting-color:white',
specularConstant=1, specularExponent=16, result='spec',
kernelUnitLength=1, feDistantLight(azimuth=45, elevation=45)
),
feComposite(in1='spec', in2='SourceGraphic', operator='in', result='specOut'),
feComposite(in1="SourceGraphic", in2="specOut", operator="arithmetic",
k1234=c(0,1,1,0), result="embossOut")
),
filter( id="bevel-shadow", xy=c("-50%","-50%"), wh=c("200%","200%"),
feGaussianBlur(stdDeviation="1", result="blur"),
feOffset('in'="blur", dxy=c(1,1), result="blur1"),
feOffset('in'="blur", dxy=c(0,0), result="blur2"),
feComposite('in'="blur2", 'in2'="blur1", operator="arithmetic",
k2="1", k3="-1", result="diff1"
),
feFlood(flood.color="back" ),
feComposite('in2'="diff1", operator="in", result="diff1"),
feComposite('in'="blur1", 'in2'="blur2", operator="arithmetic",
k2="1", k3="-1", result="diff2"
),
feFlood(flood.color="white", flood.opacity="0.5" ),
feComposite('in2'="diff2", operator="in", result="diff2"),
feMorphology(operator="erode", radius=2, 'in'="SourceAlpha" ),
feGaussianBlur(stdDeviation=2, result="blur"),
feOffset(dxy=c(3,3)),
feComposite('in2'="SourceAlpha", operator="arithmetic",
k2="-1", k3="1", result="shadowDiff"
),
feFlood(flood.color="black", flood.opacity=".8" ),
feComposite('in2'="shadowDiff", operator="in", result="shadow"),
feMerge(
feMergeNode( 'in'="SourceGraphic"),
feMergeNode( 'in'="shadow"),
feMergeNode( 'in'="diff1"),
feMergeNode( 'in'="diff2")
)
)
),
lapply(1:4, function(i){
cxy<-(c(5,0)+ RWH )*c(i-.5,.5)
g(
rect(id="tmp", cxy=cxy, wh=RWH, stroke="black",
fill="rgb(128,128,192)", filter="url(#emboss)"
),
text("R", cxy=cxy, font.size=144, font.weight="bold",
stroke="black", fill="rgb(224,224,255)", filter="url(#bevel-shadow)"
)
)
})
)