Google Chrome has a nice feature - it can create bold-italic letters on the fly from italic letters (in case a font has italic style but does not have bold-italic). The result looks good enough: letters become thicker only in vertical direction, thin horisontal lines are there. In comparison the same result from Firefox is awful.

Is there a way to do this automatically on the whole font in free font editor or any other free app (CLI is also OK)? May be Chrome uses some free engine...


Here is a screenshot of Linux Libertine in Chrome. Top example is a semibold-italic made by font author. Middle example is italic by author. At the bottom is an automatically generated by Chrome pseudo-semibold-italic from italic. In the red is a screenshot from FontForge after changing font weight.

enter image description here

  • 1
    I can't answer.. but this reminded me of a sign they had propped up at one of my first employment positions... "Good enough, isn't."
    – Scott
    Commented Feb 9, 2018 at 20:13
  • 1
    Type snobs don't care for automatic bolding or italicazation. If the process could be done automatically they wouldn't have to release these styles of type anymore. It takes people a long time to develop their letter forms in bold and italic to be optimized for reading. Can it be done with freeware? I don't know.
    – Webster
    Commented Feb 9, 2018 at 20:43
  • @Peter Zagubisalo There's probably a reason why the type creators haven't made a bold italic variant—if it was as easy as running a simple script on the italic variant, they'd do it. If you apply automatic bolding, the readability of your text is likely to suffer. Instead, I'd recommend a) using a different font and b) not using both italics and bold at once (except for a few corner cases, it's just bad practice)
    – Tin Man
    Commented Feb 10, 2018 at 1:05
  • 1
    Why do you expect it to be good quality
    – joojaa
    Commented Feb 10, 2018 at 6:32
  • @joojaa Because I see it to be a good quality. Commented Feb 10, 2018 at 6:46

2 Answers 2


FontForge is a free font editor which can do that. Select all the glyphs and apply the command in the menu Element > Style > Change Weight... Then regenerate the font. As for how good it is, I can't tell; quality is subjective.

  • I tried this. This is slightly better than Firefox awful result. Still bad, though. Commented Feb 10, 2018 at 3:47
  • Chrome makes a good job, indeed! Sincerely, I have never used any of the weight changing utilities in the font editors. The only solution (in FontForge) that I can see is writing your own weight-changing script in Python... -_-
    – Pepe Ochoa
    Commented Feb 10, 2018 at 16:28
  • Indeed. For me Chrome's work looks like magic. I don't know where to begin. I asked another question and opened issue on GitHub FontForge repo... I also thought about asking on StackExchange Machine learning community whether they know algorithms like that (you know: Google, magic, deep learning), but I hesitant :) Commented Feb 10, 2018 at 17:30

There is a tool in FontForge named Expand Stroke. It allows customizing the amount of emboldening both horizontally and vertically, as well as the angle.

enter image description here

First of all, the "Pen Type": I recommend "Circular (Elliptical)" for auto-emboldening. It provides the most even distribution of emboldening at all angles.

Then, the "Main Stroke Width" and "Main Stroke Height": those are the dimensions of emboldening. Warning: Setting one to 0, or setting one to a negative value and the other to a positive won't work correctly. Setting both to either positive (thicken) or negative (thinnen) will work correctly. And when the relative difference between the two is large (like 74 and 1) it will run very slowly. So if you only want a horizontal embolden of, say, 50 units, first do "60, 10" then "-10, -10".

Then, the Pen Angle. When it is set to 0, the dimensions of emboldening are horizontal and vertical. But it can as well be set at an angle.

"Line Cap" is only used for open outlines. Standard outline fonts use closed outlines, so for emboldening this doesn't matter.

"Line Join" determines the emboldening behavior of corners. With "Miter" the sharp corners will be preserved, as long as they are exact corners. "Round" will always round corners, while "Bevel" will add an edge.

"Remove Internal Contour" should be enabled and "Remove External Contour" disabled for emboldening. If both are disabled, the result becomes a stroke. If both are enabled, the result is nothing. If only "Remove External Contour" gets enabled, the emboldening will work in reverse, which is equivalent to using inverse numbers.

Your sample also appears to add extra spacing. The way to add spacing (whether positive or negative) is to use Metrics / Set Both Bearings. Use the Increment Bearings option. Note that Expand Stroke emboldens exactly the amount given, while Increment Bearings adds the value to both sides of the glyph, so if you want the extra spacing to be equal to the emboldened value, you need to set the Increment Bearings option to half the value.

enter image description here

After finding out those tools, test them out.

Sample of Times New Roman Italic and Times New Roman Bold Italic:

enter image description here enter image description here

After performing the three operations in order,

enter image description here

I arrived at this result:

enter image description here

Feel free to experiment with the parameters, to see if they give better or worse results.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.