Index: formatters/classes/typografica.php
===================================================================
--- formatters/classes/typografica.php	(revision 485)
+++ formatters/classes/typografica.php	(working copy)
@@ -61,6 +61,7 @@
   var $glueright = array( "ðóá\.", "êîï\.", "ó\.å\.", "ìèí\." );
 
   var $settings = array ( "inches" => 1, // ïðåîáðàçîâûâàòü äþéìû â &quot;
+  						  "apostroph" => 1, // ïðåîáðàçîâûâàòü àïîñòðîôîâ
                           "laquo" => 1,  // êàâû÷êè-¸ëî÷êè
                           "farlaquo" => 0,  // êàâû÷êè-¸ëî÷êè äëÿ ôàðà (çíàêè "áîëüøå-ìåíüøå")
                           "quotes" => 1, // êàâû÷êè-àíãëèéñêèå ëàïêè
@@ -229,6 +230,9 @@
     // 0. äþéìû ñ öèôðàìè
     if ($this->settings["inches"])
       $data = preg_replace( "/(?<=\s)(([0-9]{1,2}([\.,][0-9]{1,2})?))\"/i", "\\1&quot;", $data );
+    // 0a. àïîñòðîô
+    if ($this->settings["apostroph"])
+      $data = preg_replace( "/([\s\"][~0-9¸¨´¥ºª³²¿¯’'A-Za-zÀ-ßà-ÿ\-:\/\.]+)'([~ºª³²¿¯àÀåÅèÈîÎóÓþÞÿß][~0-9¸¨´¥ºª³²¿¯’'A-Za-zÀ-ßà-ÿ\-:\/\.]+[\s\.,:;\)<=\"])/i", "\\1’\\2", $data );
     // 1. ëàïêè
     if ($this->settings["quotes"])
     {
@@ -246,17 +250,17 @@
     if ($this->settings["laquo"])
     {
       $data = preg_replace( "/\"\"/i", "&quot;&quot;", $data );
-      $data = preg_replace( "/(^|\s|\201|\200|>|\()\"((\201|\200)*[~0-9¸¨A-Za-zÀ-ßà-ÿ\-:\/\.])/i", "\\1&laquo;\\2", $data );
+      $data = preg_replace( "/(^|\s|\201|\200|>|\()\"((\201|\200)*[~0-9¸¨´¥ºª³²¿¯’'A-Za-zÀ-ßà-ÿ\-:\/\.])/i", "\\1&laquo;\\2", $data );
       // nb: wacko only regexp follows:
-      $data = preg_replace( "/(^|\s|\201|\200|>|\()\"((\201|\200|\/&nbsp;|\/|\!)*[~0-9¸¨A-Za-zÀ-ßà-ÿ\-:\/\.])/i", "\\1&laquo;\\2", $data );
+      $data = preg_replace( "/(^|\s|\201|\200|>|\()\"((\201|\200|\/&nbsp;|\/|\!)*[~0-9¸¨´¥ºª³²’'A-Za-zÀ-ßà-ÿ\-:\/\.])/i", "\\1&laquo;\\2", $data );
       $_data = "\"\"";
       while ($_data != $data)
       {  
         $_data = $data;
-        $data = preg_replace( "/(\&laquo\;([^\"]*)[¸¨A-Za-zÀ-ßà-ÿ0-9\.\-:\/](\201|\200)*)\"/si", "\\1&raquo;", $data );
+        $data = preg_replace( "/(\&laquo\;([^\"]*)[¸¨´¥ºª³²¿¯’'A-Za-zÀ-ßà-ÿ0-9\.\-:\/](\201|\200)*)\"/si", "\\1&raquo;", $data );
         // nb: wacko only regexps follows:
-        $data = preg_replace( "/(\&laquo\;([^\"]*)[¸¨A-Za-zÀ-ßà-ÿ0-9\.\-:\/](\201|\200)*\?(\201|\200)*)\"/si", "\\1&raquo;", $data );
-        $data = preg_replace( "/(\&laquo\;([^\"]*)[¸¨A-Za-zÀ-ßà-ÿ0-9\.\-:\/](\201|\200|\/|\!)*)\"/si", "\\1&raquo;", $data );
+        $data = preg_replace( "/(\&laquo\;([^\"]*)[¸¨´¥ºª³²¿¯’'A-Za-zÀ-ßà-ÿ0-9\.\-:\/](\201|\200)*\?(\201|\200)*)\"/si", "\\1&raquo;", $data );
+        $data = preg_replace( "/(\&laquo\;([^\"]*)[¸¨´¥ºª³²¿¯’'A-Za-zÀ-ßà-ÿ0-9\.\-:\/](\201|\200|\/|\!)*)\"/si", "\\1&raquo;", $data );
       }
     }
       // 2a. ¸ëî÷êè äëÿ FAR manager

