I have seen this question asked (and ) before, but my needs are a little different so I am only 90% of the way. Hope someone can give the final puzzle piece. Here is what I need: * from a text file which is Unicode UTF8 (BOM), read strings one by one * create a BMP file of 300 px high and place textline on it - BMP must be 2 bit (b/w only) * save BMP * read next line In the end there is as many different BMPs as there are lines in text file. I know how to operate _GDI_GraphicsDrawstring, that part is simple. But what I can't find the answer to is 1) how to calculate the space needed horizontally by a given string in 300 px height 2) how to create a white-background BMP in memory, so it can be populated and written to disc. Point 2) is the most important, the auto-font-size-calculation can come later. For now it's trial and error. Referring to ImageMagick, this would be $image->ReadImage('canvas:white'); The purpose is to use images in an industrial microcontroller. Therefore the need for 2bit BMP and 300px exact in height. Thanks for any help