Trouble with converting side bearings to Microsoft Office units

Hi there,

I’ve been trying to write a script in VBA for Microsoft office to align text in Powerpoint, however, it only aligns it to the bounding box, and our company conventions demand that it be aligned to the start of the text itself!

After a deep dive into how fonts work and what that extra space was called, I discovered side bearings, and this program and forum!

I exported the metrics of Gotham Condensed Book (one of the key fonts used here) and made a spreadsheet to figure out what the ratio of funits to Office VBA “points” was. However I found that the the ratio was not consistent, and each unit of bearing was worth more points the higher the bearing amount was!

Screenshot of the spreadsheet:

I am unfortunately too obtuse to grasp what is happening here so I’m hoping someone here will have an idea to point me in the right direction.

They should be higher. A point in printing terms is 1/72 of an inch. The LSB, or left side-bearing, is (in general) the amount of white space from zero to the beginning of the character and is different dependent upon the style of the type. So if the LSB is 56 funits the points would be more than a LSB of 17 funits because 56 is wider.

I have no idea why the LSB in points is even listed. To my knowledge it has no value to anyone.

As to your company conventions, they weren’t written by a typographer, obviously. Had they been they would not be insisting on such an alignment. Using the bounding box is the correct way to do it.

George, thank you very much for your response.

I agree that this is not typographically correct, and I have tried to convince management to allow alignment to bounding box, with no success.

I made the column with LSB in points, since I am working in Microsoft office, where the scripting uses points as units. I am trying to figure out a way to programmatically account for the side bearing and align based on the first character in a line.

The problem was not that the points were higher, but that the relationship between points and funits is not consistent! I can’t for instance say that 6 funits = 0.8 points because this doesnt hold true for larger amounts! It may be something in Office that is causing this, honestly I am not exactly a typographer myself, hence why I’m asking.

Another issue you will run into is this will change whenever type sizes are changed. They will also change whenever you change type fonts. They can change from one font foundry to the next.

There is not a simple solution here. It appears to me you have been assigned a hopeless task. Management should look at their return on investment in this project, then they might back down.

You need to also know the UPM of the font (most Fonts habe 1000 or 2048) and the font size in the application. Then you can calculate:

(LSB in units) * (Fontsize in points) / (UPM value) = LSB in points

Example: say an uppercase Y has has an LSB of 50 units, and you are using the font at 12 points, and the font has a UPM of 2048, the effective LSB in points will be:
50*12/2048=0.29296875 pt

Hey mekkablue just wanted to say this post really helped, I found the UPM (1000) and used it in my script to calculate the required shift and it works!

Really appreciate the explanation!