diff --git a/xwiki-platform-core/xwiki-platform-oldcore/src/main/resources/xhtml2fo.xsl b/xwiki-platform-core/xwiki-platform-oldcore/src/main/resources/xhtml2fo.xsl
index 44a8088..6d21bda 100644
--- a/xwiki-platform-core/xwiki-platform-oldcore/src/main/resources/xhtml2fo.xsl
+++ b/xwiki-platform-core/xwiki-platform-oldcore/src/main/resources/xhtml2fo.xsl
@@ -1492,7 +1492,14 @@ WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING O
             </xsl:if>
         </xsl:if>
         <xsl:call-template name="process-common-attributes"/>
-        <xsl:apply-templates select="html:col | html:colgroup" mode="preprocess"/>
+        <xsl:choose>
+          <xsl:when test="html:col | html:colgroup">
+            <xsl:apply-templates select="html:col | html:colgroup" mode="preprocess"/>
+          </xsl:when>
+          <xsl:otherwise>
+            <xsl:apply-templates select="html:*/html:tr[contains(@class, 'fo-colgroup')]/html:*" mode="generate-column"/>
+          </xsl:otherwise>
+        </xsl:choose>
         <xsl:apply-templates select="html:thead" mode="preprocess"/>
         <xsl:apply-templates select="html:tfoot" mode="preprocess"/>
         <xsl:choose>
@@ -1663,6 +1670,24 @@ WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING O
         </fo:table-cell>
     </xsl:template>
 
+    <xsl:template match="html:th | html:td" mode="generate-column">
+        <fo:table-column xsl:use-attribute-sets="table-column">
+            <xsl:if test="@colspan">
+                <xsl:attribute name="number-columns-spanned">
+                    <xsl:value-of select="@colspan"/>
+                </xsl:attribute>
+            </xsl:if>
+            <xsl:call-template name="process-col-width">
+                 <xsl:with-param name="width" select="@width"/>
+            </xsl:call-template>
+            <xsl:if test="@style">
+                <xsl:call-template name="process-col-style">
+                    <xsl:with-param name="style" select="@style"/>
+                </xsl:call-template>
+            </xsl:if>
+        </fo:table-column>
+    </xsl:template>
+
     <xsl:template name="process-table-cell">
         <xsl:if test="@colspan">
             <xsl:attribute name="number-columns-spanned">
@@ -1732,6 +1757,42 @@ WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING O
         </xsl:if>
     </xsl:template>
 
+    <xsl:template name="process-col-style">
+        <xsl:param name="style"/>
+        <!-- e.g. style="width: 20%" converted to column-width="20%" -->
+        <xsl:variable name="name"
+                      select="normalize-space(substring-before($style, ':'))"/>
+        <xsl:if test="$name">
+            <xsl:variable name="value-and-rest"
+                          select="normalize-space(substring-after($style, ':'))"/>
+            <xsl:variable name="value">
+                <xsl:choose>
+                    <xsl:when test="contains($value-and-rest, ';')">
+                        <xsl:value-of select="normalize-space(substring-before(
+                    $value-and-rest, ';'))"/>
+                    </xsl:when>
+                    <xsl:otherwise>
+                        <xsl:value-of select="$value-and-rest"/>
+                    </xsl:otherwise>
+                </xsl:choose>
+            </xsl:variable>
+            <xsl:choose>
+                <xsl:when test="$name = 'width'">
+                    <xsl:attribute name="column-width">
+                        <xsl:value-of select="$value"/>
+                    </xsl:attribute>
+                </xsl:when>
+            </xsl:choose>
+        </xsl:if>
+        <xsl:variable name="rest"
+                      select="normalize-space(substring-after($style, ';'))"/>
+        <xsl:if test="$rest">
+            <xsl:call-template name="process-col-style">
+                <xsl:with-param name="style" select="$rest"/>
+            </xsl:call-template>
+        </xsl:if>
+    </xsl:template>
+
     <xsl:template name="process-cell-align">
         <xsl:param name="align"/>
         <xsl:if test="$align">
