Question: I have a label that shows the file name .. I had to set `AutoSize` of the label to `False` for designing.  

So when the file name text got longer than label size.. it got cut like in the picture.

![enter image description here](https://i.stack.imgur.com/M9zkb.jpg)

```
label1.Size = new Size(200, 32);
label1.AutoSize = false;

```

How do I re-size the text automatically to fit the label size, when the text is longer than the label size?

Answer: 
Label scaling

```
private void scaleFont(Label lab)
{
    Image fakeImage = new Bitmap(1, 1); //As we cannot use CreateGraphics() in a class library, so the fake image is used to load the Graphics.
    Graphics graphics = Graphics.FromImage(fakeImage);

    SizeF extent = graphics.MeasureString(lab.Text, lab.Font);

    float hRatio = lab.Height / extent.Height;
    float wRatio = lab.Width / extent.Width;
    float ratio = (hRatio < wRatio) ? hRatio : wRatio;

    float newSize = lab.Font.Size * ratio;

    lab.Font = new Font(lab.Font.FontFamily, newSize, lab.Font.Style);
}

```

TextRenderer Approach pointed out by @ToolmakerSteve in the comments

```
private void ScaleFont(Label lab)
{
    SizeF extent = TextRenderer.MeasureText(lab.Text, lab.Font);

    float hRatio = lab.Height / extent.Height;
    float wRatio = lab.Width / extent.Width;
    float ratio = (hRatio < wRatio) ? hRatio : wRatio;

    float newSize = lab.Font.Size * ratio;

    lab.Font = new Font(lab.Font.FontFamily, newSize, lab.Font.Style);
}

```
this method worked for me

simply you will reduce font size until it reach the width you want.

```
while (label1.Width >150 )
{
    label1.Font = new Font(label1.Font.FontFamily, label1.Font.Size - 0.5f, label1.Font.Style);
}

```