There are two ways to approach this requirement. A simple way is to set "variants" (see our help page). There are 2 type of variants, ones which affect prices and ones which don't. You'll need to use both as text fields are only allowed in "non price affecting variants". So you'll use that for asking "company name" from the buyer.
Now, since values of placement, font, font color, and font typeface can affect the price, you will need to use "price affecting variants" for those. However our system only support 3 such options and you have 4.
So unless you can do away with one option, we will need to take another approach. However, it requires some web development experience.
If you see "customization button code" under "customization" section of our help page, it describes 4 extra parameters that you can append to the purchase URL of our buttons.
Those 4 parameters are on0,os0,on1 and os1. Where os0 and os1 are used to passed the data to our cart and on0 and on1 tells us what the data is. In your case, you need to use JavaScript or any other scripting language you prefer to pass all the data you collect from your buyer and append something like this to the purchase URL:
&on0=CompanyName&os0=company-name-entered-by-buyer&on1=ChoosenOptions&os1=concatenated-values-of-all-the-other-options.
Please note all these values must be urlencoded.
Now, the only thing that remains is to adjust the product price. You can append the "amount" variable for that. Value that will need to be passed will depend on the options your buyer selects. Please see "customization button code" under "customization" section of our help
page to see the usage of that parameter as it will differ based on whether you are using our Buy Now buttons or Cart buttons.