I'm a web developer, but I'm also a graphic designer.
Last week I bumped into this awesome free Photoshop action for creating Smooth Edges in Photoshop.
The action basically creates smooth edges for shapes, image cutouts and fonts.
I thought this would be a great exercise to try and use CSS to smooth font edges.
Let's Get Started
I used CSS filters to make round smooth edges for the Raleway font.
CodePen Demo:
See the Pen Smooth Edges CSS by Ion Emil Negoita
(@inegoita) on CodePen.
Github Gist: CSS Smooth Fonts
SVG Filters Stack
To smooth the corners and edges of the Raleway font I added a SVG filter to the div
containing the text via the CSS class smooth
. Here's how the CSS class looks:
.smooth{ filter:url(#smooth); }
To reference the SVG filter with the ID smooth
I used the #smooth
reference.
Now, for the smooth filter itself, I defined it like this:
<svg viewbox="0 0 100% 100%"> <defs> <filter id="smooth"> <feMorphology operator="dilate" radius="0" /> <feGaussianBlur stdDeviation="3" /> <feComponentTransfer> <feFuncA type="table" tableValues="0 0 1 1"></feFuncA> </feComponentTransfer> <feComponentTransfer> <feFuncA type="table" tableValues="0 0 1 1"></feFuncA> </feComponentTransfer> <feComponentTransfer out="rounded1"> <feFuncA type="table" tableValues="0 0 1 1"></feFuncA> </feComponentTransfer> <feComposite in2="rounded1" in="SourceGraphics" operator="in"/> </filter> </defs> </svg>
That might seem complicated, but it's not that bad.
Here's the SVG filter stack explained:
-
feMorphology
this is used to thicken the font if needed. In my case I used a radius of 0, because the font Raleway is already thick enough -
feGaussianBlur
this will create a blurred version of the text. I used a radius of 3 for the blur. -
feComponentTransfer
I used several of this which are actually like Photoshop levels adjustments. They basically increase the contrast. I applied them only on thealpha
channel, because the Gaussian blur generates transparency and I want the font to be smooth and with full opacity -
feComposite
I used the final pass to combine the original text (SourceGraphics
) and therounded1
result of the lastfeComponentTransfer
pass to get the final result.
Top comments (0)