Firstly, there is no difference between using Freemarker or any other templating engine compared to using MessageML directly.
On table widths, they are rendered full width by default. You can choose to resize a particular column by adding style="width:400px"
to one or more <td>
elements, but not all of them. Adding width styles to all <td>
elements in a row will ignore the styles.
If you need the entire table to not render full width, you can nest the table in another <div>
and add a width style to the parent <div>
like so:
<div style="width:400px">
<table>
<tr>
<td>Hello</td>
<td>Hello</td>
</tr>
</table>
</div>