<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4307261008427639518</id><updated>2012-02-16T01:09:48.516-08:00</updated><title type='text'>My GSoc2011: Hyphenation to Abiword</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://chenxiajian.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4307261008427639518/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://chenxiajian.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>ChenXiajian_My GSoc2011_Hyphenation Support to AbiWord</name><uri>http://www.blogger.com/profile/14915172551075912267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-WxeJ0YrBl7c/TbfhCl7lCbI/AAAAAAAAAAM/ooMSpFc2UZk/s220/%25E7%2585%25A7%25E7%2589%2587.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>22</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4307261008427639518.post-67987578869532581</id><published>2011-08-21T05:13:00.003-07:00</published><updated>2011-08-21T05:13:44.099-07:00</updated><title type='text'>6. How to Support more languages</title><content type='html'>       &lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;o:DocumentProperties&gt;   &lt;o:Template&gt;Normal.dotm&lt;/o:Template&gt;   &lt;o:Revision&gt;0&lt;/o:Revision&gt;   &lt;o:TotalTime&gt;0&lt;/o:TotalTime&gt;   &lt;o:Pages&gt;1&lt;/o:Pages&gt;   &lt;o:Words&gt;47&lt;/o:Words&gt;   &lt;o:Characters&gt;268&lt;/o:Characters&gt;   &lt;o:Company&gt;Yahoo&lt;/o:Company&gt;   &lt;o:Lines&gt;2&lt;/o:Lines&gt;   &lt;o:Paragraphs&gt;1&lt;/o:Paragraphs&gt;   &lt;o:CharactersWithSpaces&gt;329&lt;/o:CharactersWithSpaces&gt;   &lt;o:Version&gt;12.0&lt;/o:Version&gt;  &lt;/o:DocumentProperties&gt;  &lt;o:OfficeDocumentSettings&gt;   &lt;o:AllowPNG/&gt;  &lt;/o:OfficeDocumentSettings&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:WordDocument&gt;   &lt;w:Zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:TrackMoves&gt;false&lt;/w:TrackMoves&gt;   &lt;w:TrackFormatting/&gt;   &lt;w:PunctuationKerning/&gt;   &lt;w:DrawingGridHorizontalSpacing&gt;18 pt&lt;/w:DrawingGridHorizontalSpacing&gt;   &lt;w:DrawingGridVerticalSpacing&gt;18 pt&lt;/w:DrawingGridVerticalSpacing&gt;   &lt;w:DisplayHorizontalDrawingGridEvery&gt;0&lt;/w:DisplayHorizontalDrawingGridEvery&gt;   &lt;w:DisplayVerticalDrawingGridEvery&gt;0&lt;/w:DisplayVerticalDrawingGridEvery&gt;   &lt;w:ValidateAgainstSchemas/&gt;   &lt;w:SaveIfXMLInvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:IgnoreMixedContent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:AlwaysShowPlaceholderText&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:Compatibility&gt;    &lt;w:BreakWrappedTables/&gt;    &lt;w:DontGrowAutofit/&gt;    &lt;w:DontAutofitConstrainedTables/&gt;    &lt;w:DontVertAlignInTxbx/&gt;    &lt;w:UseFELayout/&gt;   &lt;/w:Compatibility&gt;  &lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:LatentStyles DefLockedState="false" LatentStyleCount="276"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;  &lt;!--[if gte mso 10]&gt; &lt;style&gt; /* Style Definitions */table.MsoNormalTable	{mso-style-name:"Table Normal";	mso-tstyle-rowband-size:0;	mso-tstyle-colband-size:0;	mso-style-noshow:yes;	mso-style-parent:"";	mso-padding-alt:0in 5.4pt 0in 5.4pt;	mso-para-margin:0in;	mso-para-margin-bottom:.0001pt;	mso-pagination:widow-orphan;	font-size:10.5pt;	mso-bidi-font-size:11.0pt;	font-family:"Times New Roman";	mso-ascii-font-family:Calibri;	mso-ascii-theme-font:minor-latin;	mso-hansi-font-family:Calibri;	mso-hansi-theme-font:minor-latin;	mso-font-kerning:1.0pt;	mso-fareast-language:ZH-CN;}&lt;/style&gt; &lt;![endif]--&gt;    &lt;!--StartFragment--&gt;  &lt;br /&gt;&lt;h2&gt;&lt;a href="" name="_Toc301650927"&gt;&lt;span class="apple-style-span"&gt;&lt;span style="background: white; line-height: 173%; mso-bidi-font-size: 12.0pt;"&gt;6. &lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&lt;span class="apple-style-span"&gt;&lt;span style="background: white; line-height: 173%; mso-bidi-font-size: 10.0pt;"&gt;How to &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span class="apple-style-span"&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; line-height: 173%; mso-bidi-font-family: Arial;"&gt;Support more languages&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background: white;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h2&gt;&lt;div class="MsoNormal"&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;As mentioned before, we use Enchant to support more languages. So we have five backend to support more language. Take ISpell and mySpell for example.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-ansi-language: EN-US; mso-bidi-font-family: Arial; mso-fareast-font-family: 宋体; mso-fareast-language: ZH-CN; mso-fareast-theme-font: minor-fareast;"&gt;In the folder “abiword\msvc2008\Debug\” there are the folder for hyphenation: Spell and mySpell. And there is two folder for their dictionary&lt;/span&gt;&lt;!--EndFragment--&gt;    &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4307261008427639518-67987578869532581?l=chenxiajian.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chenxiajian.blogspot.com/feeds/67987578869532581/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://chenxiajian.blogspot.com/2011/08/6-how-to-support-more-languages.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4307261008427639518/posts/default/67987578869532581'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4307261008427639518/posts/default/67987578869532581'/><link rel='alternate' type='text/html' href='http://chenxiajian.blogspot.com/2011/08/6-how-to-support-more-languages.html' title='6. How to Support more languages'/><author><name>ChenXiajian_My GSoc2011_Hyphenation Support to AbiWord</name><uri>http://www.blogger.com/profile/14915172551075912267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-WxeJ0YrBl7c/TbfhCl7lCbI/AAAAAAAAAAM/ooMSpFc2UZk/s220/%25E7%2585%25A7%25E7%2589%2587.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4307261008427639518.post-4383909038043244519</id><published>2011-08-21T05:13:00.001-07:00</published><updated>2011-08-21T05:13:23.878-07:00</updated><title type='text'>User interface to manage hyphenation</title><content type='html'>        &lt;!--[if !mso]&gt; &lt;style&gt;v\:* {behavior:url(#default#VML);}o\:* {behavior:url(#default#VML);}w\:* {behavior:url(#default#VML);}.shape {behavior:url(#default#VML);}&lt;/style&gt; &lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;o:DocumentProperties&gt;   &lt;o:Template&gt;Normal.dotm&lt;/o:Template&gt;   &lt;o:Revision&gt;0&lt;/o:Revision&gt;   &lt;o:TotalTime&gt;0&lt;/o:TotalTime&gt;   &lt;o:Pages&gt;1&lt;/o:Pages&gt;   &lt;o:Words&gt;53&lt;/o:Words&gt;   &lt;o:Characters&gt;304&lt;/o:Characters&gt;   &lt;o:Company&gt;Yahoo&lt;/o:Company&gt;   &lt;o:Lines&gt;2&lt;/o:Lines&gt;   &lt;o:Paragraphs&gt;1&lt;/o:Paragraphs&gt;   &lt;o:CharactersWithSpaces&gt;373&lt;/o:CharactersWithSpaces&gt;   &lt;o:Version&gt;12.0&lt;/o:Version&gt;  &lt;/o:DocumentProperties&gt;  &lt;o:OfficeDocumentSettings&gt;   &lt;o:AllowPNG/&gt;  &lt;/o:OfficeDocumentSettings&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:WordDocument&gt;   &lt;w:Zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:TrackMoves&gt;false&lt;/w:TrackMoves&gt;   &lt;w:TrackFormatting/&gt;   &lt;w:PunctuationKerning/&gt;   &lt;w:DrawingGridHorizontalSpacing&gt;18 pt&lt;/w:DrawingGridHorizontalSpacing&gt;   &lt;w:DrawingGridVerticalSpacing&gt;18 pt&lt;/w:DrawingGridVerticalSpacing&gt;   &lt;w:DisplayHorizontalDrawingGridEvery&gt;0&lt;/w:DisplayHorizontalDrawingGridEvery&gt;   &lt;w:DisplayVerticalDrawingGridEvery&gt;0&lt;/w:DisplayVerticalDrawingGridEvery&gt;   &lt;w:ValidateAgainstSchemas/&gt;   &lt;w:SaveIfXMLInvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:IgnoreMixedContent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:AlwaysShowPlaceholderText&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:Compatibility&gt;    &lt;w:BreakWrappedTables/&gt;    &lt;w:DontGrowAutofit/&gt;    &lt;w:DontAutofitConstrainedTables/&gt;    &lt;w:DontVertAlignInTxbx/&gt;    &lt;w:UseFELayout/&gt;   &lt;/w:Compatibility&gt;  &lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:LatentStyles DefLockedState="false" LatentStyleCount="276"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;  &lt;!--[if gte mso 10]&gt; &lt;style&gt; /* Style Definitions */table.MsoNormalTable	{mso-style-name:"Table Normal";	mso-tstyle-rowband-size:0;	mso-tstyle-colband-size:0;	mso-style-noshow:yes;	mso-style-parent:"";	mso-padding-alt:0in 5.4pt 0in 5.4pt;	mso-para-margin:0in;	mso-para-margin-bottom:.0001pt;	mso-pagination:widow-orphan;	font-size:10.5pt;	mso-bidi-font-size:11.0pt;	font-family:"Times New Roman";	mso-ascii-font-family:Calibri;	mso-ascii-theme-font:minor-latin;	mso-hansi-font-family:Calibri;	mso-hansi-theme-font:minor-latin;	mso-font-kerning:1.0pt;	mso-fareast-language:ZH-CN;}&lt;/style&gt; &lt;![endif]--&gt;    &lt;!--StartFragment--&gt;  &lt;br /&gt;&lt;h2&gt;&lt;span class="apple-style-span"&gt;&lt;span style="background: white; line-height: 173%; mso-bidi-font-size: 10.0pt;"&gt;User interface to manage hyphenation&lt;/span&gt;&lt;/span&gt;&lt;span style="background: white;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h2&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;Doing now, user can enable or disable hyphenation function in user interface (GUI). &lt;/span&gt;&lt;/span&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="font-family: Cambria; font-size: 16.0pt; mso-ascii-theme-font: major-latin; mso-bidi-font-family: &amp;quot;Times New Roman&amp;quot;; mso-bidi-theme-font: major-bidi; mso-fareast-font-family: 宋体; mso-fareast-theme-font: major-fareast; mso-hansi-theme-font: major-latin;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraph" style="margin-left: 21.0pt; mso-char-indent-count: 0; mso-list: l0 level1 lfo1; text-indent: -21.0pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span class="apple-style-span"&gt;&lt;span style="font-family: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings;"&gt;&lt;span&gt;Ø&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span class="apple-style-span"&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;I have finished GUI in Windows, Linux, and Cocoa.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraph" style="margin-left: 21.0pt; mso-char-indent-count: 0; mso-list: l0 level1 lfo1; text-indent: -21.0pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span class="apple-style-span"&gt;&lt;span style="font-family: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings;"&gt;&lt;span&gt;Ø&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span class="apple-style-span"&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;Most languages have been translated for the globalization.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;Take Windows GUI for example, user can check the checkbox for enable or disable hyphenation function.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;Linux and Cocoa need more tests.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="center" class="MsoNormal" style="text-align: center;"&gt;&lt;span&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"&gt;  &lt;v:stroke joinstyle="miter"/&gt;  &lt;v:formulas&gt;   &lt;v:f eqn="if lineDrawn pixelLineWidth 0"/&gt;   &lt;v:f eqn="sum @0 1 0"/&gt;   &lt;v:f eqn="sum 0 0 @1"/&gt;   &lt;v:f eqn="prod @2 1 2"/&gt;   &lt;v:f eqn="prod @3 21600 pixelWidth"/&gt;   &lt;v:f eqn="prod @3 21600 pixelHeight"/&gt;   &lt;v:f eqn="sum @0 0 1"/&gt;   &lt;v:f eqn="prod @6 1 2"/&gt;   &lt;v:f eqn="prod @7 21600 pixelWidth"/&gt;   &lt;v:f eqn="sum @8 21600 0"/&gt;   &lt;v:f eqn="prod @7 21600 pixelHeight"/&gt;   &lt;v:f eqn="sum @10 21600 0"/&gt;  &lt;/v:formulas&gt;  &lt;v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/&gt;  &lt;o:lock v:ext="edit" aspectratio="t"/&gt; &lt;/v:shapetype&gt;&lt;v:shape id="图片_x0020_1" o:spid="_x0000_i1025" type="#_x0000_t75" alt="C:\Documents and Settings\Administrator\桌面\Simple Checkbox for Hyphenation GUI.bmp" style='width:302pt;height:316pt;visibility:visible;mso-wrap-style:square'&gt;  &lt;v:imagedata src="file://localhost/Users/xjch/Library/Caches/TemporaryItems/msoclip/0/clip_image001.png"  o:title="Simple Checkbox for Hyphenation GUI.bmp"/&gt;  &lt;v:textbox style='mso-rotate-with-shape:t'/&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;img alt="C:\Documents and Settings\Administrator\桌面\Simple Checkbox for Hyphenation GUI.bmp" height="318" src="file://localhost/Users/xjch/Library/Caches/TemporaryItems/msoclip/0/clip_image002.png" v:shapes="图片_x0020_1" width="304" /&gt;&lt;!--[endif]--&gt;&lt;/span&gt;&lt;/div&gt;&lt;!--EndFragment--&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4307261008427639518-4383909038043244519?l=chenxiajian.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chenxiajian.blogspot.com/feeds/4383909038043244519/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://chenxiajian.blogspot.com/2011/08/user-interface-to-manage-hyphenation.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4307261008427639518/posts/default/4383909038043244519'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4307261008427639518/posts/default/4383909038043244519'/><link rel='alternate' type='text/html' href='http://chenxiajian.blogspot.com/2011/08/user-interface-to-manage-hyphenation.html' title='User interface to manage hyphenation'/><author><name>ChenXiajian_My GSoc2011_Hyphenation Support to AbiWord</name><uri>http://www.blogger.com/profile/14915172551075912267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-WxeJ0YrBl7c/TbfhCl7lCbI/AAAAAAAAAAM/ooMSpFc2UZk/s220/%25E7%2585%25A7%25E7%2589%2587.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4307261008427639518.post-7429245824978696307</id><published>2011-08-21T05:12:00.005-07:00</published><updated>2011-08-21T05:12:53.196-07:00</updated><title type='text'>4 Code Re-factor and debug</title><content type='html'>       &lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;o:DocumentProperties&gt;   &lt;o:Template&gt;Normal.dotm&lt;/o:Template&gt;   &lt;o:Revision&gt;0&lt;/o:Revision&gt;   &lt;o:TotalTime&gt;0&lt;/o:TotalTime&gt;   &lt;o:Pages&gt;1&lt;/o:Pages&gt;   &lt;o:Words&gt;23&lt;/o:Words&gt;   &lt;o:Characters&gt;136&lt;/o:Characters&gt;   &lt;o:Company&gt;Yahoo&lt;/o:Company&gt;   &lt;o:Lines&gt;1&lt;/o:Lines&gt;   &lt;o:Paragraphs&gt;1&lt;/o:Paragraphs&gt;   &lt;o:CharactersWithSpaces&gt;167&lt;/o:CharactersWithSpaces&gt;   &lt;o:Version&gt;12.0&lt;/o:Version&gt;  &lt;/o:DocumentProperties&gt;  &lt;o:OfficeDocumentSettings&gt;   &lt;o:AllowPNG/&gt;  &lt;/o:OfficeDocumentSettings&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:WordDocument&gt;   &lt;w:Zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:TrackMoves&gt;false&lt;/w:TrackMoves&gt;   &lt;w:TrackFormatting/&gt;   &lt;w:PunctuationKerning/&gt;   &lt;w:DrawingGridHorizontalSpacing&gt;18 pt&lt;/w:DrawingGridHorizontalSpacing&gt;   &lt;w:DrawingGridVerticalSpacing&gt;18 pt&lt;/w:DrawingGridVerticalSpacing&gt;   &lt;w:DisplayHorizontalDrawingGridEvery&gt;0&lt;/w:DisplayHorizontalDrawingGridEvery&gt;   &lt;w:DisplayVerticalDrawingGridEvery&gt;0&lt;/w:DisplayVerticalDrawingGridEvery&gt;   &lt;w:ValidateAgainstSchemas/&gt;   &lt;w:SaveIfXMLInvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:IgnoreMixedContent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:AlwaysShowPlaceholderText&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:Compatibility&gt;    &lt;w:BreakWrappedTables/&gt;    &lt;w:DontGrowAutofit/&gt;    &lt;w:DontAutofitConstrainedTables/&gt;    &lt;w:DontVertAlignInTxbx/&gt;    &lt;w:UseFELayout/&gt;   &lt;/w:Compatibility&gt;  &lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:LatentStyles DefLockedState="false" LatentStyleCount="276"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;  &lt;!--[if gte mso 10]&gt; &lt;style&gt; /* Style Definitions */table.MsoNormalTable	{mso-style-name:"Table Normal";	mso-tstyle-rowband-size:0;	mso-tstyle-colband-size:0;	mso-style-noshow:yes;	mso-style-parent:"";	mso-padding-alt:0in 5.4pt 0in 5.4pt;	mso-para-margin:0in;	mso-para-margin-bottom:.0001pt;	mso-pagination:widow-orphan;	font-size:10.5pt;	mso-bidi-font-size:11.0pt;	font-family:"Times New Roman";	mso-ascii-font-family:Calibri;	mso-ascii-theme-font:minor-latin;	mso-hansi-font-family:Calibri;	mso-hansi-theme-font:minor-latin;	mso-font-kerning:1.0pt;	mso-fareast-language:ZH-CN;}&lt;/style&gt; &lt;![endif]--&gt;    &lt;!--StartFragment--&gt;  &lt;br /&gt;&lt;h2&gt;&lt;a href="" name="_Toc301650925"&gt;&lt;span class="apple-style-span"&gt;&lt;span style="background: white; line-height: 173%; mso-bidi-font-size: 12.0pt;"&gt;4 Code Re-factor and debug&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="apple-style-span"&gt;&lt;span style="font-family: Calibri; font-size: 10.5pt; line-height: 173%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;I have finish the code re-factor both in Enchant and Abiword. Code Re-factor works:&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="font-family: Cambria; font-size: 16.0pt; mso-ascii-theme-font: major-latin; mso-bidi-font-family: &amp;quot;Times New Roman&amp;quot;; mso-bidi-theme-font: major-bidi; mso-fareast-font-family: 宋体; mso-fareast-theme-font: major-fareast; mso-hansi-theme-font: major-latin;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;1 deal with some ugly code&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;2 deal with the exception&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;!--EndFragment--&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4307261008427639518-7429245824978696307?l=chenxiajian.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chenxiajian.blogspot.com/feeds/7429245824978696307/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://chenxiajian.blogspot.com/2011/08/4-code-re-factor-and-debug.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4307261008427639518/posts/default/7429245824978696307'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4307261008427639518/posts/default/7429245824978696307'/><link rel='alternate' type='text/html' href='http://chenxiajian.blogspot.com/2011/08/4-code-re-factor-and-debug.html' title='4 Code Re-factor and debug'/><author><name>ChenXiajian_My GSoc2011_Hyphenation Support to AbiWord</name><uri>http://www.blogger.com/profile/14915172551075912267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-WxeJ0YrBl7c/TbfhCl7lCbI/AAAAAAAAAAM/ooMSpFc2UZk/s220/%25E7%2585%25A7%25E7%2589%2587.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4307261008427639518.post-5588192521437641940</id><published>2011-08-21T05:12:00.003-07:00</published><updated>2011-08-21T05:12:37.504-07:00</updated><title type='text'>3 Simple Implementation of Chinese Spell-Check in Enchant</title><content type='html'>        &lt;!--[if !mso]&gt; &lt;style&gt;v\:* {behavior:url(#default#VML);}o\:* {behavior:url(#default#VML);}w\:* {behavior:url(#default#VML);}.shape {behavior:url(#default#VML);}&lt;/style&gt; &lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;o:DocumentProperties&gt;   &lt;o:Template&gt;Normal.dotm&lt;/o:Template&gt;   &lt;o:Revision&gt;0&lt;/o:Revision&gt;   &lt;o:TotalTime&gt;0&lt;/o:TotalTime&gt;   &lt;o:Pages&gt;1&lt;/o:Pages&gt;   &lt;o:Words&gt;43&lt;/o:Words&gt;   &lt;o:Characters&gt;248&lt;/o:Characters&gt;   &lt;o:Company&gt;Yahoo&lt;/o:Company&gt;   &lt;o:Lines&gt;2&lt;/o:Lines&gt;   &lt;o:Paragraphs&gt;1&lt;/o:Paragraphs&gt;   &lt;o:CharactersWithSpaces&gt;304&lt;/o:CharactersWithSpaces&gt;   &lt;o:Version&gt;12.0&lt;/o:Version&gt;  &lt;/o:DocumentProperties&gt;  &lt;o:OfficeDocumentSettings&gt;   &lt;o:AllowPNG/&gt;  &lt;/o:OfficeDocumentSettings&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:WordDocument&gt;   &lt;w:Zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:TrackMoves&gt;false&lt;/w:TrackMoves&gt;   &lt;w:TrackFormatting/&gt;   &lt;w:PunctuationKerning/&gt;   &lt;w:DrawingGridHorizontalSpacing&gt;18 pt&lt;/w:DrawingGridHorizontalSpacing&gt;   &lt;w:DrawingGridVerticalSpacing&gt;18 pt&lt;/w:DrawingGridVerticalSpacing&gt;   &lt;w:DisplayHorizontalDrawingGridEvery&gt;0&lt;/w:DisplayHorizontalDrawingGridEvery&gt;   &lt;w:DisplayVerticalDrawingGridEvery&gt;0&lt;/w:DisplayVerticalDrawingGridEvery&gt;   &lt;w:ValidateAgainstSchemas/&gt;   &lt;w:SaveIfXMLInvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:IgnoreMixedContent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:AlwaysShowPlaceholderText&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:Compatibility&gt;    &lt;w:BreakWrappedTables/&gt;    &lt;w:DontGrowAutofit/&gt;    &lt;w:DontAutofitConstrainedTables/&gt;    &lt;w:DontVertAlignInTxbx/&gt;    &lt;w:UseFELayout/&gt;   &lt;/w:Compatibility&gt;  &lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:LatentStyles DefLockedState="false" LatentStyleCount="276"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;  &lt;!--[if gte mso 10]&gt; &lt;style&gt; /* Style Definitions */table.MsoNormalTable	{mso-style-name:"Table Normal";	mso-tstyle-rowband-size:0;	mso-tstyle-colband-size:0;	mso-style-noshow:yes;	mso-style-parent:"";	mso-padding-alt:0in 5.4pt 0in 5.4pt;	mso-para-margin:0in;	mso-para-margin-bottom:.0001pt;	mso-pagination:widow-orphan;	font-size:10.5pt;	mso-bidi-font-size:11.0pt;	font-family:"Times New Roman";	mso-ascii-font-family:Calibri;	mso-ascii-theme-font:minor-latin;	mso-hansi-font-family:Calibri;	mso-hansi-theme-font:minor-latin;	mso-font-kerning:1.0pt;	mso-fareast-language:ZH-CN;}&lt;/style&gt; &lt;![endif]--&gt;    &lt;!--StartFragment--&gt;  &lt;br /&gt;&lt;h2&gt;&lt;a href="" name="_Toc301650924"&gt;&lt;span class="apple-style-span"&gt;&lt;span style="background: white; line-height: 173%; mso-bidi-font-size: 12.0pt;"&gt;3 Simple Implementation of Chinese Spell-Check in Enchant&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="apple-style-span"&gt;&lt;span style="font-family: Calibri; font-size: 10.5pt; line-height: 173%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;After GSoc2011, I would like to add Chinese Spell-Check in Enchant. Chinese Spell-Check is also a very important issue in Word-Processor. I found some lib to support; I just build a simple framework since time is limit.&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="font-family: Cambria; font-size: 16.0pt; mso-ascii-theme-font: major-latin; mso-bidi-font-family: &amp;quot;Times New Roman&amp;quot;; mso-bidi-theme-font: major-bidi; mso-fareast-font-family: 宋体; mso-fareast-theme-font: major-fareast; mso-hansi-theme-font: major-latin;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;The main function:&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial; mso-fareast-language: EN-US; mso-no-proof: yes;"&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"&gt;  &lt;v:stroke joinstyle="miter"/&gt;  &lt;v:formulas&gt;   &lt;v:f eqn="if lineDrawn pixelLineWidth 0"/&gt;   &lt;v:f eqn="sum @0 1 0"/&gt;   &lt;v:f eqn="sum 0 0 @1"/&gt;   &lt;v:f eqn="prod @2 1 2"/&gt;   &lt;v:f eqn="prod @3 21600 pixelWidth"/&gt;   &lt;v:f eqn="prod @3 21600 pixelHeight"/&gt;   &lt;v:f eqn="sum @0 0 1"/&gt;   &lt;v:f eqn="prod @6 1 2"/&gt;   &lt;v:f eqn="prod @7 21600 pixelWidth"/&gt;   &lt;v:f eqn="sum @8 21600 0"/&gt;   &lt;v:f eqn="prod @7 21600 pixelHeight"/&gt;   &lt;v:f eqn="sum @10 21600 0"/&gt;  &lt;/v:formulas&gt;  &lt;v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/&gt;  &lt;o:lock v:ext="edit" aspectratio="t"/&gt; &lt;/v:shapetype&gt;&lt;v:shape id="图片_x0020_1" o:spid="_x0000_i1025" type="#_x0000_t75" style='width:415pt;height:139pt;visibility:visible;mso-wrap-style:square'&gt;  &lt;v:imagedata src="file://localhost/Users/xjch/Library/Caches/TemporaryItems/msoclip/0/clip_image001.png"  o:title=""/&gt;  &lt;v:textbox style='mso-rotate-with-shape:t'/&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;img height="141" src="file://localhost/Users/xjch/Library/Caches/TemporaryItems/msoclip/0/clip_image002.png" v:shapes="图片_x0020_1" width="417" /&gt;&lt;!--[endif]--&gt;&lt;/span&gt;&lt;span class="apple-style-span"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;!--EndFragment--&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4307261008427639518-5588192521437641940?l=chenxiajian.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chenxiajian.blogspot.com/feeds/5588192521437641940/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://chenxiajian.blogspot.com/2011/08/3-simple-implementation-of-chinese.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4307261008427639518/posts/default/5588192521437641940'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4307261008427639518/posts/default/5588192521437641940'/><link rel='alternate' type='text/html' href='http://chenxiajian.blogspot.com/2011/08/3-simple-implementation-of-chinese.html' title='3 Simple Implementation of Chinese Spell-Check in Enchant'/><author><name>ChenXiajian_My GSoc2011_Hyphenation Support to AbiWord</name><uri>http://www.blogger.com/profile/14915172551075912267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-WxeJ0YrBl7c/TbfhCl7lCbI/AAAAAAAAAAM/ooMSpFc2UZk/s220/%25E7%2585%25A7%25E7%2589%2587.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4307261008427639518.post-5681686555543393037</id><published>2011-08-21T05:12:00.001-07:00</published><updated>2011-08-21T05:12:13.641-07:00</updated><title type='text'>2 Call the Hyphenation function in Abiword.</title><content type='html'>       &lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;o:DocumentProperties&gt;   &lt;o:Template&gt;Normal.dotm&lt;/o:Template&gt;   &lt;o:Revision&gt;0&lt;/o:Revision&gt;   &lt;o:TotalTime&gt;0&lt;/o:TotalTime&gt;   &lt;o:Pages&gt;1&lt;/o:Pages&gt;   &lt;o:Words&gt;389&lt;/o:Words&gt;   &lt;o:Characters&gt;2221&lt;/o:Characters&gt;   &lt;o:Company&gt;Yahoo&lt;/o:Company&gt;   &lt;o:Lines&gt;18&lt;/o:Lines&gt;   &lt;o:Paragraphs&gt;4&lt;/o:Paragraphs&gt;   &lt;o:CharactersWithSpaces&gt;2727&lt;/o:CharactersWithSpaces&gt;   &lt;o:Version&gt;12.0&lt;/o:Version&gt;  &lt;/o:DocumentProperties&gt;  &lt;o:OfficeDocumentSettings&gt;   &lt;o:AllowPNG/&gt;  &lt;/o:OfficeDocumentSettings&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:WordDocument&gt;   &lt;w:Zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:TrackMoves&gt;false&lt;/w:TrackMoves&gt;   &lt;w:TrackFormatting/&gt;   &lt;w:PunctuationKerning/&gt;   &lt;w:DrawingGridHorizontalSpacing&gt;18 pt&lt;/w:DrawingGridHorizontalSpacing&gt;   &lt;w:DrawingGridVerticalSpacing&gt;18 pt&lt;/w:DrawingGridVerticalSpacing&gt;   &lt;w:DisplayHorizontalDrawingGridEvery&gt;0&lt;/w:DisplayHorizontalDrawingGridEvery&gt;   &lt;w:DisplayVerticalDrawingGridEvery&gt;0&lt;/w:DisplayVerticalDrawingGridEvery&gt;   &lt;w:ValidateAgainstSchemas/&gt;   &lt;w:SaveIfXMLInvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:IgnoreMixedContent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:AlwaysShowPlaceholderText&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:Compatibility&gt;    &lt;w:BreakWrappedTables/&gt;    &lt;w:DontGrowAutofit/&gt;    &lt;w:DontAutofitConstrainedTables/&gt;    &lt;w:DontVertAlignInTxbx/&gt;    &lt;w:UseFELayout/&gt;   &lt;/w:Compatibility&gt;  &lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:LatentStyles DefLockedState="false" LatentStyleCount="276"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;  &lt;!--[if gte mso 10]&gt; &lt;style&gt; /* Style Definitions */table.MsoNormalTable	{mso-style-name:"Table Normal";	mso-tstyle-rowband-size:0;	mso-tstyle-colband-size:0;	mso-style-noshow:yes;	mso-style-parent:"";	mso-padding-alt:0in 5.4pt 0in 5.4pt;	mso-para-margin:0in;	mso-para-margin-bottom:.0001pt;	mso-pagination:widow-orphan;	font-size:10.5pt;	mso-bidi-font-size:11.0pt;	font-family:"Times New Roman";	mso-ascii-font-family:Calibri;	mso-ascii-theme-font:minor-latin;	mso-hansi-font-family:Calibri;	mso-hansi-theme-font:minor-latin;	mso-font-kerning:1.0pt;	mso-fareast-language:ZH-CN;}&lt;/style&gt; &lt;![endif]--&gt;    &lt;!--StartFragment--&gt;  &lt;br /&gt;&lt;h2&gt;&lt;a href="" name="_Toc301650923"&gt;&lt;span class="apple-style-span"&gt;&lt;span style="background: white; line-height: 173%; mso-bidi-font-size: 12.0pt;"&gt;2 Call the H&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&lt;span class="apple-style-span"&gt;&lt;span style="background: white; line-height: 173%; mso-bidi-font-size: 10.0pt;"&gt;yphenation&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span class="apple-style-span"&gt;&lt;span style="background: white; line-height: 173%; mso-bidi-font-size: 12.0pt;"&gt; function&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span class="apple-style-span"&gt;&lt;span style="background: white; line-height: 173%; mso-bidi-font-size: 10.0pt;"&gt; in Abiword.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-style-span"&gt;&lt;span style="background: white; line-height: 173%; mso-bidi-font-size: 10.0pt;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="apple-style-span"&gt;&lt;span style="font-family: Calibri; font-size: 10.5pt; line-height: 173%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;&lt;div class="MsoListParagraph" style="margin-left: 21.0pt; mso-char-indent-count: 0; mso-list: l0 level1 lfo1; text-indent: -21.0pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="color: black; font-family: Wingdings; font-size: 12.0pt; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings;"&gt;&lt;span&gt;Ø&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span class="apple-style-span"&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;Split run to split word and keep the format&lt;/span&gt;&lt;/span&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraph" style="margin-left: 21.0pt; mso-char-indent-count: 0; mso-list: l0 level1 lfo1; text-indent: -21.0pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="color: black; font-family: Wingdings; font-size: 12.0pt; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings;"&gt;&lt;span&gt;Ø&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span class="apple-style-span"&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;Find split info&lt;/span&gt;&lt;/span&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraph" style="margin-left: 21.0pt; mso-char-indent-count: 0; mso-list: l0 level1 lfo1; text-indent: -21.0pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="color: black; font-family: Wingdings; font-size: 12.0pt; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings;"&gt;&lt;span&gt;Ø&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span class="apple-style-span"&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;Deal with user's operation(select, delete, cut, paste)&lt;/span&gt;&lt;/span&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="left" class="MsoNormal" style="text-align: left;"&gt;&lt;b&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;Main Goal&lt;/span&gt;&lt;/b&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;: &lt;span class="apple-style-span"&gt;call hyphenation module of enchant to display the hyphenation result in abiword. After user's operation, refresh the hyphenation-result accordingly include user adding new word, delete word, copy word, cut word&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;The main code is adding in the format function in LineBreaker.h(cpp)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 10.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;// find the split point&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 10.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;while (pRunToBump &amp;amp;&amp;amp; pLine-&amp;gt;getNumRunsInLine() &amp;amp;&amp;amp; (pLine-&amp;gt;getLastRun() != m_pLastRunToKeep))&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 10.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 10.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;UT_ASSERT(pRunToBump-&amp;gt;getLine() == pLine);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 10.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;if(!pLine-&amp;gt;removeRun(pRunToBump))&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 10.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 10.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;pRunToBump-&amp;gt;setLine(NULL);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 10.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 10.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;UT_ASSERT(pLine-&amp;gt;getLastRun()-&amp;gt;getType() != FPRUN_ENDOFPARAGRAPH);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 10.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;if(pLine-&amp;gt;getLastRun()-&amp;gt;getType() == FPRUN_ENDOFPARAGRAPH)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 10.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 10.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;fp_Run * pNuke = pLine-&amp;gt;getLastRun();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 10.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;pLine-&amp;gt;removeRun(pNuke);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 10.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 10.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;pRunToBump-&amp;gt;printText();&lt;span&gt;&amp;nbsp; &lt;/span&gt;//trace out debug message &amp;amp; run two time&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 10.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;pNextLine-&amp;gt;insertRun(pRunToBump);&lt;span&gt;&amp;nbsp; &lt;/span&gt;//called when create new line&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 10.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;// to get the split word&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 10.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;if (!(pRunToBump-&amp;gt;getPrevRun() &amp;amp;&amp;amp; pLine-&amp;gt;getNumRunsInLine() &amp;amp;&amp;amp; (pLine-&amp;gt;getLastRun() != m_pLastRunToKeep)))&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 10.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 10.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;pRunToSplit=pRunToBump;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 10.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;PD_StruxIterator text(pRunToBump-&amp;gt;getBlock()-&amp;gt;getStruxDocHandle(),&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 10.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;pRunToBump-&amp;gt;getBlockOffset() + fl_BLOCK_STRUX_OFFSET);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 10.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;text.setUpperLimit(text.getPosition() + pRunToBump-&amp;gt;getLength() - 1);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 10.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;UT_ASSERT_HARMLESS( text.getStatus() == UTIter_OK );&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 10.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;UT_UTF8String sTmp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 10.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;while(text.getStatus() == UTIter_OK)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 10.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 10.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;UT_UCS4Char c = text.getChar();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 10.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;UT_DEBUGMSG(("| %d |",c));&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 10.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;if(c &amp;gt;= ' ' &amp;amp;&amp;amp; c &amp;lt;128)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 10.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;sTmp +=&lt;span&gt;&amp;nbsp; &lt;/span&gt;static_cast&amp;lt;char&amp;gt;(c);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 10.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;++text;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 10.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 10.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;UT_DEBUGMSG(("The Split Text |%s| \n",sTmp.utf8_str()));&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 10.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;if(sTmp.utf8_str()!=0) &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 10.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 10.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;pWordToSplit=sTmp;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 10.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;UT_DEBUGMSG(("wordToSplit |%s| \n",pWordToSplit.utf8_str()));&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 10.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;}&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 10.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;}&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 10.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;pRunToBump = pRunToBump-&amp;gt;getPrevRun();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 10.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;UT_DEBUGMSG(("Next runToBump %x \n",pRunToBump));&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 10.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 10.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 10.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;//modify src/text/fmt/xp/fb_LineBreaker.cpp to place hypernation points&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 10.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;//spit the word&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 10.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;if(pWordToSplit.length()!=NULL)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 10.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 10.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;pWordHyphenationResult=pBlock-&amp;gt;_hyphenateWord(pWordToSplit.ucs4_str().ucs4_str(),0,0);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 10.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;int tickLeft=pLine-&amp;gt;getAvailableWidth();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 10.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;if (pWordHyphenationResult &amp;amp;&amp;amp; *pWordHyphenationResult){&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 10.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;gchar *c = g_ucs4_to_utf8(pWordHyphenationResult, -1, NULL, NULL, NULL);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 10.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;for(int index=g_utf8_strlen(c,NULL);index&amp;gt;=0;--index)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 10.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 10.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;if(pWordHyphenationResult[index]=='-'&amp;amp;&amp;amp;index&amp;lt;tickLeft)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 10.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 10.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;pBreakPoint=index;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 10.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;fp_TextRun* textout=static_cast&amp;lt;fp_TextRun*&amp;gt;(pRunToSplit);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 10.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;textout-&amp;gt;split(pBreakPoint);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 10.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 10.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 10.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 10.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div align="left" class="MsoNormal" style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;!--EndFragment--&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4307261008427639518-5681686555543393037?l=chenxiajian.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chenxiajian.blogspot.com/feeds/5681686555543393037/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://chenxiajian.blogspot.com/2011/08/2-call-hyphenation-function-in-abiword.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4307261008427639518/posts/default/5681686555543393037'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4307261008427639518/posts/default/5681686555543393037'/><link rel='alternate' type='text/html' href='http://chenxiajian.blogspot.com/2011/08/2-call-hyphenation-function-in-abiword.html' title='2 Call the Hyphenation function in Abiword.'/><author><name>ChenXiajian_My GSoc2011_Hyphenation Support to AbiWord</name><uri>http://www.blogger.com/profile/14915172551075912267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-WxeJ0YrBl7c/TbfhCl7lCbI/AAAAAAAAAAM/ooMSpFc2UZk/s220/%25E7%2585%25A7%25E7%2589%2587.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4307261008427639518.post-2566683123561759739</id><published>2011-08-21T05:11:00.003-07:00</published><updated>2011-08-21T05:11:48.659-07:00</updated><title type='text'>1.8 Test in Linux</title><content type='html'>       &lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;o:DocumentProperties&gt;   &lt;o:Template&gt;Normal.dotm&lt;/o:Template&gt;   &lt;o:Revision&gt;0&lt;/o:Revision&gt;   &lt;o:TotalTime&gt;0&lt;/o:TotalTime&gt;   &lt;o:Pages&gt;1&lt;/o:Pages&gt;   &lt;o:Words&gt;9&lt;/o:Words&gt;   &lt;o:Characters&gt;53&lt;/o:Characters&gt;   &lt;o:Company&gt;Yahoo&lt;/o:Company&gt;   &lt;o:Lines&gt;1&lt;/o:Lines&gt;   &lt;o:Paragraphs&gt;1&lt;/o:Paragraphs&gt;   &lt;o:CharactersWithSpaces&gt;65&lt;/o:CharactersWithSpaces&gt;   &lt;o:Version&gt;12.0&lt;/o:Version&gt;  &lt;/o:DocumentProperties&gt;  &lt;o:OfficeDocumentSettings&gt;   &lt;o:AllowPNG/&gt;  &lt;/o:OfficeDocumentSettings&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:WordDocument&gt;   &lt;w:Zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:TrackMoves&gt;false&lt;/w:TrackMoves&gt;   &lt;w:TrackFormatting/&gt;   &lt;w:PunctuationKerning/&gt;   &lt;w:DrawingGridHorizontalSpacing&gt;18 pt&lt;/w:DrawingGridHorizontalSpacing&gt;   &lt;w:DrawingGridVerticalSpacing&gt;18 pt&lt;/w:DrawingGridVerticalSpacing&gt;   &lt;w:DisplayHorizontalDrawingGridEvery&gt;0&lt;/w:DisplayHorizontalDrawingGridEvery&gt;   &lt;w:DisplayVerticalDrawingGridEvery&gt;0&lt;/w:DisplayVerticalDrawingGridEvery&gt;   &lt;w:ValidateAgainstSchemas/&gt;   &lt;w:SaveIfXMLInvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:IgnoreMixedContent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:AlwaysShowPlaceholderText&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:Compatibility&gt;    &lt;w:BreakWrappedTables/&gt;    &lt;w:DontGrowAutofit/&gt;    &lt;w:DontAutofitConstrainedTables/&gt;    &lt;w:DontVertAlignInTxbx/&gt;    &lt;w:UseFELayout/&gt;   &lt;/w:Compatibility&gt;  &lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:LatentStyles DefLockedState="false" LatentStyleCount="276"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;  &lt;!--[if gte mso 10]&gt; &lt;style&gt; /* Style Definitions */table.MsoNormalTable	{mso-style-name:"Table Normal";	mso-tstyle-rowband-size:0;	mso-tstyle-colband-size:0;	mso-style-noshow:yes;	mso-style-parent:"";	mso-padding-alt:0in 5.4pt 0in 5.4pt;	mso-para-margin:0in;	mso-para-margin-bottom:.0001pt;	mso-pagination:widow-orphan;	font-size:10.5pt;	mso-bidi-font-size:11.0pt;	font-family:"Times New Roman";	mso-ascii-font-family:Calibri;	mso-ascii-theme-font:minor-latin;	mso-hansi-font-family:Calibri;	mso-hansi-theme-font:minor-latin;	mso-font-kerning:1.0pt;	mso-fareast-language:ZH-CN;}&lt;/style&gt; &lt;![endif]--&gt;    &lt;!--StartFragment--&gt;&lt;span class="apple-style-span"&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-ansi-language: EN-US; mso-bidi-font-family: Arial; mso-fareast-font-family: 宋体; mso-fareast-language: ZH-CN; mso-fareast-theme-font: minor-fareast;"&gt;I have test the Enchant module in RedHat.&lt;span&gt;&amp;nbsp; &lt;/span&gt;It works fine for me.&lt;/span&gt;&lt;/span&gt;&lt;!--EndFragment--&gt;    &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4307261008427639518-2566683123561759739?l=chenxiajian.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chenxiajian.blogspot.com/feeds/2566683123561759739/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://chenxiajian.blogspot.com/2011/08/18-test-in-linux.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4307261008427639518/posts/default/2566683123561759739'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4307261008427639518/posts/default/2566683123561759739'/><link rel='alternate' type='text/html' href='http://chenxiajian.blogspot.com/2011/08/18-test-in-linux.html' title='1.8 Test in Linux'/><author><name>ChenXiajian_My GSoc2011_Hyphenation Support to AbiWord</name><uri>http://www.blogger.com/profile/14915172551075912267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-WxeJ0YrBl7c/TbfhCl7lCbI/AAAAAAAAAAM/ooMSpFc2UZk/s220/%25E7%2585%25A7%25E7%2589%2587.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4307261008427639518.post-1160339679361519658</id><published>2011-08-21T05:11:00.001-07:00</published><updated>2011-08-21T05:11:28.512-07:00</updated><title type='text'>1.7 Deploy of enchant in Abiword</title><content type='html'>       &lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;o:DocumentProperties&gt;   &lt;o:Template&gt;Normal.dotm&lt;/o:Template&gt;   &lt;o:Revision&gt;0&lt;/o:Revision&gt;   &lt;o:TotalTime&gt;0&lt;/o:TotalTime&gt;   &lt;o:Pages&gt;1&lt;/o:Pages&gt;   &lt;o:Words&gt;52&lt;/o:Words&gt;   &lt;o:Characters&gt;297&lt;/o:Characters&gt;   &lt;o:Company&gt;Yahoo&lt;/o:Company&gt;   &lt;o:Lines&gt;2&lt;/o:Lines&gt;   &lt;o:Paragraphs&gt;1&lt;/o:Paragraphs&gt;   &lt;o:CharactersWithSpaces&gt;364&lt;/o:CharactersWithSpaces&gt;   &lt;o:Version&gt;12.0&lt;/o:Version&gt;  &lt;/o:DocumentProperties&gt;  &lt;o:OfficeDocumentSettings&gt;   &lt;o:AllowPNG/&gt;  &lt;/o:OfficeDocumentSettings&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:WordDocument&gt;   &lt;w:Zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:TrackMoves&gt;false&lt;/w:TrackMoves&gt;   &lt;w:TrackFormatting/&gt;   &lt;w:PunctuationKerning/&gt;   &lt;w:DrawingGridHorizontalSpacing&gt;18 pt&lt;/w:DrawingGridHorizontalSpacing&gt;   &lt;w:DrawingGridVerticalSpacing&gt;18 pt&lt;/w:DrawingGridVerticalSpacing&gt;   &lt;w:DisplayHorizontalDrawingGridEvery&gt;0&lt;/w:DisplayHorizontalDrawingGridEvery&gt;   &lt;w:DisplayVerticalDrawingGridEvery&gt;0&lt;/w:DisplayVerticalDrawingGridEvery&gt;   &lt;w:ValidateAgainstSchemas/&gt;   &lt;w:SaveIfXMLInvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:IgnoreMixedContent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:AlwaysShowPlaceholderText&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:Compatibility&gt;    &lt;w:BreakWrappedTables/&gt;    &lt;w:DontGrowAutofit/&gt;    &lt;w:DontAutofitConstrainedTables/&gt;    &lt;w:DontVertAlignInTxbx/&gt;    &lt;w:UseFELayout/&gt;   &lt;/w:Compatibility&gt;  &lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:LatentStyles DefLockedState="false" LatentStyleCount="276"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;  &lt;!--[if gte mso 10]&gt; &lt;style&gt; /* Style Definitions */table.MsoNormalTable	{mso-style-name:"Table Normal";	mso-tstyle-rowband-size:0;	mso-tstyle-colband-size:0;	mso-style-noshow:yes;	mso-style-parent:"";	mso-padding-alt:0in 5.4pt 0in 5.4pt;	mso-para-margin:0in;	mso-para-margin-bottom:.0001pt;	mso-pagination:widow-orphan;	font-size:10.5pt;	mso-bidi-font-size:11.0pt;	font-family:"Times New Roman";	mso-ascii-font-family:Calibri;	mso-ascii-theme-font:minor-latin;	mso-hansi-font-family:Calibri;	mso-hansi-theme-font:minor-latin;	mso-font-kerning:1.0pt;	mso-fareast-language:ZH-CN;}&lt;/style&gt; &lt;![endif]--&gt;    &lt;!--StartFragment--&gt;  &lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;I just copy the buliding result of enchant to the right place in Abiword:&lt;/span&gt;&lt;/span&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;enchant\bin\Debug\libenchant_myspell.dll ----&amp;gt;abiword\msvc2008\Debug\lib\enchant\libenchant_myspell.dll&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;enchant\bin\Debug\libenchant_ispell.dll ----&amp;gt;abiword\msvc2008\Debug\lib\enchant\libenchant_ispell.dll&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;enchant\bin\Debug\libenchant.dll----&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;abiword\msvc2008\Debug\bin\ibenchant.dll&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;!--EndFragment--&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4307261008427639518-1160339679361519658?l=chenxiajian.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chenxiajian.blogspot.com/feeds/1160339679361519658/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://chenxiajian.blogspot.com/2011/08/17-deploy-of-enchant-in-abiword.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4307261008427639518/posts/default/1160339679361519658'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4307261008427639518/posts/default/1160339679361519658'/><link rel='alternate' type='text/html' href='http://chenxiajian.blogspot.com/2011/08/17-deploy-of-enchant-in-abiword.html' title='1.7 Deploy of enchant in Abiword'/><author><name>ChenXiajian_My GSoc2011_Hyphenation Support to AbiWord</name><uri>http://www.blogger.com/profile/14915172551075912267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-WxeJ0YrBl7c/TbfhCl7lCbI/AAAAAAAAAAM/ooMSpFc2UZk/s220/%25E7%2585%25A7%25E7%2589%2587.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4307261008427639518.post-6290370337448152222</id><published>2011-08-21T05:10:00.002-07:00</published><updated>2011-08-21T05:10:51.995-07:00</updated><title type='text'>1.2 Add five backends to support hyphenation</title><content type='html'>       &lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;o:DocumentProperties&gt;   &lt;o:Template&gt;Normal.dotm&lt;/o:Template&gt;   &lt;o:Revision&gt;0&lt;/o:Revision&gt;   &lt;o:TotalTime&gt;0&lt;/o:TotalTime&gt;   &lt;o:Pages&gt;1&lt;/o:Pages&gt;   &lt;o:Words&gt;640&lt;/o:Words&gt;   &lt;o:Characters&gt;3653&lt;/o:Characters&gt;   &lt;o:Company&gt;Yahoo&lt;/o:Company&gt;   &lt;o:Lines&gt;30&lt;/o:Lines&gt;   &lt;o:Paragraphs&gt;7&lt;/o:Paragraphs&gt;   &lt;o:CharactersWithSpaces&gt;4486&lt;/o:CharactersWithSpaces&gt;   &lt;o:Version&gt;12.0&lt;/o:Version&gt;  &lt;/o:DocumentProperties&gt;  &lt;o:OfficeDocumentSettings&gt;   &lt;o:AllowPNG/&gt;  &lt;/o:OfficeDocumentSettings&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:WordDocument&gt;   &lt;w:Zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:TrackMoves&gt;false&lt;/w:TrackMoves&gt;   &lt;w:TrackFormatting/&gt;   &lt;w:PunctuationKerning/&gt;   &lt;w:DrawingGridHorizontalSpacing&gt;18 pt&lt;/w:DrawingGridHorizontalSpacing&gt;   &lt;w:DrawingGridVerticalSpacing&gt;18 pt&lt;/w:DrawingGridVerticalSpacing&gt;   &lt;w:DisplayHorizontalDrawingGridEvery&gt;0&lt;/w:DisplayHorizontalDrawingGridEvery&gt;   &lt;w:DisplayVerticalDrawingGridEvery&gt;0&lt;/w:DisplayVerticalDrawingGridEvery&gt;   &lt;w:ValidateAgainstSchemas/&gt;   &lt;w:SaveIfXMLInvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:IgnoreMixedContent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:AlwaysShowPlaceholderText&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:Compatibility&gt;    &lt;w:BreakWrappedTables/&gt;    &lt;w:DontGrowAutofit/&gt;    &lt;w:DontAutofitConstrainedTables/&gt;    &lt;w:DontVertAlignInTxbx/&gt;    &lt;w:UseFELayout/&gt;   &lt;/w:Compatibility&gt;  &lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:LatentStyles DefLockedState="false" LatentStyleCount="276"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;  &lt;!--[if gte mso 10]&gt; &lt;style&gt; /* Style Definitions */table.MsoNormalTable	{mso-style-name:"Table Normal";	mso-tstyle-rowband-size:0;	mso-tstyle-colband-size:0;	mso-style-noshow:yes;	mso-style-parent:"";	mso-padding-alt:0in 5.4pt 0in 5.4pt;	mso-para-margin:0in;	mso-para-margin-bottom:.0001pt;	mso-pagination:widow-orphan;	font-size:10.5pt;	mso-bidi-font-size:11.0pt;	font-family:"Times New Roman";	mso-ascii-font-family:Calibri;	mso-ascii-theme-font:minor-latin;	mso-hansi-font-family:Calibri;	mso-hansi-theme-font:minor-latin;	mso-font-kerning:1.0pt;	mso-fareast-language:ZH-CN;}&lt;/style&gt; &lt;![endif]--&gt;    &lt;!--StartFragment--&gt;  &lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;including ispell, myspell, zemberek, voikko, uspell&lt;/span&gt;&lt;/span&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraph" style="margin-left: 21.0pt; mso-char-indent-count: 0; mso-list: l7 level1 lfo5; text-indent: -21.0pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="color: black; font-family: Wingdings; font-size: 12.0pt; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings;"&gt;&lt;span&gt;Ø&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;Hunspell: using seperated dictionary: such as hyph_en_us.dic.&amp;nbsp; we can download dic from internet&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoListParagraph" style="margin-left: 21.0pt; mso-char-indent-count: 0; mso-list: l7 level1 lfo5; text-indent: -21.0pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="color: black; font-family: Wingdings; font-size: 12.0pt; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings;"&gt;&lt;span&gt;Ø&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;Libhyphenaiton: the dictionary is provided by author, sometimes limited&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoListParagraph" style="margin-left: 21.0pt; mso-char-indent-count: 0; mso-list: l7 level1 lfo5; text-indent: -21.0pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="color: black; font-family: Wingdings; font-size: 12.0pt; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings;"&gt;&lt;span&gt;Ø&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;Zemberek: for Turkis&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoListParagraph" style="margin-left: 21.0pt; mso-char-indent-count: 0; mso-list: l7 level1 lfo5; text-indent: -21.0pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="color: black; font-family: Wingdings; font-size: 12.0pt; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings;"&gt;&lt;span&gt;Ø&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;Voikko: for Finnish&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;the changes:&lt;/span&gt;&lt;/span&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;1 deleted the unneed connection, such as HSpell&lt;/span&gt;&lt;/span&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;2 add hunspell(myspell) hyphenation code&lt;/span&gt;&lt;/span&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;3 implement hyphenation using hunspell&lt;/span&gt;&lt;/span&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;4 implement hyphenation using Zemberek&lt;/span&gt;&lt;/span&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;======1 deleted the unneed connection, such as HSpell===========&lt;/span&gt;&lt;/span&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;Hebrew don’t need any hyphenation&lt;/span&gt;&lt;/span&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;Yiddish don’t need any hyphenation&lt;/span&gt;&lt;/span&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;=======2 Implement hyphenation using hunspell&lt;/span&gt;&lt;/span&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;In order to use libhyphenation. We need to add files:&lt;/span&gt;&lt;/span&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;hyphen/hnjalloc.h&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;hyphen/hnjalloc.c&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;hyphen/hyph_en_US.dic&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;hyphen/hyphen.c&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;hyphen/hyphen.gyp&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;hyphen/hyphen.h&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;hyphen/hyphen.patch&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;hyphen/hyphen.tex&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;========3 Implement hyphenation using Zemberek&lt;/span&gt;&lt;/span&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;&amp;nbsp;just using dbus_g_proxy_call the same as Spell-Check in Zemberek:&lt;/span&gt;&lt;/span&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;the hyphenation is as following&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&amp;nbsp;char* Zemberek::hyphenate(const char* word)&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;{&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;char* result;&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;GError *Error = NULL;&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (!dbus_g_proxy_call (proxy, "hecele", &amp;amp;Error,&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;G_TYPE_STRING,word,G_TYPE_INVALID,&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;G_TYPE_STRV, &amp;amp;result,G_TYPE_INVALID)) {&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;g_error_free (Error);&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return NULL;&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;char*result=0;&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return result;&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;}&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3&gt;&lt;a href="" name="_Toc301650917"&gt;&lt;span class="apple-style-span"&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; line-height: 173%; mso-bidi-font-family: Arial;"&gt;1.3 ISpell&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="background: white;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h3&gt;&lt;div class="MsoNormal"&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;I used Libhyphenation in ISpell. The simple code is just like this:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;static char *&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;ispell_dict_hyphenate (EnchantDict * me, const char *const word)&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;{&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;ISpellChecker * checker;&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;checker = (ISpellChecker *) me-&amp;gt;user_data;&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;if(me-&amp;gt;tag!="")&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;return checker-&amp;gt;hyphenate (word,me-&amp;gt;tag);&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;return checker-&amp;gt;hyphenate (word,"en_us");&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;}&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;The concrete code in ISpellChecker is :&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="left" class="MsoNormal" style="mso-layout-grid-align: none; text-align: left; text-autospace: none;"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;char *&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;ISpellChecker::hyphenate(const char * const utf8Word, const char *const tag)&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;{&lt;span&gt;&amp;nbsp; &lt;/span&gt;//we must choose the right language tag&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;char* param_value = enchant_broker_get_param (m_broker, "enchant.ispell.hyphenation.dictionary.path");&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;if(languageMap[tag]!="")&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;{&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;string result=Hyphenator(RFC_3066::Language(languageMap[tag]),param_value).hyphenate(utf8Word).c_str();&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;char* temp=new char[result.length()];&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;strcpy(temp,result.c_str());&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;return temp;&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;}&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;return NULL;&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;}&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;h3&gt;&lt;a href="" name="_Toc301650918"&gt;&lt;span class="apple-style-span"&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; line-height: 173%; mso-bidi-font-family: Arial;"&gt;1.4 MySpell&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="background: white;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h3&gt;&lt;div class="MsoNormal"&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;I used Libhyphenate in ISpell. The simple code is just like this:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;char*&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;MySpellChecker::hyphenate (const char* const word, size_t len,char* tag)&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;{&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;if(len==-1) len=strlen(word);&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;if (len &amp;gt; MAXWORDLEN &lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;|| !g_iconv_is_valid(m_translate_in)&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;|| !g_iconv_is_valid(m_translate_out))&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;return 0;&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;char* result=0;&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;myspell-&amp;gt;hyphenate(word,result,tag);&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;return result;&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;}&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;The concrete code in MySpellChecker is :&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;void Hunspell::hyphenate( const char* const word, char* result, char* tag )&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;{&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;HyphenDict *dict;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;char buf[BUFSIZE + 1];&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;char *hyphens=new char[BUFSIZE + 1];&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;char ** rep;&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;int * pos;&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;int * cut;&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;/* load the hyphenation dictionary */&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;string filePath="hyph_";&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;filePath+=tag;&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;filePath+=".dic";&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;if ((dict = hnj_hyphen_load(filePath.c_str())) == NULL) {&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;fprintf(stderr, "Couldn't find file %s\n",tag);&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;fflush(stderr);&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;exit(1);&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;}&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;int len=strlen(word);&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;if (hnj_hyphen_hyphenate2(dict, word, len-1, hyphens, NULL, &amp;amp;rep, &amp;amp;pos, &amp;amp;cut)) {&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;free(hyphens);&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;fprintf(stderr, "hyphenation error\n");&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;exit(1);&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;}&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;hnj_hyphen_free(dict);&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;span&gt; &lt;/span&gt;result=hyphens;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; font-size: 11.0pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;}&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3&gt;&lt;a href="" name="_Toc301650919"&gt;&lt;span class="apple-style-span"&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; line-height: 173%; mso-bidi-font-family: Arial;"&gt;1.5 zemberek&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="background: white;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h3&gt;&lt;div class="MsoNormal"&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;The way in Zemberek is same with the two above:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="color: #00b050; font-size: 11.0pt;"&gt;static char*&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="color: #00b050; font-size: 11.0pt;"&gt;zemberek_dict_hyphenate (EnchantDict * me, const char *const word)&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="color: #00b050; font-size: 11.0pt;"&gt;{&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="color: #00b050; font-size: 11.0pt;"&gt;&lt;span&gt; &lt;/span&gt;Zemberek *checker;&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="color: #00b050; font-size: 11.0pt;"&gt;&lt;span&gt; &lt;/span&gt;checker = (Zemberek *) me-&amp;gt;user_data;&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="color: #00b050; font-size: 11.0pt;"&gt;&lt;span&gt; &lt;/span&gt;return checker-&amp;gt;hyphenate (word);&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="color: #00b050; font-size: 11.0pt;"&gt;}&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;But the way for the concrete implementation is different from the two. We use &lt;/span&gt;&lt;b&gt;&lt;span style="color: #020002; font-family: Arial; font-size: 14.0pt; mso-bidi-font-family: Arial; mso-fareast-font-family: Fixedsys; mso-font-kerning: 0pt; mso-no-proof: yes;"&gt;zemberek_service&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="color: #00b050; font-size: 11.0pt;"&gt;char* Zemberek::hyphenate(const char* word)&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="color: #00b050; font-size: 11.0pt;"&gt;{&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="color: #00b050; font-size: 11.0pt;"&gt;&lt;span&gt; &lt;/span&gt;char* result;&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="color: #00b050; font-size: 11.0pt;"&gt;&lt;span&gt; &lt;/span&gt;GError *Error = NULL;&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="color: #00b050; font-size: 11.0pt;"&gt;&lt;span&gt; &lt;/span&gt;if (!dbus_g_proxy_call (proxy, "hecele", &amp;amp;Error,&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="color: #00b050; font-size: 11.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;G_TYPE_STRING,word,G_TYPE_INVALID,&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="color: #00b050; font-size: 11.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;G_TYPE_STRV, &amp;amp;result,G_TYPE_INVALID)) {&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="color: #00b050; font-size: 11.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;g_error_free (Error);&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="color: #00b050; font-size: 11.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;return NULL;&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="color: #00b050; font-size: 11.0pt;"&gt;&lt;span&gt; &lt;/span&gt;}&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="color: #00b050; font-size: 11.0pt;"&gt;&lt;span&gt; &lt;/span&gt;char*result=0;&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="color: #00b050; font-size: 11.0pt;"&gt;&lt;span&gt; &lt;/span&gt;return result;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="color: #00b050; font-size: 11.0pt;"&gt;}&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;h3&gt;&lt;a href="" name="_Toc301650920"&gt;&lt;span class="apple-style-span"&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; line-height: 173%; mso-bidi-font-family: Arial;"&gt;1.6 voikko&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="background: white;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h3&gt;&lt;div class="MsoNormal"&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;The hyphenation implementation in Voikko is easy since Voikko has hyphenaiton’s API.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="left" class="MsoNormal" style="mso-layout-grid-align: none; text-align: left; text-autospace: none;"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="color: #00b050; font-size: 11.0pt;"&gt;static char **&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="left" class="MsoNormal" style="mso-layout-grid-align: none; text-align: left; text-autospace: none;"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="color: #00b050; font-size: 11.0pt;"&gt;voikko_dict_suggest (EnchantDict * me, const char *const word,&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="left" class="MsoNormal" style="mso-layout-grid-align: none; text-align: left; text-autospace: none;"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="color: #00b050; font-size: 11.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;size_t len, size_t * out_n_suggs)&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="left" class="MsoNormal" style="mso-layout-grid-align: none; text-align: left; text-autospace: none;"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="color: #00b050; font-size: 11.0pt;"&gt;{&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="left" class="MsoNormal" style="mso-layout-grid-align: none; text-align: left; text-autospace: none;"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="color: #00b050; font-size: 11.0pt;"&gt;&lt;span&gt; &lt;/span&gt;char **sugg_arr;&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="left" class="MsoNormal" style="mso-layout-grid-align: none; text-align: left; text-autospace: none;"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="color: #00b050; font-size: 11.0pt;"&gt;&lt;span&gt; &lt;/span&gt;int voikko_handle;&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="left" class="MsoNormal" style="mso-layout-grid-align: none; text-align: left; text-autospace: none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="left" class="MsoNormal" style="mso-layout-grid-align: none; text-align: left; text-autospace: none;"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="color: #00b050; font-size: 11.0pt;"&gt;&lt;span&gt; &lt;/span&gt;voikko_handle = (long) me-&amp;gt;user_data;&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="left" class="MsoNormal" style="mso-layout-grid-align: none; text-align: left; text-autospace: none;"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="color: #00b050; font-size: 11.0pt;"&gt;&lt;span&gt; &lt;/span&gt;sugg_arr =&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="color: red; font-size: 14.0pt;"&gt; voikko_suggest_cstr&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="color: #00b050; font-size: 11.0pt;"&gt;(voikko_handle, word);&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="left" class="MsoNormal" style="mso-layout-grid-align: none; text-align: left; text-autospace: none;"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="color: #00b050; font-size: 11.0pt;"&gt;&lt;span&gt; &lt;/span&gt;if (sugg_arr == NULL)&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="left" class="MsoNormal" style="mso-layout-grid-align: none; text-align: left; text-autospace: none;"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="color: #00b050; font-size: 11.0pt;"&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;return NULL;&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="left" class="MsoNormal" style="mso-layout-grid-align: none; text-align: left; text-autospace: none;"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="color: #00b050; font-size: 11.0pt;"&gt;&lt;span&gt; &lt;/span&gt;for (*out_n_suggs = 0; sugg_arr[*out_n_suggs] != NULL; (*out_n_suggs)++);&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="left" class="MsoNormal" style="mso-layout-grid-align: none; text-align: left; text-autospace: none;"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="color: #00b050; font-size: 11.0pt;"&gt;&lt;span&gt; &lt;/span&gt;return sugg_arr;&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="color: #00b050; font-size: 11.0pt;"&gt;}&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;!--EndFragment--&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4307261008427639518-6290370337448152222?l=chenxiajian.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chenxiajian.blogspot.com/feeds/6290370337448152222/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://chenxiajian.blogspot.com/2011/08/12-add-five-backends-to-support.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4307261008427639518/posts/default/6290370337448152222'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4307261008427639518/posts/default/6290370337448152222'/><link rel='alternate' type='text/html' href='http://chenxiajian.blogspot.com/2011/08/12-add-five-backends-to-support.html' title='1.2 Add five backends to support hyphenation'/><author><name>ChenXiajian_My GSoc2011_Hyphenation Support to AbiWord</name><uri>http://www.blogger.com/profile/14915172551075912267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-WxeJ0YrBl7c/TbfhCl7lCbI/AAAAAAAAAAM/ooMSpFc2UZk/s220/%25E7%2585%25A7%25E7%2589%2587.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4307261008427639518.post-5119485147378535254</id><published>2011-08-21T05:10:00.000-07:00</published><updated>2011-08-21T05:10:09.874-07:00</updated><title type='text'>1. Hyphenation module in Enchant</title><content type='html'>       &lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;o:DocumentProperties&gt;   &lt;o:Template&gt;Normal.dotm&lt;/o:Template&gt;   &lt;o:Revision&gt;0&lt;/o:Revision&gt;   &lt;o:TotalTime&gt;0&lt;/o:TotalTime&gt;   &lt;o:Pages&gt;1&lt;/o:Pages&gt;   &lt;o:Words&gt;191&lt;/o:Words&gt;   &lt;o:Characters&gt;1094&lt;/o:Characters&gt;   &lt;o:Company&gt;Yahoo&lt;/o:Company&gt;   &lt;o:Lines&gt;9&lt;/o:Lines&gt;   &lt;o:Paragraphs&gt;2&lt;/o:Paragraphs&gt;   &lt;o:CharactersWithSpaces&gt;1343&lt;/o:CharactersWithSpaces&gt;   &lt;o:Version&gt;12.0&lt;/o:Version&gt;  &lt;/o:DocumentProperties&gt;  &lt;o:OfficeDocumentSettings&gt;   &lt;o:AllowPNG/&gt;  &lt;/o:OfficeDocumentSettings&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:WordDocument&gt;   &lt;w:Zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:TrackMoves&gt;false&lt;/w:TrackMoves&gt;   &lt;w:TrackFormatting/&gt;   &lt;w:PunctuationKerning/&gt;   &lt;w:DrawingGridHorizontalSpacing&gt;18 pt&lt;/w:DrawingGridHorizontalSpacing&gt;   &lt;w:DrawingGridVerticalSpacing&gt;18 pt&lt;/w:DrawingGridVerticalSpacing&gt;   &lt;w:DisplayHorizontalDrawingGridEvery&gt;0&lt;/w:DisplayHorizontalDrawingGridEvery&gt;   &lt;w:DisplayVerticalDrawingGridEvery&gt;0&lt;/w:DisplayVerticalDrawingGridEvery&gt;   &lt;w:ValidateAgainstSchemas/&gt;   &lt;w:SaveIfXMLInvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:IgnoreMixedContent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:AlwaysShowPlaceholderText&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:Compatibility&gt;    &lt;w:BreakWrappedTables/&gt;    &lt;w:DontGrowAutofit/&gt;    &lt;w:DontAutofitConstrainedTables/&gt;    &lt;w:DontVertAlignInTxbx/&gt;    &lt;w:UseFELayout/&gt;   &lt;/w:Compatibility&gt;  &lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:LatentStyles DefLockedState="false" LatentStyleCount="276"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;  &lt;!--[if gte mso 10]&gt; &lt;style&gt; /* Style Definitions */table.MsoNormalTable	{mso-style-name:"Table Normal";	mso-tstyle-rowband-size:0;	mso-tstyle-colband-size:0;	mso-style-noshow:yes;	mso-style-parent:"";	mso-padding-alt:0in 5.4pt 0in 5.4pt;	mso-para-margin:0in;	mso-para-margin-bottom:.0001pt;	mso-pagination:widow-orphan;	font-size:10.5pt;	mso-bidi-font-size:11.0pt;	font-family:"Times New Roman";	mso-ascii-font-family:Calibri;	mso-ascii-theme-font:minor-latin;	mso-hansi-font-family:Calibri;	mso-hansi-theme-font:minor-latin;	mso-font-kerning:1.0pt;	mso-fareast-language:ZH-CN;}&lt;/style&gt; &lt;![endif]--&gt;    &lt;!--StartFragment--&gt;  &lt;br /&gt;&lt;h3&gt;&lt;a href="" name="_Toc301650915"&gt;&lt;span class="apple-style-span"&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; line-height: 173%; mso-bidi-font-family: Arial;"&gt;1.1 Add hyphenation function in Enchant&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="background: white;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h3&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;Firstly, I add hyphenation method in Enchant:&lt;/span&gt;&lt;/span&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;================the code===========&lt;/span&gt;&lt;/span&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;I think we can combine the hyphenation with spell-checking together, So that we can make the code more flexible. In my opinion, the hyphenation function defines as following:&lt;/span&gt;&lt;/span&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;EnchantDict* enchant_broker_request_dict (EnchantBroker* broker, const&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;char *const lang); //same as spell-checking&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;char *enchant_dict_hyphenate(EnchantDict *dict, const char *const word,size_t len);&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="background: white; color: black; font-family: Arial; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;In order to achieve the function and implement in abstract layer, we need to add hyphenation function in EnchantDict. something like, just as a function pointer:&lt;/span&gt;&lt;/span&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;char* (*hyphenate) (struct str_enchant_dict * me,&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; const char *const word, size_t len,&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; size_t * out_n_suggs);&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;and the function is implement by the backend. Take “ispell” as example: &lt;/span&gt;&lt;/span&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;static char * ispell_dict_hyphenate (EnchantDict * me, const char *const word,&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; size_t len, size_t * out_n_suggs)&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;{&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ISpellChecker * checker;&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;checker = (ISpellChecker *) me-&amp;gt;user_data;&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return checker-&amp;gt;hyphenate (word, len, out_n_suggs);&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;}&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;Finally, we set the connetion&lt;/span&gt;&lt;/span&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;dict-&amp;gt;hyphenate = ispell_dict_hyphenate;&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;&amp;nbsp;dict-&amp;gt;suggest = hspell_dict_hyphenate;&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: #00b050; font-family: Arial; mso-bidi-font-family: Arial; mso-bidi-font-size: 12.0pt;"&gt;dict-&amp;gt;suggest = zemberek_dict_hyphenate;&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;!--EndFragment--&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4307261008427639518-5119485147378535254?l=chenxiajian.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chenxiajian.blogspot.com/feeds/5119485147378535254/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://chenxiajian.blogspot.com/2011/08/1-hyphenation-module-in-enchant.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4307261008427639518/posts/default/5119485147378535254'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4307261008427639518/posts/default/5119485147378535254'/><link rel='alternate' type='text/html' href='http://chenxiajian.blogspot.com/2011/08/1-hyphenation-module-in-enchant.html' title='1. Hyphenation module in Enchant'/><author><name>ChenXiajian_My GSoc2011_Hyphenation Support to AbiWord</name><uri>http://www.blogger.com/profile/14915172551075912267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-WxeJ0YrBl7c/TbfhCl7lCbI/AAAAAAAAAAM/ooMSpFc2UZk/s220/%25E7%2585%25A7%25E7%2589%2587.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4307261008427639518.post-1711303008392216440</id><published>2011-08-21T05:09:00.001-07:00</published><updated>2011-08-21T05:09:17.442-07:00</updated><title type='text'>Summary of What I have done in GSoc2011</title><content type='html'>       &lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;o:DocumentProperties&gt;   &lt;o:Template&gt;Normal.dotm&lt;/o:Template&gt;   &lt;o:Revision&gt;0&lt;/o:Revision&gt;   &lt;o:TotalTime&gt;0&lt;/o:TotalTime&gt;   &lt;o:Pages&gt;1&lt;/o:Pages&gt;   &lt;o:Words&gt;427&lt;/o:Words&gt;   &lt;o:Characters&gt;2439&lt;/o:Characters&gt;   &lt;o:Company&gt;Yahoo&lt;/o:Company&gt;   &lt;o:Lines&gt;20&lt;/o:Lines&gt;   &lt;o:Paragraphs&gt;4&lt;/o:Paragraphs&gt;   &lt;o:CharactersWithSpaces&gt;2995&lt;/o:CharactersWithSpaces&gt;   &lt;o:Version&gt;12.0&lt;/o:Version&gt;  &lt;/o:DocumentProperties&gt;  &lt;o:OfficeDocumentSettings&gt;   &lt;o:AllowPNG/&gt;  &lt;/o:OfficeDocumentSettings&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:WordDocument&gt;   &lt;w:Zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:TrackMoves&gt;false&lt;/w:TrackMoves&gt;   &lt;w:TrackFormatting/&gt;   &lt;w:PunctuationKerning/&gt;   &lt;w:DrawingGridHorizontalSpacing&gt;18 pt&lt;/w:DrawingGridHorizontalSpacing&gt;   &lt;w:DrawingGridVerticalSpacing&gt;18 pt&lt;/w:DrawingGridVerticalSpacing&gt;   &lt;w:DisplayHorizontalDrawingGridEvery&gt;0&lt;/w:DisplayHorizontalDrawingGridEvery&gt;   &lt;w:DisplayVerticalDrawingGridEvery&gt;0&lt;/w:DisplayVerticalDrawingGridEvery&gt;   &lt;w:ValidateAgainstSchemas/&gt;   &lt;w:SaveIfXMLInvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:IgnoreMixedContent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:AlwaysShowPlaceholderText&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:Compatibility&gt;    &lt;w:BreakWrappedTables/&gt;    &lt;w:DontGrowAutofit/&gt;    &lt;w:DontAutofitConstrainedTables/&gt;    &lt;w:DontVertAlignInTxbx/&gt;    &lt;w:UseFELayout/&gt;   &lt;/w:Compatibility&gt;  &lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:LatentStyles DefLockedState="false" LatentStyleCount="276"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;  &lt;!--[if gte mso 10]&gt; &lt;style&gt; /* Style Definitions */table.MsoNormalTable	{mso-style-name:"Table Normal";	mso-tstyle-rowband-size:0;	mso-tstyle-colband-size:0;	mso-style-noshow:yes;	mso-style-parent:"";	mso-padding-alt:0in 5.4pt 0in 5.4pt;	mso-para-margin:0in;	mso-para-margin-bottom:.0001pt;	mso-pagination:widow-orphan;	font-size:10.5pt;	mso-bidi-font-size:11.0pt;	font-family:"Times New Roman";	mso-ascii-font-family:Calibri;	mso-ascii-theme-font:minor-latin;	mso-hansi-font-family:Calibri;	mso-hansi-theme-font:minor-latin;	mso-font-kerning:1.0pt;	mso-fareast-language:ZH-CN;}&lt;/style&gt; &lt;![endif]--&gt;    &lt;!--StartFragment--&gt;  &lt;br /&gt;&lt;div class="MsoToc1"&gt;&lt;!--[if supportFields]&gt;&lt;spanstyle='font-size:14.0pt;font-family:Arial;mso-bidi-font-family:Arial'&gt;&lt;spanstyle='mso-element:field-begin'&gt;&lt;/span&gt;&lt;span style="mso-spacerun:yes"&gt;&amp;nbsp;&lt;/span&gt;TOC \o &amp;quot;1-3&amp;quot; \h \z \u &lt;span style='mso-element:field-separator'&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;span&gt;&lt;span class="MsoHyperlink"&gt;&lt;span style="background: white; font-size: 14.0pt; mso-no-proof: yes;"&gt;Summary of What I have done in GSoc2011&lt;/span&gt;&lt;/span&gt;&lt;span style="display: none; font-size: 14.0pt; mso-hide: screen; mso-no-proof: yes;"&gt;&lt;span&gt;. &lt;/span&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;spanstyle='font-size:14.0pt;display:none;mso-hide:screen;mso-no-proof:yes'&gt;&lt;spanstyle='mso-element:field-begin'&gt;&lt;/span&gt; PAGEREF _Toc301650913 \h &lt;/span&gt;&lt;spanstyle='font-size:14.0pt;mso-no-proof:yes'&gt;&lt;span style='display:none;mso-hide:screen'&gt;&lt;span style='mso-element:field-separator'&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;span style="display: none; font-size: 14.0pt; mso-hide: screen; mso-no-proof: yes;"&gt;1&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:data&gt;08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003300300031003600350030003900310033000000&lt;/w:data&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;span style='font-size:14.0pt;display:none;mso-hide:screen;mso-no-proof:yes'&gt;&lt;span style='mso-element:field-end'&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;/span&gt;&lt;span style="font-size: 14.0pt; mso-no-proof: yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoToc2"&gt;&lt;span&gt;&lt;span class="MsoHyperlink"&gt;&lt;span style="background: white; font-family: Arial; font-size: 14.0pt; mso-bidi-font-family: Arial; mso-no-proof: yes;"&gt;1 Hyphenation module in Enchant&lt;/span&gt;&lt;/span&gt;&lt;span style="display: none; font-size: 14.0pt; mso-hide: screen; mso-no-proof: yes;"&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;spanstyle='font-size:14.0pt;display:none;mso-hide:screen;mso-no-proof:yes'&gt;&lt;spanstyle='mso-element:field-begin'&gt;&lt;/span&gt; PAGEREF _Toc301650914 \h &lt;/span&gt;&lt;spanstyle='font-size:14.0pt;mso-no-proof:yes'&gt;&lt;span style='display:none;mso-hide:screen'&gt;&lt;span style='mso-element:field-separator'&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;span style="display: none; font-size: 14.0pt; mso-hide: screen; mso-no-proof: yes;"&gt;3&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:data&gt;08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003300300031003600350030003900310034000000&lt;/w:data&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;span style='font-size:14.0pt;display:none;mso-hide:screen;mso-no-proof:yes'&gt;&lt;span style='mso-element:field-end'&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;/span&gt;&lt;span style="font-size: 14.0pt; mso-no-proof: yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoToc3"&gt;&lt;span&gt;&lt;span class="MsoHyperlink"&gt;&lt;span style="background: white; font-family: Arial; font-size: 14.0pt; mso-bidi-font-family: Arial; mso-no-proof: yes;"&gt;1.1 Add hyphenation function in Enchant&lt;/span&gt;&lt;/span&gt;&lt;span style="display: none; font-size: 14.0pt; mso-hide: screen; mso-no-proof: yes;"&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;spanstyle='font-size:14.0pt;display:none;mso-hide:screen;mso-no-proof:yes'&gt;&lt;spanstyle='mso-element:field-begin'&gt;&lt;/span&gt; PAGEREF _Toc301650915 \h &lt;/span&gt;&lt;spanstyle='font-size:14.0pt;mso-no-proof:yes'&gt;&lt;span style='display:none;mso-hide:screen'&gt;&lt;span style='mso-element:field-separator'&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;span style="display: none; font-size: 14.0pt; mso-hide: screen; mso-no-proof: yes;"&gt;3&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:data&gt;08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003300300031003600350030003900310035000000&lt;/w:data&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;span style='font-size:14.0pt;display:none;mso-hide:screen;mso-no-proof:yes'&gt;&lt;span style='mso-element:field-end'&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;/span&gt;&lt;span style="font-size: 14.0pt; mso-no-proof: yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoToc3"&gt;&lt;span&gt;&lt;span class="MsoHyperlink"&gt;&lt;span style="background: white; font-family: Arial; font-size: 14.0pt; mso-bidi-font-family: Arial; mso-no-proof: yes;"&gt;1.2 Add five backends to support hyphenation&lt;/span&gt;&lt;/span&gt;&lt;span style="display: none; font-size: 14.0pt; mso-hide: screen; mso-no-proof: yes;"&gt;&lt;span&gt;. &lt;/span&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;spanstyle='font-size:14.0pt;display:none;mso-hide:screen;mso-no-proof:yes'&gt;&lt;spanstyle='mso-element:field-begin'&gt;&lt;/span&gt; PAGEREF _Toc301650916 \h &lt;/span&gt;&lt;spanstyle='font-size:14.0pt;mso-no-proof:yes'&gt;&lt;span style='display:none;mso-hide:screen'&gt;&lt;span style='mso-element:field-separator'&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;span style="display: none; font-size: 14.0pt; mso-hide: screen; mso-no-proof: yes;"&gt;3&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:data&gt;08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003300300031003600350030003900310036000000&lt;/w:data&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;span style='font-size:14.0pt;display:none;mso-hide:screen;mso-no-proof:yes'&gt;&lt;span style='mso-element:field-end'&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;/span&gt;&lt;span style="font-size: 14.0pt; mso-no-proof: yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoToc3"&gt;&lt;span&gt;&lt;span class="MsoHyperlink"&gt;&lt;span style="background: white; font-family: Arial; font-size: 14.0pt; mso-bidi-font-family: Arial; mso-no-proof: yes;"&gt;1.3 ISpell&lt;/span&gt;&lt;/span&gt;&lt;span style="display: none; font-size: 14.0pt; mso-hide: screen; mso-no-proof: yes;"&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;spanstyle='font-size:14.0pt;display:none;mso-hide:screen;mso-no-proof:yes'&gt;&lt;spanstyle='mso-element:field-begin'&gt;&lt;/span&gt; PAGEREF _Toc301650917 \h &lt;/span&gt;&lt;spanstyle='font-size:14.0pt;mso-no-proof:yes'&gt;&lt;span style='display:none;mso-hide:screen'&gt;&lt;span style='mso-element:field-separator'&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;span style="display: none; font-size: 14.0pt; mso-hide: screen; mso-no-proof: yes;"&gt;5&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:data&gt;08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003300300031003600350030003900310037000000&lt;/w:data&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;span style='font-size:14.0pt;display:none;mso-hide:screen;mso-no-proof:yes'&gt;&lt;span style='mso-element:field-end'&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;/span&gt;&lt;span style="font-size: 14.0pt; mso-no-proof: yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoToc3"&gt;&lt;span&gt;&lt;span class="MsoHyperlink"&gt;&lt;span style="background: white; font-family: Arial; font-size: 14.0pt; mso-bidi-font-family: Arial; mso-no-proof: yes;"&gt;1.4 MySpell&lt;/span&gt;&lt;/span&gt;&lt;span style="display: none; font-size: 14.0pt; mso-hide: screen; mso-no-proof: yes;"&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;spanstyle='font-size:14.0pt;display:none;mso-hide:screen;mso-no-proof:yes'&gt;&lt;spanstyle='mso-element:field-begin'&gt;&lt;/span&gt; PAGEREF _Toc301650918 \h &lt;/span&gt;&lt;spanstyle='font-size:14.0pt;mso-no-proof:yes'&gt;&lt;span style='display:none;mso-hide:screen'&gt;&lt;span style='mso-element:field-separator'&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;span style="display: none; font-size: 14.0pt; mso-hide: screen; mso-no-proof: yes;"&gt;5&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:data&gt;08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003300300031003600350030003900310038000000&lt;/w:data&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;span style='font-size:14.0pt;display:none;mso-hide:screen;mso-no-proof:yes'&gt;&lt;span style='mso-element:field-end'&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;/span&gt;&lt;span style="font-size: 14.0pt; mso-no-proof: yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoToc3"&gt;&lt;span&gt;&lt;span class="MsoHyperlink"&gt;&lt;span style="background: white; font-family: Arial; font-size: 14.0pt; mso-bidi-font-family: Arial; mso-no-proof: yes;"&gt;1.5 zemberek&lt;/span&gt;&lt;/span&gt;&lt;span style="display: none; font-size: 14.0pt; mso-hide: screen; mso-no-proof: yes;"&gt;&lt;span&gt;. &lt;/span&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;spanstyle='font-size:14.0pt;display:none;mso-hide:screen;mso-no-proof:yes'&gt;&lt;spanstyle='mso-element:field-begin'&gt;&lt;/span&gt; PAGEREF _Toc301650919 \h &lt;/span&gt;&lt;spanstyle='font-size:14.0pt;mso-no-proof:yes'&gt;&lt;span style='display:none;mso-hide:screen'&gt;&lt;span style='mso-element:field-separator'&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;span style="display: none; font-size: 14.0pt; mso-hide: screen; mso-no-proof: yes;"&gt;6&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:data&gt;08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003300300031003600350030003900310039000000&lt;/w:data&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;span style='font-size:14.0pt;display:none;mso-hide:screen;mso-no-proof:yes'&gt;&lt;span style='mso-element:field-end'&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;/span&gt;&lt;span style="font-size: 14.0pt; mso-no-proof: yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoToc3"&gt;&lt;span&gt;&lt;span class="MsoHyperlink"&gt;&lt;span style="background: white; font-family: Arial; font-size: 14.0pt; mso-bidi-font-family: Arial; mso-no-proof: yes;"&gt;1.6 voikko&lt;/span&gt;&lt;/span&gt;&lt;span style="display: none; font-size: 14.0pt; mso-hide: screen; mso-no-proof: yes;"&gt;&lt;span&gt;. &lt;/span&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;spanstyle='font-size:14.0pt;display:none;mso-hide:screen;mso-no-proof:yes'&gt;&lt;spanstyle='mso-element:field-begin'&gt;&lt;/span&gt; PAGEREF _Toc301650920 \h &lt;/span&gt;&lt;spanstyle='font-size:14.0pt;mso-no-proof:yes'&gt;&lt;span style='display:none;mso-hide:screen'&gt;&lt;span style='mso-element:field-separator'&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;span style="display: none; font-size: 14.0pt; mso-hide: screen; mso-no-proof: yes;"&gt;7&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:data&gt;08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003300300031003600350030003900320030000000&lt;/w:data&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;span style='font-size:14.0pt;display:none;mso-hide:screen;mso-no-proof:yes'&gt;&lt;span style='mso-element:field-end'&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;/span&gt;&lt;span style="font-size: 14.0pt; mso-no-proof: yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoToc3"&gt;&lt;span&gt;&lt;span class="MsoHyperlink"&gt;&lt;span style="background: white; font-family: Arial; font-size: 14.0pt; mso-bidi-font-family: Arial; mso-no-proof: yes;"&gt;1.7 Deploy of enchant in Abiword&lt;/span&gt;&lt;/span&gt;&lt;span style="display: none; font-size: 14.0pt; mso-hide: screen; mso-no-proof: yes;"&gt;&lt;span&gt;. &lt;/span&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;spanstyle='font-size:14.0pt;display:none;mso-hide:screen;mso-no-proof:yes'&gt;&lt;spanstyle='mso-element:field-begin'&gt;&lt;/span&gt; PAGEREF _Toc301650921 \h &lt;/span&gt;&lt;spanstyle='font-size:14.0pt;mso-no-proof:yes'&gt;&lt;span style='display:none;mso-hide:screen'&gt;&lt;span style='mso-element:field-separator'&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;span style="display: none; font-size: 14.0pt; mso-hide: screen; mso-no-proof: yes;"&gt;7&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:data&gt;08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003300300031003600350030003900320031000000&lt;/w:data&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;span style='font-size:14.0pt;display:none;mso-hide:screen;mso-no-proof:yes'&gt;&lt;span style='mso-element:field-end'&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;/span&gt;&lt;span style="font-size: 14.0pt; mso-no-proof: yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoToc3"&gt;&lt;span&gt;&lt;span class="MsoHyperlink"&gt;&lt;span style="background: white; font-size: 14.0pt; mso-no-proof: yes;"&gt;1.8 Test in Linux&lt;/span&gt;&lt;/span&gt;&lt;span style="display: none; font-size: 14.0pt; mso-hide: screen; mso-no-proof: yes;"&gt;&lt;span&gt;. &lt;/span&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;spanstyle='font-size:14.0pt;display:none;mso-hide:screen;mso-no-proof:yes'&gt;&lt;spanstyle='mso-element:field-begin'&gt;&lt;/span&gt; PAGEREF _Toc301650922 \h &lt;/span&gt;&lt;spanstyle='font-size:14.0pt;mso-no-proof:yes'&gt;&lt;span style='display:none;mso-hide:screen'&gt;&lt;span style='mso-element:field-separator'&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;span style="display: none; font-size: 14.0pt; mso-hide: screen; mso-no-proof: yes;"&gt;8&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:data&gt;08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003300300031003600350030003900320032000000&lt;/w:data&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;span style='font-size:14.0pt;display:none;mso-hide:screen;mso-no-proof:yes'&gt;&lt;span style='mso-element:field-end'&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;/span&gt;&lt;span style="font-size: 14.0pt; mso-no-proof: yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoToc2"&gt;&lt;span&gt;&lt;span class="MsoHyperlink"&gt;&lt;span style="background: white; font-size: 14.0pt; mso-no-proof: yes;"&gt;2 Call the Hyphenation function in Abiword.&lt;/span&gt;&lt;/span&gt;&lt;span style="display: none; font-size: 14.0pt; mso-hide: screen; mso-no-proof: yes;"&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;spanstyle='font-size:14.0pt;display:none;mso-hide:screen;mso-no-proof:yes'&gt;&lt;spanstyle='mso-element:field-begin'&gt;&lt;/span&gt; PAGEREF _Toc301650923 \h &lt;/span&gt;&lt;spanstyle='font-size:14.0pt;mso-no-proof:yes'&gt;&lt;span style='display:none;mso-hide:screen'&gt;&lt;span style='mso-element:field-separator'&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;span style="display: none; font-size: 14.0pt; mso-hide: screen; mso-no-proof: yes;"&gt;8&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:data&gt;08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003300300031003600350030003900320033000000&lt;/w:data&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;span style='font-size:14.0pt;display:none;mso-hide:screen;mso-no-proof:yes'&gt;&lt;span style='mso-element:field-end'&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;/span&gt;&lt;span style="font-size: 14.0pt; mso-no-proof: yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoToc2"&gt;&lt;span&gt;&lt;span class="MsoHyperlink"&gt;&lt;span style="background: white; font-size: 14.0pt; mso-no-proof: yes;"&gt;3 Simple Implementation of Chinese Spell-Check in Enchant&lt;/span&gt;&lt;/span&gt;&lt;span style="display: none; font-size: 14.0pt; mso-hide: screen; mso-no-proof: yes;"&gt;&lt;span&gt;. &lt;/span&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;spanstyle='font-size:14.0pt;display:none;mso-hide:screen;mso-no-proof:yes'&gt;&lt;spanstyle='mso-element:field-begin'&gt;&lt;/span&gt; PAGEREF _Toc301650924 \h &lt;/span&gt;&lt;spanstyle='font-size:14.0pt;mso-no-proof:yes'&gt;&lt;span style='display:none;mso-hide:screen'&gt;&lt;span style='mso-element:field-separator'&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;span style="display: none; font-size: 14.0pt; mso-hide: screen; mso-no-proof: yes;"&gt;10&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:data&gt;08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003300300031003600350030003900320034000000&lt;/w:data&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;span style='font-size:14.0pt;display:none;mso-hide:screen;mso-no-proof:yes'&gt;&lt;span style='mso-element:field-end'&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;/span&gt;&lt;span style="font-size: 14.0pt; mso-no-proof: yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoToc2"&gt;&lt;span&gt;&lt;span class="MsoHyperlink"&gt;&lt;span style="background: white; font-size: 14.0pt; mso-no-proof: yes;"&gt;4 Code Re-factor and debug&lt;/span&gt;&lt;/span&gt;&lt;span style="display: none; font-size: 14.0pt; mso-hide: screen; mso-no-proof: yes;"&gt;&lt;span&gt;. &lt;/span&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;spanstyle='font-size:14.0pt;display:none;mso-hide:screen;mso-no-proof:yes'&gt;&lt;spanstyle='mso-element:field-begin'&gt;&lt;/span&gt; PAGEREF _Toc301650925 \h &lt;/span&gt;&lt;spanstyle='font-size:14.0pt;mso-no-proof:yes'&gt;&lt;span style='display:none;mso-hide:screen'&gt;&lt;span style='mso-element:field-separator'&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;span style="display: none; font-size: 14.0pt; mso-hide: screen; mso-no-proof: yes;"&gt;10&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:data&gt;08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003300300031003600350030003900320035000000&lt;/w:data&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;span style='font-size:14.0pt;display:none;mso-hide:screen;mso-no-proof:yes'&gt;&lt;span style='mso-element:field-end'&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;/span&gt;&lt;span style="font-size: 14.0pt; mso-no-proof: yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoToc2"&gt;&lt;span&gt;&lt;span class="MsoHyperlink"&gt;&lt;span style="background: white; font-size: 14.0pt; mso-no-proof: yes;"&gt;5. User interface to manage hyphenation&lt;/span&gt;&lt;/span&gt;&lt;span style="display: none; font-size: 14.0pt; mso-hide: screen; mso-no-proof: yes;"&gt;&lt;span&gt;. &lt;/span&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;spanstyle='font-size:14.0pt;display:none;mso-hide:screen;mso-no-proof:yes'&gt;&lt;spanstyle='mso-element:field-begin'&gt;&lt;/span&gt; PAGEREF _Toc301650926 \h &lt;/span&gt;&lt;spanstyle='font-size:14.0pt;mso-no-proof:yes'&gt;&lt;span style='display:none;mso-hide:screen'&gt;&lt;span style='mso-element:field-separator'&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;span style="display: none; font-size: 14.0pt; mso-hide: screen; mso-no-proof: yes;"&gt;10&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:data&gt;08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003300300031003600350030003900320036000000&lt;/w:data&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;span style='font-size:14.0pt;display:none;mso-hide:screen;mso-no-proof:yes'&gt;&lt;span style='mso-element:field-end'&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;/span&gt;&lt;span style="font-size: 14.0pt; mso-no-proof: yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoToc2"&gt;&lt;span&gt;&lt;span class="MsoHyperlink"&gt;&lt;span style="background: white; font-size: 14.0pt; mso-no-proof: yes;"&gt;6. How to &lt;/span&gt;&lt;/span&gt;&lt;span class="MsoHyperlink"&gt;&lt;span style="background: white; font-family: Arial; font-size: 14.0pt; mso-bidi-font-family: Arial; mso-no-proof: yes;"&gt;Support more languages&lt;/span&gt;&lt;/span&gt;&lt;span style="display: none; font-size: 14.0pt; mso-hide: screen; mso-no-proof: yes;"&gt;&lt;span&gt;. &lt;/span&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;spanstyle='font-size:14.0pt;display:none;mso-hide:screen;mso-no-proof:yes'&gt;&lt;spanstyle='mso-element:field-begin'&gt;&lt;/span&gt; PAGEREF _Toc301650927 \h &lt;/span&gt;&lt;spanstyle='font-size:14.0pt;mso-no-proof:yes'&gt;&lt;span style='display:none;mso-hide:screen'&gt;&lt;span style='mso-element:field-separator'&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;span style="display: none; font-size: 14.0pt; mso-hide: screen; mso-no-proof: yes;"&gt;11&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:data&gt;08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003300300031003600350030003900320037000000&lt;/w:data&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;span style='font-size:14.0pt;display:none;mso-hide:screen;mso-no-proof:yes'&gt;&lt;span style='mso-element:field-end'&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;/span&gt;&lt;span style="font-size: 14.0pt; mso-no-proof: yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoToc3"&gt;&lt;span&gt;&lt;span class="MsoHyperlink"&gt;&lt;span style="background: white; font-size: 14.0pt; mso-no-proof: yes;"&gt;6.1 How to support more languages in ISpell&lt;/span&gt;&lt;/span&gt;&lt;span style="display: none; font-size: 14.0pt; mso-hide: screen; mso-no-proof: yes;"&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;spanstyle='font-size:14.0pt;display:none;mso-hide:screen;mso-no-proof:yes'&gt;&lt;spanstyle='mso-element:field-begin'&gt;&lt;/span&gt; PAGEREF _Toc301650928 \h &lt;/span&gt;&lt;spanstyle='font-size:14.0pt;mso-no-proof:yes'&gt;&lt;span style='display:none;mso-hide:screen'&gt;&lt;span style='mso-element:field-separator'&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;span style="display: none; font-size: 14.0pt; mso-hide: screen; mso-no-proof: yes;"&gt;12&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:data&gt;08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003300300031003600350030003900320038000000&lt;/w:data&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;span style='font-size:14.0pt;display:none;mso-hide:screen;mso-no-proof:yes'&gt;&lt;span style='mso-element:field-end'&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;/span&gt;&lt;span style="font-size: 14.0pt; mso-no-proof: yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoToc3"&gt;&lt;span&gt;&lt;span class="MsoHyperlink"&gt;&lt;span style="background: white; font-size: 14.0pt; mso-no-proof: yes;"&gt;6.2 How to support more languages in mySepll&lt;/span&gt;&lt;/span&gt;&lt;span style="display: none; font-size: 14.0pt; mso-hide: screen; mso-no-proof: yes;"&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;spanstyle='font-size:14.0pt;display:none;mso-hide:screen;mso-no-proof:yes'&gt;&lt;spanstyle='mso-element:field-begin'&gt;&lt;/span&gt; PAGEREF _Toc301650929 \h &lt;/span&gt;&lt;spanstyle='font-size:14.0pt;mso-no-proof:yes'&gt;&lt;span style='display:none;mso-hide:screen'&gt;&lt;span style='mso-element:field-separator'&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;span style="display: none; font-size: 14.0pt; mso-hide: screen; mso-no-proof: yes;"&gt;13&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:data&gt;08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003300300031003600350030003900320039000000&lt;/w:data&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;span style='font-size:14.0pt;display:none;mso-hide:screen;mso-no-proof:yes'&gt;&lt;span style='mso-element:field-end'&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;/span&gt;&lt;span style="font-size: 14.0pt; mso-no-proof: yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoToc2"&gt;&lt;span&gt;&lt;span class="MsoHyperlink"&gt;&lt;span style="background: white; font-size: 14.0pt; mso-no-proof: yes;"&gt;7. How to extend the enchant function&lt;/span&gt;&lt;/span&gt;&lt;span style="display: none; font-size: 14.0pt; mso-hide: screen; mso-no-proof: yes;"&gt;&lt;span&gt;. &lt;/span&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;spanstyle='font-size:14.0pt;display:none;mso-hide:screen;mso-no-proof:yes'&gt;&lt;spanstyle='mso-element:field-begin'&gt;&lt;/span&gt; PAGEREF _Toc301650930 \h &lt;/span&gt;&lt;spanstyle='font-size:14.0pt;mso-no-proof:yes'&gt;&lt;span style='display:none;mso-hide:screen'&gt;&lt;span style='mso-element:field-separator'&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;span style="display: none; font-size: 14.0pt; mso-hide: screen; mso-no-proof: yes;"&gt;13&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:data&gt;08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003300300031003600350030003900330030000000&lt;/w:data&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;span style='font-size:14.0pt;display:none;mso-hide:screen;mso-no-proof:yes'&gt;&lt;span style='mso-element:field-end'&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;/span&gt;&lt;span style="font-size: 14.0pt; mso-no-proof: yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;Until now, my works in GSoc2011 including four parts as following:&lt;/span&gt;&lt;/span&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;1&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span lang="ZH-CN" style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;．&lt;/span&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;Hyphenation module in Enchant&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoListParagraph" style="margin-left: 21.0pt; mso-char-indent-count: 0; mso-list: l10 level1 lfo1; text-indent: -21.0pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span class="apple-style-span"&gt;&lt;span style="font-family: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings;"&gt;&lt;span&gt;Ø&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span class="apple-style-span"&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;Read and get totally understand the source code of Enchant&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraph" style="margin-left: 21.0pt; mso-char-indent-count: 0; mso-list: l10 level1 lfo1; text-indent: -21.0pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="color: black; font-family: Wingdings; font-size: 12.0pt; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings;"&gt;&lt;span&gt;Ø&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span class="apple-style-span"&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;Reuse the abstract layer of Enchant and add Hyphenation function in Enchant&lt;/span&gt;&lt;/span&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;, so that &lt;span class="apple-style-span"&gt;we can add more language easily&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraph" style="margin-left: 21.0pt; mso-char-indent-count: 0; mso-list: l10 level1 lfo1; text-indent: -21.0pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span class="apple-style-span"&gt;&lt;span style="font-family: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings;"&gt;&lt;span&gt;Ø&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span class="apple-style-span"&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;Deal with more languages&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraph" style="margin-left: 21.0pt; mso-char-indent-count: 0; mso-list: l10 level1 lfo1; text-indent: -21.0pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span class="apple-style-span"&gt;&lt;span style="font-family: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings;"&gt;&lt;span&gt;Ø&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span class="apple-style-span"&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;Add five backend implementation, including ispell, myspell, zemberek, voikko, uspell&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraph" style="margin-left: 21.0pt; mso-char-indent-count: 0; mso-list: l10 level1 lfo1; text-indent: -21.0pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span class="apple-style-span"&gt;&lt;span style="font-family: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings;"&gt;&lt;span&gt;Ø&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span class="apple-style-span"&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;Deal with the spelling-checking module&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraph" style="margin-left: 21.0pt; mso-char-indent-count: 0; text-indent: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;2&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span lang="ZH-CN" style="background: white; color: black; font-family: 宋体; font-size: 12.0pt; mso-ascii-font-family: Arial; mso-bidi-font-family: Arial; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Arial;"&gt;．&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;Call the Hyphenation function in Abiword. &lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraph" style="margin-left: 21.0pt; mso-char-indent-count: 0; mso-list: l6 level1 lfo2; text-indent: -21.0pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="color: black; font-family: Wingdings; font-size: 12.0pt; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings;"&gt;&lt;span&gt;Ø&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span class="apple-style-span"&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;Find split info using enchant_dict_hyphenate&lt;/span&gt;&lt;/span&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraph" style="margin-left: 21.0pt; mso-char-indent-count: 0; mso-list: l6 level1 lfo2; text-indent: -21.0pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="color: black; font-family: Wingdings; font-size: 12.0pt; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings;"&gt;&lt;span&gt;Ø&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span class="apple-style-span"&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;Split Text_Run to split word pass the line width and keep their format&lt;/span&gt;&lt;/span&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraph" style="margin-left: 21.0pt; mso-char-indent-count: 0; mso-list: l6 level1 lfo2; text-indent: -21.0pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span class="apple-style-span"&gt;&lt;span style="font-family: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings;"&gt;&lt;span&gt;Ø&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span class="apple-style-span"&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;Deal with user's operation(select, delete, cut, paste)&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraph" style="margin-left: 21.0pt; mso-char-indent-count: 0; mso-list: l6 level1 lfo2; text-indent: -21.0pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="color: black; font-family: Wingdings; font-size: 12.0pt; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings;"&gt;&lt;span&gt;Ø&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span class="apple-style-span"&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;User can select weather to enable the hyphenation function&lt;/span&gt;&lt;/span&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;3. Simple Implementation of Chinese Spell-Checking in Enchant&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraph" style="margin-left: 21.0pt; mso-char-indent-count: 0; mso-list: l0 level1 lfo3; text-indent: -21.0pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span class="apple-style-span"&gt;&lt;span style="font-family: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings;"&gt;&lt;span&gt;Ø&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span class="apple-style-span"&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;Add a simple spell-check framework for Chinese in Enchant&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraph" style="margin-left: 21.0pt; mso-char-indent-count: 0; mso-list: l0 level1 lfo3; text-indent: -21.0pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span class="apple-style-span"&gt;&lt;span style="font-family: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings;"&gt;&lt;span&gt;Ø&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span class="apple-style-span"&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;Add library to support&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraph" style="margin-left: 21.0pt; mso-char-indent-count: 0; mso-list: l0 level1 lfo3; text-indent: -21.0pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span class="apple-style-span"&gt;&lt;span style="font-family: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings;"&gt;&lt;span&gt;Ø&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span class="apple-style-span"&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;Some survey about Chinese Spell-checking &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraph" style="margin-left: 21.0pt; mso-char-indent-count: 0; text-indent: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;4. Code Re-factor and debug&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraph" style="margin-left: 21.0pt; mso-char-indent-count: 0; mso-list: l5 level1 lfo4; text-indent: -21.0pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="color: black; font-family: Wingdings; font-size: 12.0pt; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings;"&gt;&lt;span&gt;Ø&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;Code Re-factor, include keep the code flexible&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraph" style="margin-left: 21.0pt; mso-char-indent-count: 0; mso-list: l5 level1 lfo4; text-indent: -21.0pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="color: black; font-family: Wingdings; font-size: 12.0pt; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings;"&gt;&lt;span&gt;Ø&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;Debug coding problem&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;5. User interface to manage hyphenation&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraph" style="margin-left: 21.0pt; mso-char-indent-count: 0; mso-list: l2 level1 lfo10; text-indent: -21.0pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span class="apple-style-span"&gt;&lt;span style="font-family: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings;"&gt;&lt;span&gt;Ø&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span class="apple-style-span"&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;Windows, Linux, and Cocoa&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;6. How to Support more languages&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraph" style="margin-left: 21.0pt; mso-char-indent-count: 0; mso-list: l9 level1 lfo11; text-indent: -21.0pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span class="apple-style-span"&gt;&lt;span style="font-family: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings;"&gt;&lt;span&gt;Ø&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span class="apple-style-span"&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;How to support more languages in ISpell&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraph" style="margin-left: 21.0pt; mso-char-indent-count: 0; mso-list: l9 level1 lfo11; text-indent: -21.0pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span class="apple-style-span"&gt;&lt;span style="font-family: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings;"&gt;&lt;span&gt;Ø&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span class="apple-style-span"&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;How to support more languages in mySepll&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="background: white; color: black; font-family: Arial; font-size: 12.0pt; mso-bidi-font-family: Arial;"&gt;7. How to extend the enchant function&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;!--EndFragment--&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4307261008427639518-1711303008392216440?l=chenxiajian.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chenxiajian.blogspot.com/feeds/1711303008392216440/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://chenxiajian.blogspot.com/2011/08/summary-of-what-i-have-done-in-gsoc2011.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4307261008427639518/posts/default/1711303008392216440'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4307261008427639518/posts/default/1711303008392216440'/><link rel='alternate' type='text/html' href='http://chenxiajian.blogspot.com/2011/08/summary-of-what-i-have-done-in-gsoc2011.html' title='Summary of What I have done in GSoc2011'/><author><name>ChenXiajian_My GSoc2011_Hyphenation Support to AbiWord</name><uri>http://www.blogger.com/profile/14915172551075912267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-WxeJ0YrBl7c/TbfhCl7lCbI/AAAAAAAAAAM/ooMSpFc2UZk/s220/%25E7%2585%25A7%25E7%2589%2587.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4307261008427639518.post-7221353982385714117</id><published>2011-08-09T05:24:00.001-07:00</published><updated>2011-08-09T05:24:54.875-07:00</updated><title type='text'>the works in Enchant</title><content type='html'>&lt;span class="Apple-style-span" style="background-color: white; font-family: arial, sans-serif;"&gt;1 add hyphenation function in Enchant&lt;br /&gt;what I have done:&lt;br /&gt;Firstly, I add hyphenation module in Enchant:&lt;br /&gt;================about the code===========&lt;br /&gt;I think we can combine the hyphenation with spell-checking together.&lt;br /&gt;so that we can make the code more flexsible.&lt;br /&gt;In my opinion, we can make code like this:&lt;br /&gt;EnchantDict* enchant_broker_request_dict (EnchantBroker* broker, const&lt;br /&gt;char *const lang); //same as spell-checking&lt;br /&gt;char *enchant_dict_hyphenate(&lt;wbr&gt;&lt;/wbr&gt;EnchantDict *dict, const char *const&lt;br /&gt;word,size_t len);&lt;br /&gt;&lt;br /&gt;===================== 1&lt;br /&gt;In order to achieve this, we need to add &amp;nbsp;hyphenation function in&lt;br /&gt;EnchantDict. something like:&lt;br /&gt;char **(*hyphenate) (struct str_enchant_dict * me,&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; const char *const word, size_t len,&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; size_t * out_n_suggs);&lt;br /&gt;&lt;br /&gt;======================== 2&lt;br /&gt;and the function is implement by the backend.&lt;br /&gt;static char **&lt;br /&gt;ispell_dict_hyphenate (EnchantDict * me, const char *const word,&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; size_t len, size_t * out_n_suggs)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ISpellChecker * checker;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;checker = (ISpellChecker *) me-&amp;gt;user_data;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return checker-&amp;gt;hyphenate (word, len, out_n_suggs);&lt;br /&gt;}&lt;br /&gt;&amp;nbsp;====================3&lt;br /&gt;&amp;nbsp;finally, we set the connetion&lt;br /&gt;&lt;br /&gt;&amp;nbsp;dict-&amp;gt;hyphenate = ispell_dict_hyphenate;&lt;br /&gt;&amp;nbsp;dict-&amp;gt;suggest = hspell_dict_hyphenate;&lt;br /&gt;dict-&amp;gt;suggest = zemberek_dict_hyphenate;&lt;br /&gt;&lt;br /&gt;2 add five backends to support hyphenation&lt;br /&gt;&amp;nbsp; including ispell, myspell, zemberek, voikko, uspell&lt;br /&gt;&lt;br /&gt;we all know that Enchant has eight types of backend to support multi-language.&lt;br /&gt;USpell&lt;br /&gt;HSpell&lt;br /&gt;ASpell&lt;br /&gt;MySpell....&lt;br /&gt;&lt;br /&gt;but I found that in Abiword. we only use two backends:&lt;br /&gt;libenchant_ispell.dll &amp;nbsp;libenchant_myspell.dll&lt;br /&gt;&lt;br /&gt;another surprising thing is that in the dictionary\ispell I can only&lt;br /&gt;find one dic: american.hash(En_US)&lt;br /&gt;and the hunspell dic is empty~~&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;the changes:&lt;br /&gt;1 deleted the unneed connection, such as HSpell&lt;br /&gt;2 add hunspell(myspell) hyphenation code&lt;br /&gt;3 implement hyphenation using hunspell&lt;br /&gt;4 implement hyphenation using Zemberek&lt;br /&gt;&lt;br /&gt;================1 deleted the unneed connection, such as HSpell===========&lt;br /&gt;Hebrew dont need any hyphenation&lt;br /&gt;Yiddish dont need any hyphenation&lt;br /&gt;&lt;br /&gt;====================2 &amp;nbsp;implement hyphenation using hunspell&lt;br /&gt;added files:&lt;br /&gt;hyphen/hnjalloc.h&lt;br /&gt;hyphen/hnjalloc.c&lt;br /&gt;hyphen/hyph_en_US.dic&lt;br /&gt;hyphen/hyphen.c&lt;br /&gt;hyphen/hyphen.gyp&lt;br /&gt;hyphen/hyphen.h&lt;br /&gt;hyphen/hyphen.patch&lt;br /&gt;hyphen/hyphen.tex&lt;br /&gt;&lt;br /&gt;need more tests&lt;br /&gt;&lt;br /&gt;==================== 3 implement hyphenation using Zemberek&lt;br /&gt;&amp;nbsp;just using dbus_g_proxy_call:&lt;br /&gt;&lt;br /&gt;&amp;nbsp;char* Zemberek::hyphenate(const char* word)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;char* result;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;GError *Error = NULL;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (!dbus_g_proxy_call (proxy, "hecele", &amp;amp;Error,&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;G_TYPE_STRING,word,G_TYPE_&lt;wbr&gt;&lt;/wbr&gt;INVALID,&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;G_TYPE_STRV, &amp;amp;result,G_TYPE_INVALID)) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;g_error_free (Error);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return NULL;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;char*result=0;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return result;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The attachment is the updated version today. Now we have four backends&lt;br /&gt;of hyphenantion&lt;br /&gt;1 hunspell: using seperated dic: such as hyph_en_us.dic.&lt;br /&gt;&amp;nbsp; we can download dic from internet&lt;br /&gt;2 libhyphenaiton: the dic is provided by author, sometimes limited&lt;br /&gt;3 zemberek: for Turkis&lt;br /&gt;4 Voikko: for Finnish&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3 the depot of enchant&lt;br /&gt;I just copy the bulid result of enchant:&lt;br /&gt;enchant\bin\Debug\libenchant_&lt;wbr&gt;&lt;/wbr&gt;myspell.dll ----&amp;gt;&lt;br /&gt;abiword\msvc2008\Debug\lib\&lt;wbr&gt;&lt;/wbr&gt;enchant\libenchant_myspell.dll&lt;br /&gt;enchant\bin\Debug\libenchant_&lt;wbr&gt;&lt;/wbr&gt;ispell.dll ----&amp;gt;&lt;br /&gt;abiword\msvc2008\Debug\lib\&lt;wbr&gt;&lt;/wbr&gt;enchant\libenchant_ispell.dll&lt;br /&gt;enchant\bin\Debug\libenchant.&lt;wbr&gt;&lt;/wbr&gt;dll ----&amp;gt;abiword\msvc2008\Debug\&lt;wbr&gt;&lt;/wbr&gt;bin\ibenchant.dll&lt;br /&gt;&lt;br /&gt;3 the implementation of the five backends&lt;br /&gt;4 call hyphenation module of enchant to display the hyphenation-result&lt;br /&gt;in abiword&lt;br /&gt;5 after user's operation, refresh the hyphenation-result accordingly&lt;br /&gt;&amp;nbsp; include user adding new word, delete word, copy word, cut word&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;6 test in Linux&lt;br /&gt;todo:&lt;br /&gt;1 Fully support hyphenation in Abiword&lt;br /&gt;2 Support more language besides En_us&lt;br /&gt;3 Some tests in Linux(Unix)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Still to improve:&lt;br /&gt;1 code re-factor&lt;br /&gt;2 deal with more language&lt;br /&gt;3 include more user's operation(such as operate with picture may&lt;br /&gt;influence the hyphenation result)&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4307261008427639518-7221353982385714117?l=chenxiajian.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chenxiajian.blogspot.com/feeds/7221353982385714117/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://chenxiajian.blogspot.com/2011/08/works-in-enchant.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4307261008427639518/posts/default/7221353982385714117'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4307261008427639518/posts/default/7221353982385714117'/><link rel='alternate' type='text/html' href='http://chenxiajian.blogspot.com/2011/08/works-in-enchant.html' title='the works in Enchant'/><author><name>ChenXiajian_My GSoc2011_Hyphenation Support to AbiWord</name><uri>http://www.blogger.com/profile/14915172551075912267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-WxeJ0YrBl7c/TbfhCl7lCbI/AAAAAAAAAAM/ooMSpFc2UZk/s220/%25E7%2585%25A7%25E7%2589%2587.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4307261008427639518.post-1741388215804648986</id><published>2011-08-09T05:23:00.001-07:00</published><updated>2011-08-09T05:23:47.694-07:00</updated><title type='text'>the summary about What I have done in GSoc2011</title><content type='html'>&lt;span class="Apple-style-span" style="background-color: white; font-family: arial, sans-serif; font-size: 13px;"&gt;my works in GSoc2011 including two parts.&lt;br /&gt;1 the hyphenation module in Enchant&lt;br /&gt;&amp;nbsp;Key: to reuse the abstract layer of Enchant and add Hyphenation function&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;we can add more language easy&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Deal with more languages&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: arial, sans-serif; font-size: 13px;"&gt;2 &amp;nbsp;call in Abiword. including:&lt;br /&gt;&amp;nbsp; &amp;nbsp;split run&lt;br /&gt;&amp;nbsp; &amp;nbsp;find split info&lt;br /&gt;&amp;nbsp; &amp;nbsp;deal with user's operation&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4307261008427639518-1741388215804648986?l=chenxiajian.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chenxiajian.blogspot.com/feeds/1741388215804648986/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://chenxiajian.blogspot.com/2011/08/summary-about-what-i-have-done-in.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4307261008427639518/posts/default/1741388215804648986'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4307261008427639518/posts/default/1741388215804648986'/><link rel='alternate' type='text/html' href='http://chenxiajian.blogspot.com/2011/08/summary-about-what-i-have-done-in.html' title='the summary about What I have done in GSoc2011'/><author><name>ChenXiajian_My GSoc2011_Hyphenation Support to AbiWord</name><uri>http://www.blogger.com/profile/14915172551075912267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-WxeJ0YrBl7c/TbfhCl7lCbI/AAAAAAAAAAM/ooMSpFc2UZk/s220/%25E7%2585%25A7%25E7%2589%2587.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4307261008427639518.post-4198771421799234618</id><published>2011-05-17T08:32:00.001-07:00</published><updated>2011-05-17T08:32:13.862-07:00</updated><title type='text'>new version, but a lot of question~confusing</title><content type='html'>&lt;div&gt;Hi,&amp;nbsp;All.&lt;/div&gt;&lt;div&gt;I&amp;nbsp;am&amp;nbsp;working&amp;nbsp;on&amp;nbsp;GSoc&amp;nbsp;Abiword&amp;nbsp;this&amp;nbsp;summer&amp;nbsp;to&amp;nbsp;implement&amp;nbsp;the&amp;nbsp;hyphenation&amp;nbsp;support&amp;nbsp;in&amp;nbsp;Abiword.&amp;nbsp;Before&amp;nbsp;I&amp;nbsp;implement&amp;nbsp;the&amp;nbsp;function,&amp;nbsp;I&amp;nbsp;find&amp;nbsp;some&amp;nbsp;code&amp;nbsp;&amp;nbsp;in&amp;nbsp;Abiword&amp;nbsp;for&amp;nbsp;spell-checking.&amp;nbsp;so&amp;nbsp;I&amp;nbsp;follow&amp;nbsp;the&amp;nbsp;code&amp;nbsp;to&amp;nbsp;implement&amp;nbsp;hyphenation&amp;nbsp;function&amp;nbsp;using&amp;nbsp;enchant.&amp;nbsp;And&amp;nbsp;I&amp;nbsp;have&amp;nbsp;some&amp;nbsp;questiones&amp;nbsp;about&amp;nbsp;enchant.&amp;nbsp;thanks&lt;/div&gt;&lt;div&gt;I&amp;nbsp;want&amp;nbsp;to&amp;nbsp;use&amp;nbsp;enchant&amp;nbsp;to&amp;nbsp;implement&amp;nbsp;hyphenation&amp;nbsp;to&amp;nbsp;keep&amp;nbsp;the&amp;nbsp;dictionary&amp;nbsp;seperately.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;the&amp;nbsp;attachment1&amp;nbsp;is&amp;nbsp;the&amp;nbsp;main&amp;nbsp;class&amp;nbsp;diagram&lt;/div&gt;&lt;div&gt;the&amp;nbsp;attachment2&amp;nbsp;is&amp;nbsp;the&amp;nbsp;code&amp;nbsp;I&amp;nbsp;implement&amp;nbsp;the&amp;nbsp;hyphenation&amp;nbsp;follow&amp;nbsp;spell-checking&amp;nbsp;code&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;My&amp;nbsp;question&amp;nbsp;is:&lt;/div&gt;&lt;div&gt;1.&amp;nbsp;Is&amp;nbsp;there&amp;nbsp;some&amp;nbsp;funcition&amp;nbsp;for&amp;nbsp;hyphenation&amp;nbsp;like&amp;nbsp;enchant_dict_hyphenate&amp;nbsp;in&amp;nbsp;Enchant?&amp;nbsp;&lt;/div&gt;&lt;div&gt;2.&amp;nbsp;how&amp;nbsp;the&amp;nbsp;enchant&amp;nbsp;achieve&amp;nbsp;the&amp;nbsp;function?&amp;nbsp;I&amp;nbsp;can&amp;nbsp;track&amp;nbsp;in&amp;nbsp;the&amp;nbsp;code&amp;nbsp;in&amp;nbsp;enchant~&lt;/div&gt;&lt;div&gt;3.&amp;nbsp;give&amp;nbsp;some&amp;nbsp;suggestion&amp;nbsp;to&amp;nbsp;me&amp;nbsp;about&amp;nbsp;my&amp;nbsp;codes,&amp;nbsp;thanks&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;Thanks&amp;nbsp;very&amp;nbsp;much~&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4307261008427639518-4198771421799234618?l=chenxiajian.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chenxiajian.blogspot.com/feeds/4198771421799234618/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://chenxiajian.blogspot.com/2011/05/new-version-but-lot-of.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4307261008427639518/posts/default/4198771421799234618'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4307261008427639518/posts/default/4198771421799234618'/><link rel='alternate' type='text/html' href='http://chenxiajian.blogspot.com/2011/05/new-version-but-lot-of.html' title='new version, but a lot of question~confusing'/><author><name>ChenXiajian_My GSoc2011_Hyphenation Support to AbiWord</name><uri>http://www.blogger.com/profile/14915172551075912267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-WxeJ0YrBl7c/TbfhCl7lCbI/AAAAAAAAAAM/ooMSpFc2UZk/s220/%25E7%2585%25A7%25E7%2589%2587.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4307261008427639518.post-1374380917380762376</id><published>2011-05-11T18:42:00.000-07:00</published><updated>2011-05-13T13:32:13.080-07:00</updated><title type='text'>a smiple version.</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: 'lucida grande', tahoma, verdana, arial, sans-serif; font-size: 14px; line-height: 13px;"&gt;a smiple version.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'lucida grande', tahoma, verdana, arial, sans-serif; font-size: 14px; line-height: 13px;"&gt;You own the copyright for whatever work you do. All of your work must&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'lucida grande', tahoma, verdana, arial, sans-serif; font-size: 14px; line-height: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'lucida grande', tahoma, verdana, arial, sans-serif; font-size: 14px; line-height: 13px;"&gt;be licensed under the GPL2 or later. Please add your name + email&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'lucida grande', tahoma, verdana, arial, sans-serif; font-size: 14px; line-height: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'lucida grande', tahoma, verdana, arial, sans-serif; font-size: 14px; line-height: 13px;"&gt;address to the headers of each file that you touch.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4307261008427639518-1374380917380762376?l=chenxiajian.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chenxiajian.blogspot.com/feeds/1374380917380762376/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://chenxiajian.blogspot.com/2011/05/smiple-version.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4307261008427639518/posts/default/1374380917380762376'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4307261008427639518/posts/default/1374380917380762376'/><link rel='alternate' type='text/html' href='http://chenxiajian.blogspot.com/2011/05/smiple-version.html' title='a smiple version.'/><author><name>ChenXiajian_My GSoc2011_Hyphenation Support to AbiWord</name><uri>http://www.blogger.com/profile/14915172551075912267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-WxeJ0YrBl7c/TbfhCl7lCbI/AAAAAAAAAAM/ooMSpFc2UZk/s220/%25E7%2585%25A7%25E7%2589%2587.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4307261008427639518.post-5648143043123097526</id><published>2011-05-04T08:27:00.001-07:00</published><updated>2011-05-04T08:27:46.638-07:00</updated><title type='text'>Start coding about Hyphenation in ABiword now. One week I can make it a preliminary result~~~</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: 'lucida grande', tahoma, verdana, arial, sans-serif; font-size: 14px; line-height: 13px;"&gt;Start coding about Hyphenation in ABiword now. One week I can make it a preliminary result~~~&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'lucida grande', tahoma, verdana, arial, sans-serif; font-size: 14px; line-height: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'lucida grande', tahoma, verdana, arial, sans-serif; font-size: 14px; line-height: 13px;"&gt;wait for me~&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4307261008427639518-5648143043123097526?l=chenxiajian.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chenxiajian.blogspot.com/feeds/5648143043123097526/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://chenxiajian.blogspot.com/2011/05/start-coding-about-hyphenation-in.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4307261008427639518/posts/default/5648143043123097526'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4307261008427639518/posts/default/5648143043123097526'/><link rel='alternate' type='text/html' href='http://chenxiajian.blogspot.com/2011/05/start-coding-about-hyphenation-in.html' title='Start coding about Hyphenation in ABiword now. One week I can make it a preliminary result~~~'/><author><name>ChenXiajian_My GSoc2011_Hyphenation Support to AbiWord</name><uri>http://www.blogger.com/profile/14915172551075912267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-WxeJ0YrBl7c/TbfhCl7lCbI/AAAAAAAAAAM/ooMSpFc2UZk/s220/%25E7%2585%25A7%25E7%2589%2587.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4307261008427639518.post-4577834859507478524</id><published>2011-04-27T08:25:00.000-07:00</published><updated>2011-04-27T08:25:22.812-07:00</updated><title type='text'>patch file_Implement progress bar in windows</title><content type='html'>The patch file I have modified in the following spaces, to keep same with the source code:&lt;br /&gt;==================1 ap_usb_ProgressListener======&lt;br /&gt;create a class to deal with ProgressListener(the same as the gtk code). seperate from the statusBarListener&lt;br /&gt;class ap_usb_ProgressListener : public AP_StatusBarFieldListener&lt;br /&gt;{&lt;br /&gt;public:&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;.............&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;virtual void notify(); &amp;nbsp; //deal with progressbar update&lt;br /&gt;protected:&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;HWND m_ProgressWND;&lt;br /&gt;};&lt;br /&gt;==================2======&lt;br /&gt;and in the notify function deal with the update: &amp;nbsp; and i find the place to add pulse process bar&lt;br /&gt;void ap_usb_ProgressListener::notify()&lt;br /&gt;{ &amp;nbsp; &lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;if(pProgress-&amp;gt;isDefinate())&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;{&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;double fraction = pProgress-&amp;gt;getFraction();&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;SendMessage(m_ProgressWND,PBM_SETPOS,fraction*100,0);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;}&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;else&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;{ &amp;nbsp; //here pulse process bar &amp;nbsp;&amp;lt;--------------pulse process bar&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;}&lt;br /&gt;}&lt;br /&gt;===========================3============&lt;br /&gt;In this situation, I need to build the connection between ap_usb_ProgressListener and ProcessBar in the createWindow() &amp;nbsp; &amp;nbsp;in this place, your code have one error(the elseif is in the wrong place)&lt;br /&gt;else if(pf-&amp;gt;getFillMethod() == PROGRESS_BAR)&lt;br /&gt;{&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;pf-&amp;gt;setListener((AP_StatusBarFieldListener *)(new ap_usb_ProgressListener(pf, m_hwndProgressBar)));&lt;br /&gt;}&lt;br /&gt;===========================4============&lt;br /&gt;Remove unused function and variables&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4307261008427639518-4577834859507478524?l=chenxiajian.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chenxiajian.blogspot.com/feeds/4577834859507478524/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://chenxiajian.blogspot.com/2011/04/patch-fileimplement-progress-bar-in.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4307261008427639518/posts/default/4577834859507478524'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4307261008427639518/posts/default/4577834859507478524'/><link rel='alternate' type='text/html' href='http://chenxiajian.blogspot.com/2011/04/patch-fileimplement-progress-bar-in.html' title='patch file_Implement progress bar in windows'/><author><name>ChenXiajian_My GSoc2011_Hyphenation Support to AbiWord</name><uri>http://www.blogger.com/profile/14915172551075912267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-WxeJ0YrBl7c/TbfhCl7lCbI/AAAAAAAAAAM/ooMSpFc2UZk/s220/%25E7%2585%25A7%25E7%2589%2587.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4307261008427639518.post-7153600567824064116</id><published>2011-04-27T07:26:00.003-07:00</published><updated>2011-04-27T07:26:43.258-07:00</updated><title type='text'>Why should we expose the SpellCheck interface in Enchant</title><content type='html'>I have read much code about enchant and want to implement hyphenation using enchant&lt;br /&gt;but I have one question &amp;nbsp;in the FL_DocLayout.cpp where spellcheck used. &amp;nbsp;I think the SpeellManager is enough to deal with our problem, Why should we expose the SpellCheck interface in Enchant. that is not safe&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;one more question, if we use enchant for abstraction of dictionaries. but most dictionaries have different format. how to &amp;nbsp;analysis the different format of dictionary&lt;br /&gt;I think the analysis of &amp;nbsp;dictionary is done by the library the dictionay provide, the &amp;nbsp;enchant is just Responsible for call it&lt;br /&gt;&lt;br /&gt;some different idea?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4307261008427639518-7153600567824064116?l=chenxiajian.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chenxiajian.blogspot.com/feeds/7153600567824064116/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://chenxiajian.blogspot.com/2011/04/why-should-we-expose-spellcheck.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4307261008427639518/posts/default/7153600567824064116'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4307261008427639518/posts/default/7153600567824064116'/><link rel='alternate' type='text/html' href='http://chenxiajian.blogspot.com/2011/04/why-should-we-expose-spellcheck.html' title='Why should we expose the SpellCheck interface in Enchant'/><author><name>ChenXiajian_My GSoc2011_Hyphenation Support to AbiWord</name><uri>http://www.blogger.com/profile/14915172551075912267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-WxeJ0YrBl7c/TbfhCl7lCbI/AAAAAAAAAAM/ooMSpFc2UZk/s220/%25E7%2585%25A7%25E7%2589%2587.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4307261008427639518.post-9086305057578832377</id><published>2011-04-27T07:24:00.002-07:00</published><updated>2011-04-27T07:24:47.701-07:00</updated><title type='text'>Share of some understanding about Source code</title><content type='html'>&lt;div&gt;Recently&amp;nbsp;I&amp;nbsp;try&amp;nbsp;to&amp;nbsp;implement&amp;nbsp;the&amp;nbsp;process&amp;nbsp;bar&amp;nbsp;in&amp;nbsp;windows.&amp;nbsp;and&amp;nbsp;I&amp;nbsp;read&amp;nbsp;a&amp;nbsp;lot&amp;nbsp;of&amp;nbsp;source&amp;nbsp;code,&amp;nbsp;I&amp;nbsp;make&amp;nbsp;a&amp;nbsp;summary&amp;nbsp;of&amp;nbsp;that.&amp;nbsp;I&amp;nbsp;want&amp;nbsp;to&amp;nbsp;share&amp;nbsp;with&amp;nbsp;you&amp;nbsp;all,&amp;nbsp;I&amp;nbsp;hope&amp;nbsp;that&amp;nbsp;is&amp;nbsp;helpfull&amp;nbsp;to&amp;nbsp;you&amp;nbsp;all.&amp;nbsp;&lt;/div&gt;&lt;div&gt;Anyone&amp;nbsp;interested&amp;nbsp;in&amp;nbsp;that&amp;nbsp;pls&amp;nbsp;disscus&amp;nbsp;with&amp;nbsp;me,&amp;nbsp;Thank&amp;nbsp;you.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;the&amp;nbsp;attachment&amp;nbsp;is&amp;nbsp;the&amp;nbsp;class&amp;nbsp;diagram&amp;nbsp;in&amp;nbsp;UML&amp;nbsp;format.&amp;nbsp;we&amp;nbsp;can&amp;nbsp;see&amp;nbsp;that:&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;1.&amp;nbsp;the&amp;nbsp;AP_StatusBar&amp;nbsp;is&amp;nbsp;an&amp;nbsp;abstract&amp;nbsp;class&amp;nbsp;represent&amp;nbsp;the&amp;nbsp;status&amp;nbsp;bar.&lt;/div&gt;&lt;div&gt;&amp;nbsp;And&amp;nbsp;the&amp;nbsp;Windows&amp;nbsp;AP_Win32StatusBar&amp;nbsp;inherited&amp;nbsp;from&amp;nbsp;AP_StatusBar&lt;/div&gt;&lt;div&gt;And&amp;nbsp;in&amp;nbsp;the&amp;nbsp;AP_StatusBar&amp;nbsp;contain&amp;nbsp;the&amp;nbsp;interface&amp;nbsp;elements——m_vecFields(vector&amp;nbsp;of&amp;nbsp;StatusBarField)&amp;nbsp;and&amp;nbsp;processField(processBar).&amp;nbsp;&lt;/div&gt;&lt;div&gt;But&amp;nbsp;they&amp;nbsp;are&amp;nbsp;all&amp;nbsp;the&amp;nbsp;abstract&amp;nbsp;class&amp;nbsp;AP_StatusBarField.&amp;nbsp;And&amp;nbsp;the&amp;nbsp;concreate&amp;nbsp;class&amp;nbsp;is&amp;nbsp;AP_StatusBarFidld_ProcessBar&amp;nbsp;/&amp;nbsp;ap_sbf_pageInfo&amp;nbsp;/ap_sbf_StatusMessage/&amp;nbsp;ap_sbf_InputMode&amp;nbsp;/&amp;nbsp;ap_sbf_Language.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;AP_StatusBarField_ProcessBar:&amp;nbsp;present&amp;nbsp;the&amp;nbsp;processBar&lt;/div&gt;&lt;div&gt;ap_sbf_pageInfo:&amp;nbsp;present&amp;nbsp;pageInfo&lt;/div&gt;&lt;div&gt;ap_sbf_StatusMessage:present&amp;nbsp;StatusMessage&lt;/div&gt;&lt;div&gt;ap_sbf_InputMode:&amp;nbsp;present&amp;nbsp;InputMode&lt;/div&gt;&lt;div&gt;ap_sbf_Language:&amp;nbsp;present&amp;nbsp;Language&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;2.&amp;nbsp;And&amp;nbsp;the&amp;nbsp;event-handler&amp;nbsp;of&amp;nbsp;the&amp;nbsp;interface&amp;nbsp;elements&amp;nbsp;are&amp;nbsp;all&amp;nbsp;in&amp;nbsp;the&amp;nbsp;following&amp;nbsp;format:&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;firstly,&amp;nbsp;creating&amp;nbsp;the&amp;nbsp;event-handler&amp;nbsp;Listener&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;then&amp;nbsp;build&amp;nbsp;the&amp;nbsp;connection&amp;nbsp;between&amp;nbsp;them&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;override&amp;nbsp;the&amp;nbsp;notify&amp;nbsp;function&amp;nbsp;in&amp;nbsp;the&amp;nbsp;Listener&amp;nbsp;to&amp;nbsp;handler&amp;nbsp;the&amp;nbsp;event&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;every&amp;nbsp;interface&amp;nbsp;element&amp;nbsp;has&amp;nbsp;Listener&amp;nbsp;class:&lt;/div&gt;&lt;div&gt;AP_StatusBarFidld_ProcessBar:&amp;nbsp;ap_usb_processListener&lt;/div&gt;&lt;div&gt;ap_sbf_pageInfo:&amp;nbsp;ap_usb_TextListener&lt;/div&gt;&lt;div&gt;ap_sbf_StatusMessage:&amp;nbsp;ap_usb_TextListener&lt;/div&gt;&lt;div&gt;ap_sbf_InputMode:&amp;nbsp;ap_usb_TextListener&lt;/div&gt;&lt;div&gt;ap_sbf_Language:&amp;nbsp;ap_usb_TextListener&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;all&amp;nbsp;the&amp;nbsp;listener&amp;nbsp;are&amp;nbsp;all&amp;nbsp;inherit&amp;nbsp;from&amp;nbsp;the&amp;nbsp;Ap_StatusBarFieldListener.&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;and&amp;nbsp;the&amp;nbsp;event&amp;nbsp;are&amp;nbsp;all&amp;nbsp;handled&amp;nbsp;in&amp;nbsp;the&amp;nbsp;notify&amp;nbsp;function.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;3.&amp;nbsp;in&amp;nbsp;the&amp;nbsp;AP_Win32StatusBar.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;the&amp;nbsp;createWindow&amp;nbsp;function&amp;nbsp;create&amp;nbsp;the&amp;nbsp;HWNDs&amp;nbsp;and&amp;nbsp;make&amp;nbsp;connection&amp;nbsp;with&amp;nbsp;their&amp;nbsp;listener&lt;/div&gt;&lt;div&gt;AP_Win32StatusBar::createWindow:&lt;/div&gt;&lt;div&gt;for&amp;nbsp;(UT_sint32&amp;nbsp;k&amp;nbsp;=&amp;nbsp;0;&amp;nbsp;k&amp;nbsp;&amp;lt; &amp;nbsp;getFields()-&amp;gt; getItemCount();&amp;nbsp;k++)&amp;nbsp;&lt;/div&gt;&lt;div&gt;{&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pf-&amp;gt; setListener(...));&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4307261008427639518-9086305057578832377?l=chenxiajian.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chenxiajian.blogspot.com/feeds/9086305057578832377/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://chenxiajian.blogspot.com/2011/04/share-of-some-understanding-about.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4307261008427639518/posts/default/9086305057578832377'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4307261008427639518/posts/default/9086305057578832377'/><link rel='alternate' type='text/html' href='http://chenxiajian.blogspot.com/2011/04/share-of-some-understanding-about.html' title='Share of some understanding about Source code'/><author><name>ChenXiajian_My GSoc2011_Hyphenation Support to AbiWord</name><uri>http://www.blogger.com/profile/14915172551075912267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-WxeJ0YrBl7c/TbfhCl7lCbI/AAAAAAAAAAM/ooMSpFc2UZk/s220/%25E7%2585%25A7%25E7%2589%2587.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4307261008427639518.post-3013988871411249406</id><published>2011-04-27T07:24:00.000-07:00</published><updated>2011-04-27T07:24:00.765-07:00</updated><title type='text'>libhyphenate</title><content type='html'>&lt;div&gt;&lt;span style="color: navy;"&gt;I&amp;nbsp;use&amp;nbsp;libhyphenate&amp;nbsp;to&amp;nbsp;implement&amp;nbsp;the&amp;nbsp;hyphenation  sucessfully.&amp;nbsp;And&amp;nbsp;then&amp;nbsp;refer&amp;nbsp;to&amp;nbsp;the&amp;nbsp;source&amp;nbsp;code&amp;nbsp;of&amp;nbsp;libhyphenate.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: navy;"&gt;In&amp;nbsp;libhyphenate,&amp;nbsp;it&amp;nbsp;is&amp;nbsp;easy&amp;nbsp;to&amp;nbsp;carry&amp;nbsp;out&amp;nbsp;the&amp;nbsp;hyphenation.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: navy;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: navy;"&gt;#include&amp;nbsp;&amp;lt;libhyphenate\Hyphenator.h&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: navy;"&gt;#include&amp;nbsp;&amp;lt;iostream&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: navy;"&gt;using&amp;nbsp;namespace&amp;nbsp;Hyphenate;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: navy;"&gt;using&amp;nbsp;namespace&amp;nbsp;std;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: navy;"&gt;int&amp;nbsp;main&amp;nbsp;()&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: navy;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Hyphenator(RFC_3066::Language("en")).hyphenate("example.txt","output.txt")&amp;nbsp;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: navy;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;0;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: navy;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: navy;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;span style="color: navy;"&gt;the input is the txt file, and the output file  is correctly in the hyphenation format.  now,&amp;nbsp;I&amp;nbsp;read&amp;nbsp;the&amp;nbsp;source&amp;nbsp;code&amp;nbsp;of&amp;nbsp;libhyphenate&amp;nbsp;to&amp;nbsp;find&amp;nbsp;what&amp;nbsp;we&amp;nbsp;can&amp;nbsp;refer&amp;nbsp;to&amp;nbsp;libhyphenate.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: navy;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;span style="color: navy;"&gt;&lt;strong&gt;&lt;span&gt;But I found one problem, the  dictionary is not enough in the libhyphenate. And I replace with &lt;span lang="EN-US" style="font-family: 'Calibri','sans-serif'; font-size: 10.5pt; mso-ansi-language: EN-US; mso-ascii-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-font-size: 11.0pt; mso-bidi-language: AR-SA; mso-bidi-theme-font: minor-bidi; mso-fareast-font-family: 宋体; mso-fareast-language: ZH-CN; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin;"&gt;Webster's New International Dictionary , also have some problems,  because the interface is different.&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: navy;"&gt;&lt;span lang="EN-US" style="font-family: 'Calibri','sans-serif'; font-size: 10.5pt; mso-ansi-language: EN-US; mso-ascii-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-font-size: 11.0pt; mso-bidi-language: AR-SA; mso-bidi-theme-font: minor-bidi; mso-fareast-font-family: 宋体; mso-fareast-language: ZH-CN; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin;"&gt;&lt;span&gt;&lt;strong&gt;Although the author of libhyphenate make the  algorithm and the dictionary seperately, so that you can add your own&amp;nbsp;dictionary  to deal with&amp;nbsp;your language.&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4307261008427639518-3013988871411249406?l=chenxiajian.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chenxiajian.blogspot.com/feeds/3013988871411249406/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://chenxiajian.blogspot.com/2011/04/libhyphenate.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4307261008427639518/posts/default/3013988871411249406'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4307261008427639518/posts/default/3013988871411249406'/><link rel='alternate' type='text/html' href='http://chenxiajian.blogspot.com/2011/04/libhyphenate.html' title='libhyphenate'/><author><name>ChenXiajian_My GSoc2011_Hyphenation Support to AbiWord</name><uri>http://www.blogger.com/profile/14915172551075912267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-WxeJ0YrBl7c/TbfhCl7lCbI/AAAAAAAAAAM/ooMSpFc2UZk/s220/%25E7%2585%25A7%25E7%2589%2587.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4307261008427639518.post-2645056688343138268</id><published>2011-04-27T07:22:00.001-07:00</published><updated>2011-04-27T07:22:43.173-07:00</updated><title type='text'>Some Open Source libraries about hyphenation</title><content type='html'>&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="color: navy; font-size: small;"&gt;=============================1======================&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="color: navy; font-size: small;"&gt;I think hyphenation is locale dependent because in  different languages, some data type such as number and date are different from  each other. So we must find a method support for many different Languages  besides English. AbiWord is the word processor for everybody, not just English  speakers. &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: navy;"&gt;=============3&amp;nbsp;Some&amp;nbsp;Open&amp;nbsp;Source&amp;nbsp;libraries&amp;nbsp;about&amp;nbsp;hyphenation&amp;nbsp;=========================&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: navy;"&gt;I&amp;nbsp;have&amp;nbsp;searched&amp;nbsp;some&amp;nbsp;Open&amp;nbsp;Source&amp;nbsp;libraries&amp;nbsp;we&amp;nbsp;can&amp;nbsp;use&amp;nbsp;to&amp;nbsp;determine&amp;nbsp;word&amp;nbsp;break&amp;nbsp;points.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: navy;"&gt;There&amp;nbsp;is&amp;nbsp;a&amp;nbsp;wide&amp;nbsp;range&amp;nbsp;of&amp;nbsp;different&amp;nbsp;free&amp;nbsp;open&amp;nbsp;source&amp;nbsp;solutions&amp;nbsp;for&amp;nbsp;spell-checking&amp;nbsp;and&amp;nbsp;hyphenation&amp;nbsp;by&amp;nbsp;computer.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: navy;"&gt;1.&amp;nbsp;&amp;nbsp;libhyphenate-&amp;nbsp;An&amp;nbsp;hyphenation&amp;nbsp;library&amp;nbsp;for&amp;nbsp;C++,&amp;nbsp;LGPL&amp;nbsp;Hyphenation&amp;nbsp;Library.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: navy;"&gt;Developer&amp;nbsp;Steve&amp;nbsp;Wolter&amp;nbsp;has&amp;nbsp;released&amp;nbsp;Version&amp;nbsp;1.0&amp;nbsp;of&amp;nbsp;Libhyphenate,&amp;nbsp;his&amp;nbsp;C++&amp;nbsp;hyphenation&amp;nbsp;library.&amp;nbsp;Libhyphenate&amp;nbsp;implements&amp;nbsp;the&amp;nbsp;hyphenation&amp;nbsp;algorithm&amp;nbsp;also&amp;nbsp;used&amp;nbsp;by&amp;nbsp;the&amp;nbsp;Tex&amp;nbsp;layout&amp;nbsp;system.&amp;nbsp;The&amp;nbsp;library&amp;nbsp;currently&amp;nbsp;supports&amp;nbsp;hyphenation&amp;nbsp;libraries&amp;nbsp;for&amp;nbsp;English,&amp;nbsp;German&amp;nbsp;and&amp;nbsp;French.&amp;nbsp;More&amp;nbsp;languages&amp;nbsp;can&amp;nbsp;be&amp;nbsp;generated&amp;nbsp;from&amp;nbsp;the&amp;nbsp;corresponding&amp;nbsp;Tex&amp;nbsp;files.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: navy;"&gt;2.&amp;nbsp;&amp;nbsp;In&amp;nbsp;the&amp;nbsp;thesis”&amp;nbsp;Word&amp;nbsp;Hyphenation&amp;nbsp;by&amp;nbsp;Computer”&amp;nbsp;mention&amp;nbsp;a&amp;nbsp;lot&amp;nbsp;of&amp;nbsp;library.&amp;nbsp;I&amp;nbsp;think&amp;nbsp;we&amp;nbsp;can&amp;nbsp;read&amp;nbsp;that.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: navy;"&gt;3.&amp;nbsp;&amp;nbsp;wordaxe&amp;nbsp;:&amp;nbsp;Hyphenation&amp;nbsp;by&amp;nbsp;decomposition&amp;nbsp;of&amp;nbsp;compound&amp;nbsp;words&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: navy;"&gt;4.&amp;nbsp;&amp;nbsp;SyFi:&amp;nbsp;A&amp;nbsp;C++&amp;nbsp;library&amp;nbsp;built&amp;nbsp;on&amp;nbsp;top&amp;nbsp;of&amp;nbsp;the&amp;nbsp;symbolic&amp;nbsp;math&amp;nbsp;library&amp;nbsp;GiNaC.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: navy;"&gt;===============some&amp;nbsp;python&amp;nbsp;and&amp;nbsp;other&amp;nbsp;language&amp;nbsp;libraries&amp;nbsp;we&amp;nbsp;can&amp;nbsp;refer&amp;nbsp;to===============&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: navy;"&gt;1&amp;nbsp;&amp;nbsp;PyHyphen:&amp;nbsp;Hyphenation&amp;nbsp;module&amp;nbsp;for&amp;nbsp;Python&amp;nbsp;programs&amp;nbsp;with&amp;nbsp;the&amp;nbsp;ability&amp;nbsp;to&amp;nbsp;automatically&amp;nbsp;hyphenate&amp;nbsp;words&amp;nbsp;using&amp;nbsp;an&amp;nbsp;algorithm&amp;nbsp;which&amp;nbsp;is&amp;nbsp;based&amp;nbsp;on&amp;nbsp;decomposition&amp;nbsp;of&amp;nbsp;compound&amp;nbsp;words&amp;nbsp;into&amp;nbsp;base&amp;nbsp;words,&amp;nbsp;and&amp;nbsp;is&amp;nbsp;named&amp;nbsp;DCWHyphenator&amp;nbsp;in&amp;nbsp;the&amp;nbsp;code.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: navy;"&gt;2&amp;nbsp;&amp;nbsp;Pslib&amp;nbsp;is&amp;nbsp;a&amp;nbsp;C-library&amp;nbsp;to&amp;nbsp;create&amp;nbsp;PostScript&amp;nbsp;files&amp;nbsp;on&amp;nbsp;the&amp;nbsp;fly.&amp;nbsp;It&amp;nbsp;offers&amp;nbsp;text&amp;nbsp;rendering&amp;nbsp;including&amp;nbsp;hyphenation,&amp;nbsp;kerning&amp;nbsp;and&amp;nbsp;ligatures.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: navy;"&gt;3&amp;nbsp;&amp;nbsp;XHTML&amp;nbsp;hyphenator:&amp;nbsp;XHTML&amp;nbsp;hyphenator&amp;nbsp;is&amp;nbsp;a&amp;nbsp;hyphenation&amp;nbsp;program&amp;nbsp;for&amp;nbsp;XHTML&amp;nbsp;documents.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: navy;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span style="color: navy;"&gt;I&amp;nbsp;will&amp;nbsp;spend&amp;nbsp;more&amp;nbsp;time&amp;nbsp;to&amp;nbsp;care&amp;nbsp;about&amp;nbsp;the&amp;nbsp;C++&amp;nbsp;hyphenation&amp;nbsp;library.&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;/span&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4307261008427639518-2645056688343138268?l=chenxiajian.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chenxiajian.blogspot.com/feeds/2645056688343138268/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://chenxiajian.blogspot.com/2011/04/some-open-source-libraries-about.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4307261008427639518/posts/default/2645056688343138268'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4307261008427639518/posts/default/2645056688343138268'/><link rel='alternate' type='text/html' href='http://chenxiajian.blogspot.com/2011/04/some-open-source-libraries-about.html' title='Some Open Source libraries about hyphenation'/><author><name>ChenXiajian_My GSoc2011_Hyphenation Support to AbiWord</name><uri>http://www.blogger.com/profile/14915172551075912267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-WxeJ0YrBl7c/TbfhCl7lCbI/AAAAAAAAAAM/ooMSpFc2UZk/s220/%25E7%2585%25A7%25E7%2589%2587.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4307261008427639518.post-4332214611683601456</id><published>2011-04-27T02:31:00.000-07:00</published><updated>2011-04-27T02:31:36.239-07:00</updated><title type='text'>Time Plan about implementation of Hyphenation support in AbiWord</title><content type='html'>First version of my time plan. I will make a detailed disscusion with my mentor&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="center" class="MsoNormal" style="text-align: center;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="color: #f79646; font-size: 24.0pt; mso-bidi-font-size: 11.0pt; mso-themecolor: accent6;"&gt;Time Plan about implementation of Hyphenation support in AbiWord&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div align="right" class="MsoNormal" style="mso-outline-level: 1; text-align: right;"&gt;&lt;span lang="EN-US" style="color: #d99594; font-size: 20.0pt; mso-bidi-font-size: 11.0pt; mso-themecolor: accent2; mso-themetint: 153;"&gt;Chen Xiajian&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="right" class="MsoNormal" style="mso-outline-level: 1; text-align: right;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;table border="1" cellpadding="0" cellspacing="0" class="MsoNormalTable" style="background: #F9F9F9; border-collapse: collapse; border: none; mso-border-alt: solid #AAAAAA .75pt; mso-yfti-tbllook: 1184;"&gt;&lt;tbody&gt;&lt;tr style="mso-yfti-firstrow: yes; mso-yfti-irow: 0;"&gt;   &lt;td style="background: #F2F2F2; border: solid #AAAAAA 1.0pt; mso-border-alt: solid #AAAAAA .75pt; padding: 2.4pt 2.4pt 2.4pt 2.4pt;"&gt;   &lt;div class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="color: #00b0f0; font-size: 12.0pt;"&gt;Date &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #F2F2F2; border-left: none; border: solid #AAAAAA 1.0pt; mso-border-alt: solid #AAAAAA .75pt; mso-border-left-alt: solid #AAAAAA .75pt; padding: 2.4pt 2.4pt 2.4pt 2.4pt;"&gt;   &lt;div class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="color: #00b0f0; font-size: 12.0pt;"&gt;Plan to do &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 1;"&gt;   &lt;td style="border-top: none; border: solid #AAAAAA 1.0pt; mso-border-alt: solid #AAAAAA .75pt; mso-border-top-alt: solid #AAAAAA .75pt; padding: 2.4pt 2.4pt 2.4pt 2.4pt;"&gt;   &lt;div class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="color: #00b0f0; font-size: 12.0pt;"&gt;Week 1 &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="border-bottom: solid #AAAAAA 1.0pt; border-left: none; border-right: solid #AAAAAA 1.0pt; border-top: none; mso-border-alt: solid #AAAAAA .75pt; mso-border-left-alt: solid #AAAAAA .75pt; mso-border-top-alt: solid #AAAAAA .75pt; padding: 2.4pt 2.4pt 2.4pt 2.4pt;"&gt;   &lt;div class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;1 Read more   about Enchant and get familiar with the use of Enchant in AbiWord (this step   will make an abstraction of the hyphenation algorithm)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;2 Search and   find more libraries which can be used to determine the breakpoints within   words. Includes:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraph" style="margin-left: 42.0pt; mso-char-indent-count: 0; mso-list: l0 level2 lfo2; text-indent: -21.0pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span lang="EN-US" style="font-family: Wingdings; font-size: 12.0pt; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings;"&gt;&lt;span style="mso-list: Ignore;"&gt;Ø&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;Some TeX formatting system &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraph" style="margin-left: 42.0pt; mso-char-indent-count: 0; mso-list: l0 level2 lfo2; text-indent: -21.0pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span lang="EN-US" style="font-family: Wingdings; font-size: 12.0pt; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings;"&gt;&lt;span style="mso-list: Ignore;"&gt;Ø&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;Open Source libraries&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraph" style="margin-left: 42.0pt; mso-char-indent-count: 0; mso-list: l0 level2 lfo2; text-indent: -21.0pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span lang="EN-US" style="font-family: Wingdings; font-size: 12.0pt; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings;"&gt;&lt;span style="mso-list: Ignore;"&gt;Ø&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;If possible pull out just the code we   need from some package.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraph" style="margin-left: 42.0pt; mso-char-indent-count: 0; mso-list: l0 level2 lfo2; text-indent: -21.0pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span lang="EN-US" style="font-family: Wingdings; font-size: 12.0pt; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings;"&gt;&lt;span style="mso-list: Ignore;"&gt;Ø&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;Care about the language factors(besides   English)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;3 Learn more   about Hyphenation algorithm&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;Deliverable 1&lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="left" class="MsoNormal" style="text-align: left;"&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;Make a summary about Enchant and the open source hyphenation   libraries&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="left" class="MsoNormal" style="text-align: left;"&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;Choose one most suitable for us&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 2;"&gt;   &lt;td style="border-top: none; border: solid #AAAAAA 1.0pt; mso-border-alt: solid #AAAAAA .75pt; mso-border-top-alt: solid #AAAAAA .75pt; padding: 2.4pt 2.4pt 2.4pt 2.4pt;"&gt;   &lt;div class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="color: #00b0f0; font-size: 12.0pt;"&gt;Week 2 &lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="border-bottom: solid #AAAAAA 1.0pt; border-left: none; border-right: solid #AAAAAA 1.0pt; border-top: none; mso-border-alt: solid #AAAAAA .75pt; mso-border-left-alt: solid #AAAAAA .75pt; mso-border-top-alt: solid #AAAAAA .75pt; padding: 2.4pt 2.4pt 2.4pt 2.4pt;"&gt;   &lt;div class="MsoNormal"&gt;&lt;a href="" name="Rewrite_language.php_file_as_an_abstract"&gt;&lt;/a&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;(continue   and finish)&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;1 Some   programming test about Open Source hyphenation libraries&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;2 Make a code   framework about where to add code(to make code more flexible)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;3 &lt;b style="mso-bidi-font-weight: normal;"&gt;Design the data structures of Hyphenation&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;4 Building the &lt;b style="mso-bidi-font-weight: normal;"&gt;hyphenationChecker&lt;/b&gt; using open source library   in Enchant&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;hyphenationChecker   is the name I define in Enchant to deal with hyphenation&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;Deliverable 2: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;1 Summary Document   &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;2 Patch about data   structures of Hyphenation&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;3 Make an &lt;b style="mso-bidi-font-weight: normal;"&gt;patch&lt;/b&gt; about hyphenationChecker&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 3;"&gt;   &lt;td style="border-top: none; border: solid #AAAAAA 1.0pt; mso-border-alt: solid #AAAAAA .75pt; mso-border-top-alt: solid #AAAAAA .75pt; padding: 2.4pt 2.4pt 2.4pt 2.4pt;"&gt;   &lt;div class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="color: #00b0f0; font-size: 12.0pt;"&gt;Week 3&lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="border-bottom: solid #AAAAAA 1.0pt; border-left: none; border-right: solid #AAAAAA 1.0pt; border-top: none; mso-border-alt: solid #AAAAAA .75pt; mso-border-left-alt: solid #AAAAAA .75pt; mso-border-top-alt: solid #AAAAAA .75pt; padding: 2.4pt 2.4pt 2.4pt 2.4pt;"&gt;   &lt;div class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;1 Fix possibly   remaining bugs to have a good foundation for the further. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;2 Read source   code and place hyphenation points called from the Enchant&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;The codes in src/text/fmt/xp/*.(h,cpp)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraph" style="margin-left: 21.0pt; mso-char-indent-count: 0; mso-list: l1 level1 lfo1; text-indent: -21.0pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span lang="EN-US" style="font-family: Wingdings; font-size: 12.0pt; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings;"&gt;&lt;span style="mso-list: Ignore;"&gt;Ø&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;fb_LineBreaker.(h,cpp) and&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraph" style="margin-left: 21.0pt; mso-char-indent-count: 0; mso-list: l1 level1 lfo1; text-indent: -21.0pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span lang="EN-US" style="font-family: Wingdings; font-size: 12.0pt; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings;"&gt;&lt;span style="mso-list: Ignore;"&gt;Ø&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;fb_Alignment.(h,cpp)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;Deliverable 3: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;1 Make an patch   about implementation of hyphenation points&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;2 Fix remaining   bugs &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 4;"&gt;   &lt;td style="border-top: none; border: solid #AAAAAA 1.0pt; mso-border-alt: solid #AAAAAA .75pt; mso-border-top-alt: solid #AAAAAA .75pt; padding: 2.4pt 2.4pt 2.4pt 2.4pt;"&gt;   &lt;div class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="color: #00b0f0; font-size: 12.0pt;"&gt;Week 4 &lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="border-bottom: solid #AAAAAA 1.0pt; border-left: none; border-right: solid #AAAAAA 1.0pt; border-top: none; mso-border-alt: solid #AAAAAA .75pt; mso-border-left-alt: solid #AAAAAA .75pt; mso-border-top-alt: solid #AAAAAA .75pt; padding: 2.4pt 2.4pt 2.4pt 2.4pt;"&gt;   &lt;div class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;1 Draw the hyphenation   characters in AbiWord&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;2 Find more good   dictionary to have a good &lt;/span&gt;&lt;span lang="EN-US" style="background: white; font-family: &amp;quot;Tahoma&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10.0pt; mso-font-kerning: 0pt; mso-highlight: white;"&gt;coverage&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Tahoma&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10.0pt; mso-font-kerning: 0pt;"&gt; of different   language and words&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;Deliverable 4:&lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;1 Make an patch   about preliminary results&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;2 Make a summary   of dictionary&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 5;"&gt;   &lt;td style="border-top: none; border: solid #AAAAAA 1.0pt; mso-border-alt: solid #AAAAAA .75pt; mso-border-top-alt: solid #AAAAAA .75pt; padding: 2.4pt 2.4pt 2.4pt 2.4pt;"&gt;   &lt;div class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="color: #00b0f0; font-size: 12.0pt;"&gt;Week 5&lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="border-bottom: solid #AAAAAA 1.0pt; border-left: none; border-right: solid #AAAAAA 1.0pt; border-top: none; mso-border-alt: solid #AAAAAA .75pt; mso-border-left-alt: solid #AAAAAA .75pt; mso-border-top-alt: solid #AAAAAA .75pt; padding: 2.4pt 2.4pt 2.4pt 2.4pt;"&gt;   &lt;div class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;(continue and finish) &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;According to Martin,   it seems that it's a difficult task. Time is needed. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;1 Have more tests&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;2 Again, Fix   possibly remaining bugs &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;3 Prepare some   document that Google required in Mid Evaluation&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;Deliverable 5:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;1 Fix remaining   bugs&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;2 Some document   that Google require&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 6;"&gt;   &lt;td style="border-top: none; border: solid #AAAAAA 1.0pt; mso-border-alt: solid #AAAAAA .75pt; mso-border-top-alt: solid #AAAAAA .75pt; padding: 2.4pt 2.4pt 2.4pt 2.4pt;"&gt;   &lt;div class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="color: #00b0f0; font-size: 12.0pt;"&gt;July 15 &lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="border-bottom: solid #AAAAAA 1.0pt; border-left: none; border-right: solid #AAAAAA 1.0pt; border-top: none; mso-border-alt: solid #AAAAAA .75pt; mso-border-left-alt: solid #AAAAAA .75pt; mso-border-top-alt: solid #AAAAAA .75pt; padding: 2.4pt 2.4pt 2.4pt 2.4pt;"&gt;   &lt;div class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;Mid Evaluation &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 7;"&gt;   &lt;td style="border-top: none; border: solid #AAAAAA 1.0pt; mso-border-alt: solid #AAAAAA .75pt; mso-border-top-alt: solid #AAAAAA .75pt; padding: 2.4pt 2.4pt 2.4pt 2.4pt;"&gt;   &lt;div class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="color: #00b0f0; font-size: 12.0pt;"&gt;Week 6 &lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="border-bottom: solid #AAAAAA 1.0pt; border-left: none; border-right: solid #AAAAAA 1.0pt; border-top: none; mso-border-alt: solid #AAAAAA .75pt; mso-border-left-alt: solid #AAAAAA .75pt; mso-border-top-alt: solid #AAAAAA .75pt; padding: 2.4pt 2.4pt 2.4pt 2.4pt;"&gt;   &lt;div class="MsoNormal"&gt;&lt;a href="" name="Provide_a_module_to_use_the_apertium.org"&gt;&lt;/a&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;1 Care about some special languages and   special words&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;Deliverable 6: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;1 Have an more   good result to support more language and words&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 8;"&gt;   &lt;td style="border-top: none; border: solid #AAAAAA 1.0pt; mso-border-alt: solid #AAAAAA .75pt; mso-border-top-alt: solid #AAAAAA .75pt; padding: 2.4pt 2.4pt 2.4pt 2.4pt;"&gt;   &lt;div class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="color: #00b0f0; font-size: 12.0pt;"&gt;Week 7 &lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="border-bottom: solid #AAAAAA 1.0pt; border-left: none; border-right: solid #AAAAAA 1.0pt; border-top: none; mso-border-alt: solid #AAAAAA .75pt; mso-border-left-alt: solid #AAAAAA .75pt; mso-border-top-alt: solid #AAAAAA .75pt; padding: 2.4pt 2.4pt 2.4pt 2.4pt;"&gt;   &lt;div class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;Rejoin hyphenated   words as they get moved via the users editing.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;Codes: &lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&lt;/span&gt;src/text/fmt/xp/fl_BlockLayout.cpp&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;More tests&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;Deliverable 7: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;Patch about   implementation of this function&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;More tests&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 9;"&gt;   &lt;td style="border-top: none; border: solid #AAAAAA 1.0pt; mso-border-alt: solid #AAAAAA .75pt; mso-border-top-alt: solid #AAAAAA .75pt; padding: 2.4pt 2.4pt 2.4pt 2.4pt;"&gt;   &lt;div class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="color: #00b0f0; font-size: 12.0pt;"&gt;Week 8&lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="border-bottom: solid #AAAAAA 1.0pt; border-left: none; border-right: solid #AAAAAA 1.0pt; border-top: none; mso-border-alt: solid #AAAAAA .75pt; mso-border-left-alt: solid #AAAAAA .75pt; mso-border-top-alt: solid #AAAAAA .75pt; padding: 2.4pt 2.4pt 2.4pt 2.4pt;"&gt;   &lt;div class="MsoNormal"&gt;&lt;a href="" name="Improve_integration_with_Wikipedia_.E2.8"&gt;&lt;/a&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;1 deal with the result: misspell words   are correctly handled after hyphenation. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;2 Test and   Refactor &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;Deliverable 8: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;1 Patch about   implementation of this function&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;2 better version&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 10;"&gt;   &lt;td style="border-top: none; border: solid #AAAAAA 1.0pt; mso-border-alt: solid #AAAAAA .75pt; mso-border-top-alt: solid #AAAAAA .75pt; padding: 2.4pt 2.4pt 2.4pt 2.4pt;"&gt;   &lt;div class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="color: #00b0f0; font-size: 12.0pt;"&gt;Week 9 &lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="border-bottom: solid #AAAAAA 1.0pt; border-left: none; border-right: solid #AAAAAA 1.0pt; border-top: none; mso-border-alt: solid #AAAAAA .75pt; mso-border-left-alt: solid #AAAAAA .75pt; mso-border-top-alt: solid #AAAAAA .75pt; padding: 2.4pt 2.4pt 2.4pt 2.4pt;"&gt;   &lt;div class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;(continue and finish) &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&lt;/span&gt;1 Fix new or remaining bugs&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&lt;/span&gt;2 Some documents what GsoC needed&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 11;"&gt;   &lt;td style="border-top: none; border: solid #AAAAAA 1.0pt; mso-border-alt: solid #AAAAAA .75pt; mso-border-top-alt: solid #AAAAAA .75pt; padding: 2.4pt 2.4pt 2.4pt 2.4pt;"&gt;   &lt;div class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="color: #00b0f0; font-size: 12.0pt;"&gt;Week 10&lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="border-bottom: solid #AAAAAA 1.0pt; border-left: none; border-right: solid #AAAAAA 1.0pt; border-top: none; mso-border-alt: solid #AAAAAA .75pt; mso-border-left-alt: solid #AAAAAA .75pt; mso-border-top-alt: solid #AAAAAA .75pt; padding: 2.4pt 2.4pt 2.4pt 2.4pt;"&gt;   &lt;div class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;(continue and finish) &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;Time for emergency&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 12;"&gt;   &lt;td style="border-top: none; border: solid #AAAAAA 1.0pt; mso-border-alt: solid #AAAAAA .75pt; mso-border-top-alt: solid #AAAAAA .75pt; padding: 2.4pt 2.4pt 2.4pt 2.4pt;"&gt;   &lt;div class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="color: #00b0f0; font-size: 12.0pt;"&gt;August 16 &lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="border-bottom: solid #AAAAAA 1.0pt; border-left: none; border-right: solid #AAAAAA 1.0pt; border-top: none; mso-border-alt: solid #AAAAAA .75pt; mso-border-left-alt: solid #AAAAAA .75pt; mso-border-top-alt: solid #AAAAAA .75pt; padding: 2.4pt 2.4pt 2.4pt 2.4pt;"&gt;   &lt;div class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;Suggested   'pencils down' date. Take to scrub code, write tests, improve documentation,   etc. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 13; mso-yfti-lastrow: yes;"&gt;   &lt;td style="border-top: none; border: solid #AAAAAA 1.0pt; mso-border-alt: solid #AAAAAA .75pt; mso-border-top-alt: solid #AAAAAA .75pt; padding: 2.4pt 2.4pt 2.4pt 2.4pt;"&gt;   &lt;div class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="color: #00b0f0; font-size: 12.0pt;"&gt;August 26 &lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="border-bottom: solid #AAAAAA 1.0pt; border-left: none; border-right: solid #AAAAAA 1.0pt; border-top: none; mso-border-alt: solid #AAAAAA .75pt; mso-border-left-alt: solid #AAAAAA .75pt; mso-border-top-alt: solid #AAAAAA .75pt; padding: 2.4pt 2.4pt 2.4pt 2.4pt;"&gt;   &lt;div class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-size: 12.0pt;"&gt;End &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4307261008427639518-4332214611683601456?l=chenxiajian.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chenxiajian.blogspot.com/feeds/4332214611683601456/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://chenxiajian.blogspot.com/2011/04/time-plan-about-implementation-of.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4307261008427639518/posts/default/4332214611683601456'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4307261008427639518/posts/default/4332214611683601456'/><link rel='alternate' type='text/html' href='http://chenxiajian.blogspot.com/2011/04/time-plan-about-implementation-of.html' title='Time Plan about implementation of Hyphenation support in AbiWord'/><author><name>ChenXiajian_My GSoc2011_Hyphenation Support to AbiWord</name><uri>http://www.blogger.com/profile/14915172551075912267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-WxeJ0YrBl7c/TbfhCl7lCbI/AAAAAAAAAAM/ooMSpFc2UZk/s220/%25E7%2585%25A7%25E7%2589%2587.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4307261008427639518.post-215511253908667467</id><published>2011-04-27T02:30:00.000-07:00</published><updated>2011-04-27T02:30:16.820-07:00</updated><title type='text'>Congratulations!</title><content type='html'>Get Selected~&lt;br /&gt;&lt;br /&gt;Thank all the people who give me suggestion&lt;br /&gt;I will make a good result in my GSoc2011&lt;br /&gt;&lt;br /&gt;my&amp;nbsp;GSoc2011: Add Hyphenation Support to AbiWord&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4307261008427639518-215511253908667467?l=chenxiajian.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chenxiajian.blogspot.com/feeds/215511253908667467/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://chenxiajian.blogspot.com/2011/04/congratulations.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4307261008427639518/posts/default/215511253908667467'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4307261008427639518/posts/default/215511253908667467'/><link rel='alternate' type='text/html' href='http://chenxiajian.blogspot.com/2011/04/congratulations.html' title='Congratulations!'/><author><name>ChenXiajian_My GSoc2011_Hyphenation Support to AbiWord</name><uri>http://www.blogger.com/profile/14915172551075912267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-WxeJ0YrBl7c/TbfhCl7lCbI/AAAAAAAAAAM/ooMSpFc2UZk/s220/%25E7%2585%25A7%25E7%2589%2587.jpg'/></author><thr:total>0</thr:total></entry></feed>
