Firefly CJK Patches

    From The Document Foundation Wiki
    (Redirected from Firefly's OOo CJK Patches)

    This page was marked as inactive and is retained for historical reference.
    Either the page is no longer relevant or consensus on its purpose has become unclear. To revive discussion, seek broader input via a forum such as one of our mailing lists.

    Initial article author & contributor - User Zero0w


    Since mid 2003, Mr. Jia Ming Deng (nickname Firefly), a Chinese Linux hacker from Taiwan, has been working on a set of 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) Page.

    With the release of 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 i#18285, 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)

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

    1. 中文字型粗、斜體支援。
      • [Linux] The display of bold and italic style for regular-only font: this speaks for most CJK fonts
      • Fixed in i#18285

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

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

    1. 中文字體名稱顯示。
      • [Linux] Fixed the issue of displaying font name in non-ASCII characters, especially font name in CJK characters
      • 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. 正常顯示、列印新細明體與標楷體。
      • [Linux] Correct display and printing of "MingLiu" and "PMingLiu" font face, found in Microsoft Windows

    1. 優先選用Over The Spot 輸入模式,較為符合 CJK 使用者習慣。
      • [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系統,看得到能顯示就一定能印。
      • [Linux] Remove the support of XLFD font system, this way you can achieve WYSIWYCP (What You See Is What You Can Print)

    1. 中文字型優先排列,字型選單展開後,中文字型名稱排在英文之前。
      • [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. 中英文採用不同顯示作法,不會損害英文美觀,中文字加強顯示效果。
      • [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. 取消首次使用註冊畫面。
      • [All platforms] Remove the registration screen when running for the first time

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

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

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

    1. 自動尋字,只要系統有這個字,就一定可以看、印,避免□□□出現。
      • [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 套件檔。
      • [All platforms] Fixed the issue of missing symbols in Math
      • [Linux] Fixed the issue of some distro(s) unable to recognize and mount through cramfs (for LiveCD! version)
      • [Linux] RPM package is also available for the patched " 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:

    Bugs reported

    This was the code merging status back in the 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)

    In-depth bug / feature discussion

    Intelligent font matching system

    Posted with Firefly's permission

    以下簡述何謂「自動尋字」及「字體自動匹配」: 是一套功能十分強大的辦公室軟體,但對非英語系的使用者而言,最大的弱點,就是無法解決兩個不同使用者之間,字體不一致的問題,舉例來說,某甲所製作的文件,用了 A 字型公司的字體,但某乙卻沒有 A 公司的字體,當某乙用OpenOffice 開啟某甲的文件時,會有兩種可能的情況:一、看不到這些 A公司的字,結果可能是空白,可能是方框□□□。二、看得到這些字,但卻亂找字體來顯示,卻無法完全顯示,或是字體間距不對,造成疊在一起的情況,一般解決方式,就是設定替代字型,但是,字型何其多,每個人多少都不一樣,解決字體相異的問題,不該丟給使用者自行解決,無論如何,這都不是我們要的結果。
      中文加強版的解決方式,不敢說是完美無暇,但相當程度解決了非英文使用者的問題,相信中文加強版提出的方式,連微軟的 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