Firefly CJK Patches

Initial article author & contributor - User Zero0w

Introduction
Since mid 2003, Mr. Jia Ming Deng (nickname Firefly), a Chinese Linux hacker from Taiwan, has been working on a set of OpenOffice.org patches that has significantly enhanced the font naming, selection and screen appearance for many CJK OOo Linux users. His initial patches for OOo 1.x were either considered too large or too risky to merge into the mainline OOo code base, and hence were only provided in the form of a modified third-party build listed in the Add-On section of Chinese (zh) OpenOffice.org Page.

With the release of OpenOffice.org 2.x, however, some of the greater obstacles, such as fakestyle printing for regular-only font (for instance, AR PL Mingti2 Big5 under Linux) has already started to work; whereas the screen appearance of fakestyle (or fakebold according to OOo bug database) is still nowhere to be seen in the Linux version.

Except the fakestyle patch being merged in OOo.org, we do not know the working status of these patches in the new LibreOffice codebase. It's likely that major re-factoring of the patches will be required to carry on the work of Firefly. Still, for many CJK Linux/BSD LibreOffice users out there, this work should be continued in the LibreOffice development. Some of his patches solved bugs or missing features in Linux/BSD version, while other patches would benefit users on all platforms.

Function of his patches
Taken from his patch release info against OOo 2.0 and 2.0.2 (information in Chinese, to be translated to English)


 * http://opendesktop.org.tw/modules/news/article.php?storyid=10
 * http://opendesktop.org.tw/modules/news/article.php?storyid=49

With Firefly's permission, his Chinese Patch log is posted here as in the following:


 * 1) 中文字型粗、斜體支援.
 * 2) * [Linux] The display of bold and italic style for regular-only font: this speaks for most CJK fonts
 * 3) * Fixed in 


 * 1) 修正繁簡轉換錯誤，包括標點符號(範例為繁體『點』這個字，有興趣的朋友可自行測試)，另有許多字會轉成日文漢字.
 * 2) * [All platforms] Fixed many incorrect conversions between Traditional and Simplified Chinese characters


 * 1) 修正字體移除新增紀錄不正確的問題.


 * 1) 中文字體名稱顯示.
 * 2) * [Linux] Fixed the issue of displaying font name in non-ASCII characters, especially font name in CJK characters
 * 3) * Note: In terms of feature, this should be considered as regression from OOo 1.x, as it was okay in OOo 1.x Linux version to display font name in non-ASCII character


 * 1) 正常顯示、列印新細明體與標楷體.
 * 2) * [Linux] Correct display and printing of "MingLiu" and "PMingLiu" font face, found in Microsoft Windows


 * 1) 優先選用Over The Spot 輸入模式，較為符合 CJK 使用者習慣.
 * 2) * [Linux] Prefer "Over The Spot" mode over other modes in XIM / gtkimmodule input interface, this matches closer to the habit and behavior of CJK users.


 * 1) 排除XLFD系統，看得到能顯示就一定能印.
 * 2) * [Linux] Remove the support of XLFD font system, this way you can achieve WYSIWYCP (What You See Is What You Can Print)


 * 1) 中文字型優先排列，字型選單展開後，中文字型名稱排在英文之前.
 * 2) * [All platform] Re-order the display of font names in the font selection pull-down menu: Chinese font will be shown before English and other fonts


 * 1) 中英文採用不同顯示作法，不會損害英文美觀，中文字加強顯示效果.
 * 2) * [Linux font handling] To display English and Chinese font glyph with different hinting algorithm. In this way, the beauty of English font will be preserved; while the display of Chinese (CJK) font can be enhanced


 * 1) 取消首次使用註冊畫面.
 * 2) * [All platforms] Remove the registration screen when running OpenOffice.org for the first time


 * 1) 修正預設使用方正字體問題.
 * 2) * [All platforms] Modify the default choice of displaying FZ font (方正字體) to another font for Chinese language


 * 1) 最適化介面文字大小.
 * 2) * [All platforms] Fine tune font size of the OpenOffice.org GUI interface in CJK users' perspective


 * 1) 自動字體性質分類匹配. 當文件中，指定了系統沒有的字體時，依據字體性質，自動尋找最佳替代字體，不會亂找字，不必人工設定！可依據的字體性質為：明/宋體、楷書體、隸書體、圓體、黑體、仿宋、行書、勘亭流、古印體、魏碑、鋼筆、新藝體、綜藝體、海報體、空疊、廣告體，POP 體、手寫體、注音體、 符號...等字體，系統聰明匹配，免除因系統不同而出現排版差異問題.
 * 2) * [All platforms] Intelligent font matching system (more on this later)


 * 1) 自動尋字，只要系統有這個字，就一定可以看、印，避免□□□出現.
 * 2) * [All platforms] Automatic search and replace of missing glyph for the font in use by another; this avoids the bug of showing garbage like □□□


 * 1) 另外修正了方程式編輯器部份符號無法顯示問題，以及光碟安裝時，某些 Distro 無法自動辨識 cramfs 的問題. 而安裝方式，除了光碟安裝(ISO)外，RPM 格式的安裝套件，已經簡化成兩個 RPM 套件檔.
 * 2) * [All platforms] Fixed the issue of missing symbols in OpenOffice.org Math
 * 3) * [Linux] Fixed the issue of some distro(s) unable to recognize and mount through cramfs (for LiveCD! version)
 * 4) * [Linux] RPM package is also available for the patched "OpenOffice.org Linux Chinese enhanced edition". It is now grouped and re-packaged as two RPM files for easy installation.

ToDo: Translate the remaining 10% content

Source code of the whole patch set
All the source code of Firefly's patches against OOo 2.0.2 can be found in this page, released under LGPL on March 21, 2006:


 * http://opendesktop.org.tw/modules/news/article.php?storyid=53
 * ftp://openoffice.mirrors.tds.net/pub/openoffice/stable/2.0.2/OOo_2.0.2_src.tar.gz (Direct download)

Bugs reported
This was the code merging status back in the OpenOffice.org development team. As this work is now to be continued under LibreOffice, however, new bug reports in LO Bugzilla will need to be filed accordingly.

Bugs filed that relates to Firefly's patches
References to Apache OOo bug database (TO DO: Replace the Unresolved issue with new bugs to be filed in LO Bug database)


 * (Resolved and Closed)
 * CWS module: fakebold

Intelligent font matching system
Posted with Firefly's permission

以下簡述何謂「自動尋字」及「字體自動匹配」：


 * OpenOffice.org 是一套功能十分強大的辦公室軟體，但對非英語系的使用者而言，最大的弱點，就是無法解決兩個不同使用者之間，字體不一致的問題，舉例來說，某甲所製作的文件，用了 A 字型公司的字體，但某乙卻沒有 A 公司的字體，當某乙用OpenOffice 開啟某甲的文件時，會有兩種可能的情況：一、看不到這些 A公司的字，結果可能是空白，可能是方框□□□. 二、看得到這些字，但卻亂找字體來顯示，卻無法完全顯示，或是字體間距不對，造成疊在一起的情況，一般解決方式，就是設定替代字型，但是，字型何其多，每個人多少都不一樣，解決字體相異的問題，不該丟給使用者自行解決，無論如何，這都不是我們要的結果.


 * 以上情形，中文加強版的解決方式是加上「自動尋字」及「字體自動匹配」，自動尋字，顧名思義就是當指定的字體中，沒有該字時，會自動啟動尋字功能，找出系統中，有該字的字體，加以顯示，而自動尋字也並非盲目找字，它會依據文件指定的字體性質，作「字體自動匹配」，所以「自動尋字」及「字體自動匹配」兩個功能，是有緊密關聯的；但，甚麼又是「字體自動匹配」呢？


 * 簡單地說，「字體自動匹配」就是依據指定字體的性質，譬如某甲用了A公司的黑體，但某乙沒有A公司的黑體，卻有B公司的黑體，如果依照OpenOffice原始的方式，會出現空白字或是用楷體來替代，而中文加強版「字體自動匹配」卻可以分辨出『黑體』性質，而以B公司的黑體來顯示A公司的黑體文件，盡量做到文件字體的一致性，同時也解決的排版不一致的問題，包括輸出到PDF檔案或印表機亦同.


 * 中文加強版的解決方式，不敢說是完美無暇，但相當程度解決了非英文使用者的問題，相信中文加強版提出的方式，連微軟的 Office 都沒有這樣的能力.

ToDo: Translate it to English

To Do List
Note: This section is now mostly obsolete! Major code re-factoring will be required to carry on the work of Firefly - by Zero0w)


 * 1) Organize patches into different categories -
 * 2) Translate the Chinese comment in the patch to English
 * 3) Invite LO developers to discuss the merit of the patches: how to modify, adapt and integrate them
 * 4) Adding and enriching the above list of in-depth bug / feature discussion