<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -107,11 +107,9 @@ module Prawn
         
         @row_colors = [&quot;ffffff&quot;,&quot;cccccc&quot;] if @row_colors == :pdf_writer
 
-        @original_row_colors = @row_colors.dup if @row_colors
-        calculate_column_widths
-        (options[:widths] || {}).each do |index,width| 
-          @col_widths[index] = width
-        end
+        @original_row_colors = @row_colors.dup if @row_colors  
+        
+        calculate_column_widths(options[:widths])
       end
       
       # Width of the table in PDF points
@@ -142,8 +140,8 @@ module Prawn
 
       private
 
-      def calculate_column_widths
-        @col_widths = [0] * @data[0].length
+      def calculate_column_widths(manual_widths=nil)
+        @col_widths = [0] * @data[0].length    
         renderable_data.each do |row|
           row.each_with_index do |cell,i|
             length = cell.lines.map { |e| 
@@ -151,7 +149,10 @@ module Prawn
                 2*@horizontal_padding
             @col_widths[i] = length if length &gt; @col_widths[i]
           end
-        end
+        end  
+        
+        # TODO: Could optimize here
+        manual_widths.each { |k,v| @col_widths[k] = v } if manual_widths           
       end
 
       def renderable_data</diff>
      <filename>lib/prawn/document/table.rb</filename>
    </modified>
    <modified>
      <diff>@@ -93,11 +93,11 @@ module Prawn
           scale = font_size / 1000.0
           
           if options[:kerning]
-            kern(string).inject(0) do |s,r|
+            kern(string).inject(0) do |s,r|   
               if r.is_a? String
                 s + string_width(r, font_size, :kerning =&gt; false)
-              else
-                s + (r * scale)
+              else 
+                s - (r * scale)
               end
             end
           else</diff>
      <filename>lib/prawn/font/metrics.rb</filename>
    </modified>
    <modified>
      <diff>@@ -17,10 +17,10 @@ describe &quot;adobe font metrics&quot; do
   end
   
   it &quot;should kern a string&quot; do
-    @times.kern(&quot;To&quot;).should == [&quot;T&quot;, -80, &quot;o&quot;]
-    @times.kern(&quot;T&#233;l&#233;&quot;).should == [&quot;T&quot;, -70, &quot;&#233;l&#233;&quot;]
-    @times.kern(&quot;Technology&quot;).should == [&quot;T&quot;, -70, &quot;echnology&quot;]
-    @times.kern(&quot;Technology...&quot;).should == [&quot;T&quot;, -70, &quot;echnology&quot;, -65, &quot;...&quot;]
+    @times.kern(&quot;To&quot;).should == [&quot;T&quot;, 80, &quot;o&quot;]
+    @times.kern(&quot;T&#233;l&#233;&quot;).should == [&quot;T&quot;, 70, &quot;&#233;l&#233;&quot;]
+    @times.kern(&quot;Technology&quot;).should == [&quot;T&quot;, 70, &quot;echnology&quot;]
+    @times.kern(&quot;Technology...&quot;).should == [&quot;T&quot;, 70, &quot;echnology&quot;, 65, &quot;...&quot;]
   end
   
 end
@@ -41,15 +41,18 @@ describe &quot;ttf font metrics&quot; do
   end
   
   it &quot;should kern a string&quot; do
-    @activa.kern(&quot;To&quot;).should == [&quot;T&quot;, -186, &quot;o&quot;]
+    @activa.kern(&quot;To&quot;).should == [&quot;\0007&quot;, 186.0, &quot;\000R&quot;]
     
     # Does activa use kerning classes here? Ruby/TTF doesn't support
     # format 2 kerning tables, so don't bother for now.
     
     # @activa.kern(&quot;T&#233;l&#233;&quot;).should == [&quot;T&quot;, -186, &quot;&#233;l&#233;&quot;]
     
-    @activa.kern(&quot;Technology&quot;).should == [&quot;T&quot;, -186, &quot;echnology&quot;]
-    @activa.kern(&quot;Technology...&quot;).should == [&quot;T&quot;, -186, &quot;echnology&quot;, -88, &quot;...&quot;]
+    @activa.kern(&quot;Technology&quot;).should == [&quot;\0007&quot;, 186.0, 
+      &quot;\000H\000F\000K\000Q\000R\000O\000R\000J\000\\&quot;]
+    @activa.kern(&quot;Technology...&quot;).should == [&quot;\0007&quot;, 186.0,
+       &quot;\000H\000F\000K\000Q\000R\000O\000R\000J\000\\&quot;, 88.0, 
+       &quot;\000\021\000\021\000\021&quot;] 
   end
   
 end
\ No newline at end of file</diff>
      <filename>spec/metrics_spec.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>aeb22386528574317e9babd84904fc3ef0c458fd</id>
    </parent>
  </parents>
  <author>
    <name>Gregory Brown</name>
    <email>gregory.t.brown@gmail.com</email>
  </author>
  <url>http://github.com/sandal/prawn/commit/5b085020154b07cd031951b877b14858900ca90e</url>
  <id>5b085020154b07cd031951b877b14858900ca90e</id>
  <committed-date>2008-07-21T10:52:38-07:00</committed-date>
  <authored-date>2008-07-21T10:52:38-07:00</authored-date>
  <message>Kern also prepares the string for the TJ operator now.  Perhaps it needs a better name?</message>
  <tree>506582d52c2bc468dbc1b40503207512176b68fb</tree>
  <committer>
    <name>Gregory Brown</name>
    <email>gregory.t.brown@gmail.com</email>
  </committer>
</commit>
