diff --git a/trac/htdocs/css/report.css b/trac/htdocs/css/report.css
--- a/trac/htdocs/css/report.css
+++ b/trac/htdocs/css/report.css
@@ -50,8 +50,6 @@
 /* Styles for the report list and the report results table
    (extends the styles for "table.listing") */
 .reports td.title { width: 100% }
-.reports tbody td :link, .reports tbody td :visited,
-.tickets tbody td :link, .tickets tbody td :visited { display: block }
 .tickets { border-bottom: none }
 .tickets thead th { text-transform: capitalize; white-space: nowrap; }
 .tickets tbody td, .reports tbody td { padding: .1em .5em !important }
diff --git a/trac/htdocs/css/ticket.css b/trac/htdocs/css/ticket.css
--- a/trac/htdocs/css/ticket.css
+++ b/trac/htdocs/css/ticket.css
@@ -56,6 +56,8 @@
  width: 20%;
 }
 #ticket table.properties td { width: 30% }
+#ticket table.properties td p:first-child { margin-top: 0 }
+#ticket table.properties td p:last-child { margin-bottom: 0 }
 #ticket table.properties .description { border-top: 1px solid #dd9 }
 
 #ticket .description h3 {
diff --git a/trac/ticket/api.py b/trac/ticket/api.py
--- a/trac/ticket/api.py
+++ b/trac/ticket/api.py
@@ -271,7 +271,10 @@
                 if '' in field['options']:
                     field['optional'] = True
                     field['options'].remove('')
+            elif field['type'] == 'text':
+                field['format'] = config.get(name + '.format', 'plain')
             elif field['type'] == 'textarea':
+                field['format'] = config.get(name + '.format', 'plain')
                 field['width'] = config.getint(name + '.cols')
                 field['height'] = config.getint(name + '.rows')
             fields.append(field)
diff --git a/trac/ticket/query.py b/trac/ticket/query.py
--- a/trac/ticket/query.py
+++ b/trac/ticket/query.py
@@ -575,6 +575,7 @@
 
         cols = self.get_columns()
         labels = dict([(f['name'], f['label']) for f in self.fields])
+        wikify = dict((f['name'], f['type'] == 'text' and f.get('format') == 'wiki') for f in self.fields)
 
         # TODO: remove after adding time/changetime to the api.py
         labels['changetime'] = _('Modified')
@@ -582,6 +583,7 @@
 
         headers = [{
             'name': col, 'label': labels.get(col, _('Ticket')),
+            'wikify': wikify.get(col, False),
             'href': self.get_href(context.href, order=col,
                                   desc=(col == self.order and not self.desc))
         } for col in cols]
diff --git a/trac/ticket/templates/query_results.html b/trac/ticket/templates/query_results.html
--- a/trac/ticket/templates/query_results.html
+++ b/trac/ticket/templates/query_results.html
@@ -62,6 +62,7 @@
                       <py:when test="name == 'reporter'">${authorinfo(value)}</py:when>
                       <py:when test="name == 'cc'">${format_emails(ticket_context, value)}</py:when>
                       <py:when test="name == 'owner' and value">${authorinfo(value)}</py:when>
+                      <py:when test="header.wikify">${wiki_to_oneliner(ticket_context, value)}</py:when>
                       <py:otherwise>$value</py:otherwise>
                     </td>
                   </py:with>
diff --git a/trac/ticket/templates/ticket.html b/trac/ticket/templates/ticket.html
--- a/trac/ticket/templates/ticket.html
+++ b/trac/ticket/templates/ticket.html
@@ -155,8 +155,18 @@
                     colspan="${fullrow and 3 or None}">
                   <py:if test="field">
                     <py:choose test="">
-                      <py:when test="'rendered' in field">${field.rendered}</py:when>
-                      <py:otherwise>${ticket[field.name]}</py:otherwise>
+                      <py:when test="field.type == 'textarea' and field.format == 'wiki'">
+                        ${wiki_to_html(context, ticket[field.name], escape_newlines=preserve_newlines)}
+                      </py:when>
+                      <py:when test="field.type == 'text' and field.format == 'wiki'">
+                        ${wiki_to_oneliner(context, ticket[field.name])}
+                      </py:when>
+                      <py:otherwise>
+                        <py:choose test="">
+                          <py:when test="'rendered' in field">${field.rendered}</py:when>
+                          <py:otherwise>${ticket[field.name]}</py:otherwise>
+                        </py:choose>
+                      </py:otherwise>
                     </py:choose>
                   </py:if>
                 </td>
@@ -324,6 +334,7 @@
                     </select>
                     <textarea py:when="'textarea'" id="field-${field.name}" name="field_${field.name}"
                               cols="${field.width}" rows="${field.height}"
+                              class="${field.format == 'wiki' and 'wikitext' or None}"
                               py:content="value"></textarea>
                     <span py:when="'checkbox'">
                       <input type="checkbox" id="field-${field.name}" name="field_${field.name}"
diff --git a/trac/ticket/tests/api.py b/trac/ticket/tests/api.py
--- a/trac/ticket/tests/api.py
+++ b/trac/ticket/tests/api.py
@@ -24,9 +24,10 @@
         self.env.config.set('ticket-custom', 'test', 'text')
         self.env.config.set('ticket-custom', 'test.label', 'Test')
         self.env.config.set('ticket-custom', 'test.value', 'Foo bar')
+        self.env.config.set('ticket-custom', 'test.format', 'wiki')
         fields = TicketSystem(self.env).get_custom_fields()
         self.assertEqual({'name': 'test', 'type': 'text', 'label': 'Test',
-                          'value': 'Foo bar', 'order': 0},
+                          'value': 'Foo bar', 'order': 0, 'format': 'wiki'},
                          fields[0])
 
     def test_custom_field_select(self):
@@ -57,10 +58,11 @@
         self.env.config.set('ticket-custom', 'test.value', 'Foo bar')
         self.env.config.set('ticket-custom', 'test.cols', '60')
         self.env.config.set('ticket-custom', 'test.rows', '4')
+        self.env.config.set('ticket-custom', 'test.format', 'wiki')
         fields = TicketSystem(self.env).get_custom_fields()
         self.assertEqual({'name': 'test', 'type': 'textarea', 'label': 'Test',
                           'value': 'Foo bar', 'width': 60, 'height': 4,
-                          'order': 0},
+                          'order': 0, 'format': 'wiki'},
                          fields[0])
 
     def test_custom_field_order(self):

