The World Is Flat
2008年12月8日 星期一
2008-12-05
* Update to dev300-m36
* Start to have a look at where to add an option for word macro import for Tools|Options|Load Save|VBA Properties| Executable code ( currently the patch just hard codes executeable code ). Like an option for excel macro import. ( Supposed it is a copy&paste task :-) )
A Simple Word VBA Macro
We also add a UI option in Tools -> Options -> Load/Save -> VBA Properties -> Executable code, to indicate whether the VBA macros are imported without comments to be executable.
Definitely, we have many things need to do. The first thing, I think, is about how to share the code with VBA for Excel.
2008年12月3日 星期三
2008-12-03
* Great to hear that Redflag 2000 guy Wanglibing wanted to start port new vba api. Answer his mail. Hope he can warm up quickly.
* Accept Noel's suggestion to start a new build based on dev300-m35 in another system for it is verified to use well.
* Overview the commandbar stuff. I am annoyed by the codes, ( seems not much better to port it from helperapi directly. had better to re-invent the wheel :-). Anyway, after some modification, some common issuees are fixed. and more common apis are added too.
Current existing problems:
1) Regarding commandbar stuff, the main difference between MS Office and OOo is that MS Office treats commandbar as toolbar ( main menu is a toolbar named "Worksheet Menu Bar" in Excell ), while OOo treats commandbar as menu and toolbar. The url of menu is "private:resource/menubar/menubar" for build-in menus or "vnd.openoffice.org:CustomMenu" for customize menus. The url of toolbar is "private:resource/toolbar/" for build-in toolbars or is "private:resource/toolbar/custom_toolbar_***" for customize toolbars. In MSO, you can create customize toolbars in "tools->customize". In OOo, you can create customize menu/toolbar in "Tools->Customize". The related codes of the customize dialog is located in svx/source/dialog/cfg.cxx.
2) Confused with CommandBars("File") & CommandBars(1).Controls("File")
* CommandBars("File") returns a CommandBar object which type is msoBarTypePopup.
* CommandBars(1).Controls("File") returns a CommandBarControl object which type is msoControlPopup.
It seems they are referenced to the menu "File"
Note they are not supported in OOo VBA yet.
3) Currently OOo VBA only supports CommandBarControl, and doesn't support CommandBarPopup and CommandBarButton. In MSO both CommandBarPopup and CommandBarButton are common used. It is better to support them in OOo VBA. Both CommandBarPopup and CommandBarButton are based on CommandBarControl, So the following macro is OK in MSO
dim cbc1 as CommandBarControl
dim cbc2 as CommandBarControl
dim cbb as CommandBarButton
dim cbp as CommandBarPopup
set cbp = CommandBars(1).Controls.Add( Type:= msoControlPopup )
cbp.Caption = "Popup Menu 1"
set cbc1 = CommandBars(1).Controls.Add( Type:= msoControlPopup )
cbc1.Caption = "Popup Menu 2"
set cbb = cbp.Controls.Add( Type:= msoControlButton )
set cbc2 = cbp.Controls.Add( Type:= msoControlButton )
4) I think CommandBarControl.OnAction is an important api which is to set the name of a vb procedure that will run when the user clicks the menu/toolbar. Most of the reasons you create a customize menu/toolbar is to let user to run a vb procedure by clicking the menu/toolbar.
when OnAction is set, it needs to map the name os a vb procedure to a working command url of OOo. e.g.
myControl.OnAction = "Macro1"
The name "Macro1" needs to convert to a working command url like: vnd.sun.star.script:Standard.Module1.Macro1?language=Basic&location=document
* Meet a couple of breaks when building dev300-m36. To saving time, abandon to build it. and focus to build dev300-m35.
* Start to have a look at the patch of vba for word.
* Team meeting
2007年9月28日 星期五
The progress of CJK functions
Recently in OOoCon 2007, I made a talk about the CJK (Chinese, Japanese and Korean) functions what I have been working on. I think it is better to show the progress to the world. If you have any hot issue about CJK functions, please let me know.
Here is the main CJK functions.
CJK functions that have been done:
-
Text grid enhancement
-
CJK font relevant stuff
-
MS Word compatibility options enhancement
CJK functions that I am working on:
-
Character/Line measurement unit and ruler
-
Paragraph style default settings for CJK
CJK functions that I will work on:
-
Punctuation compress
-
Bullets and numbering enhancement
OK, I will make a summary for each CJK function so that you could get more knowledge. :-)
Text grid enhancement (i76247)
One of the main CJK functions is text grid which is wildly used in CJK environment. For example, Chinese government document must use text grid with 22 lines per page and 28 characters per line.
However, there are two types of paper mode for text grid. One is "squared" paper mode which OOo supports currently, the other is "Standard" paper mode which most CJK versions of office suite (including MS Word) support.
What's the difference between these two types of paper mode.
For "squared" paper mode, as shown in Figure 1, the page is divided in a fixed numbers of lines , and each line is divided into square cells . The number of lines per page depends on the line height ( i.e., the sum of grid base and ruby height), and the Asian characters per line also depends on the line height.
Figure 1. Squared paper mode
In this type of paper mode, if we change the "Lines per page" setting in the "Text Grid" tab page, the type are of the page will be changed. This type of paper mode is only used in limited case. Most CJK users have habit to the “standard” paper mode.
Figure 2 illustrates the "Standard" paper mode. As we can see, the lines per page depends on the base text size, while the characters per line depends on the character width. The ruby text is unavailable anymore. Moreover if the lines per page is changed, the type area is not changed yet.
Figure 2. Standard paper mode
Now, both types of paper mode are supported in ooo-build. In order to ensure only one type paper mode is used in the whole document, as shown in figure 3, a global setting option is provided in Writer tab page (Tools -> Options -> OOo Writer -> General).The codes are also up-streamed which is under QA so far.
Figure 3. Global setting option for text grid
CJK font relevant
There are some issues about CJK font in OOo.
Asian font list box ( i73003 )
The Asian font list box in the character property dialog lists all the available fonts even if they are not Asian font in OOo currently. It is better to only list the available CJK fonts.
Figure 4. Asian font list box
CJK mess font ( i73003 )
The issue in current OOo is that the selected western font is applied to the CJK text even if the selected western font doesn't support CJK language. So I extend the usage of fontconfig to check whether the selected font supports CJK language before applying the selected font to the CJK text.
Figure 5. Mess font
Chinese font size (i54603 )
China has his own unit to measure font size such as "五号". Of course, there is a conversion map between Chinese font size unit and western font size unit.
Figure 6. Chinese font size
Font substitute (i54603 )
The fontconfig library is extended to use to find more suitable font when the desired font is missing. The patch is initialed by Caolan. We make it more better support Chinese.
Microsoft Word compatibility options enhancement (i78591 )
As we know, in MS Word, there are quite a lot of compatibility options which are used to control layout for different versions.
Now, OOo only supports a few of compatibility options. Most of them are not handled in WW8 filter, which may cause layout different when do .DOC-> OOo -> .DOC converter.
Of course, this is a common issue not just for CJK.
Actually, it is not necessay for OOo to handle all the compatibility options. But in order to improve the interoperability with MS Word, one alternative way is to store the unhandled compatibility options in document model when import a .DOC document, and save them out when export to .DOC document again.
Character/Line measurement unit and ruler (i72655 )
Character/line measurement unit and ruler is another important CJK function that OOo doesn't support now.
As shown in Figure 7 from MS Word 2003, character is used to measured the indentation of the paragraph, and the line is used to measure the paragraph spacing.
Figure 7. Character/line measurement unit
Also as shown in Figure 8 from MS Word 2003, the horizontal ruler can be measured by character, and the vertical ruler can be measure by line. Character/line ruler is always used in a document with text grid.
Paragraph style default settings for CJK (i54320 )
Currently, the paragraph style default settings are set for western users, some default values of the paragraph properties don't need the habit of CJK users.
For example, the default font size of western font size is 12pt, while it is 10.5pt for CJK. The current default tab spacing is 1.25cm, while it is too big in writing Chinese. It is better to use about 0.74cm in writing Chinese.
As shown in Figure 9, the current default setting of Asian typography is not suitable for CJK users yet.
Figure 9. Asian typography
Another example is the default value of automatic text indent. The automatic text indent is used to specify the leave spacing for the first line of a paragraph. The current default value is one-character while it is better to use two-characters in writing Chinese as shown in Figure.
Punctuation compress
As shown in Figure 10 , if two Chinese punctuation are close, the first one should be compressed to occupy only half spacing of a Character, not full spacing of a character.
Figure 10. punctuation compress
Butters and numberings (i70031 , i69855 )
I have heard many CJK users to complaint that the bullets and numbering are not so good.
For example, OOo can only automatic recognize Arabic numbers or alphabets. Most CJK numbers can not be automatic recognized.
In the end, some important CJK functions are listed in the following wiki. http://wiki.services.openoffice.org/wiki/CJK_Group
If you have any good idea or suggestion about CJK functions, you are welcome to discuss in the wiki.
2007年6月29日 星期五
UOF Import Filter for OpenOffice.Org
This week is a hackfest week at Novell. I am hacking a UOF( Chinese Office File Format) import filter for OpenOffice.org. This filter is an external component based on ODF-UOF Converter.
An extension is developed so that OpenOffice.Org is able to open UOF text document. Here is some screenshots.
Although some features such as paragraph style, table are supported yet, there are a lot of work need to do. I will continue to work on them when I get time.
2007年5月28日 星期一
UOF–OpenXML Translator
"As part of Microsoft’s continued commitment to interoperability, Microsoft decided to work with CHINA Electronics Standardization Institute, Beijing Information Technology Institute, one of the co-creators of the UOF Chinese standard , Beihang University of Beijing and with other partners to create a Translator between UOF and Open XML and provide interoperability between the two formats in both directions. Microsoft is funding and providing technical architectural guidance for the development of the translator that will benefit millions of people who live in China."
It is time to do something about UOF plug-in for OpenOffice.org, isn't it?
The UOF-OpenXML project is available at http://uof-translator.sourceforge.net.
The UOF-ODF project is available at http://odf-to-uof.sourceforge.net.
2007年4月24日 星期二
Issues wrt. text grid in Issuezilla
Today, I happen to find that there are quite many text grid issues open in Issuezilla. I will look at them one by one and try to fix them. :)
Some issues wrt. text grid in issuezilla:
i53425:more flexibility in the grid layout
i73011:Chinese layout incorrectly with text grid
i40768:CJK:Register-true not activated for frames when importing; Grid layout
i53464:Word table reformatted shorter on import due to Grid layout
i15251:"Snap to Grid" doesn't work correctly
i29543:WW8: paragraph with "snap to grid" invisible in table
i15424:baseline in grid
i55461:snap to grid doesn't work correctly inside frame
i54864:WW8: Different treatment of tables in page due to active CJK Grid
i72657:A single line on Word got converted to two lines on Writer due to Text Grid
i68204:option "Print grid" becomes inactive when reopening Page dialog
i35684:[Text Grid] Vertical alignment for different font sizes differ from MS Word
i49214:CJK: Line spacing interpretation is different between Word and Writer due to text grid
i24195:WW Import: Cell height is too big when opened in OOo 1.1.1a (due to CJK-Grid)
i56820:Ruby in vertical text in grid wrongly moves original text sideways
Please let me know if anybody has question about text grid layout. :)
