If you add: table-layout: fixed;
to your css that controls the table
That would allow you to set the widths and it wouldn't allow the table to stretch... however you could then have overlapping text when it doesn't fit into a column, so there is a give and take.
I'd make sure to set a width for the first and last columns to be very tight to the content since it doesn't vary. Then specify reasonable widths to the other columns. You might want to rename the "purity characteristics" column to just "purity" so you can tighten it, since it is usually just a percentage.