July 6,2007
Linux Scilab 中文關鍵障礙排除程序
這是開發 Linux 版之 ADE 中文 Scilab 關鍵技術,藉由網路擴散出去,希望有更多開發者不再為這些雜學所困。
ADE 中文 Scilab Linux 版預定 11, 12 月 間公佈。
Scilab 中文化之步調無法與官方版一致,這是必然的現象;中文問題只能靠使用中文的開發族群解決。因此 Linux 上之中文版決定採用 Scilab-GTK 一方面是考慮到中文開發人力不足,只能以 C/C++ 作為主要開發語言,另一方面則是準備將 Scilab 與中文桌面系統結合進行準備。
將 locale 設定為 zh_TW.UTF8 (環境參數 LANG=zh_TW.UTF8) 後,將 Scilab-GTK 下載後在 Fedora 6 上編譯後發現以下中文處理問題:- Scilab 之 console 視窗上無法啟動中文輸入
解決方案: 必須使用 GTK2 以及選用 vte 終端機視窗程式庫,請參考 中文 Scilab 所需之GKT2 軟體環境
- Scilab 編輯器 (SciPad) 無法輸入中文
解決方案: TCL/TK 及 Scipad 之中文問題
- 中文字串螢幕輸入、輸出
解決方案: 使用 GTK 時,沒有這個問題 (但在 Windows 環境必須修改程式)
- 中文字串檔案輸入、輸出
解決方案: 使用 GTK 時,沒有這個問題 (但在 Windows 環境必須修改程式)
- 繪圖指令(如 plot2d ) 中無法顯現中文標示
解決方案: GTK 繪出中文問題
- scicos 文字方塊中(Edit/palettes/other) 無法顯示中文
解決方案: GTK 繪出中文問題
- 選單中文化
解決方案:
- 主選單
修改次目錄 routine\gtksci 中之檔案 menus.c 內容之函數 sci_window_initial_menu - 圖形選單
修改次目錄 routine\gtksci 中之檔案 menus.c 內容之函數 graphic_initial_menu
- 主選單
- Scilab 增加中文語言選項
再測試 locale Big5
- Consol 可輸入中文, 不需更動
- SciPad 可輸入中文, 不需更動
- 繪圖指令(plot2d 等) 無法輸出中文標示, 但 Scicos 之 text 方塊 (位於 Edit\palette\other )可接受中文
解決方案:繪出字串前先判斷是否為 utf8 碼, 否則先由 locale 轉 utf8 , 參考 GTK 繪出中文問題 - 中文選單正常, 不需更動
July 4,2007
Scilab 中之 BIG5 , UTF8 中文
目前只剩下一部分內部之 BIG5-> UTF8 未加入應該是在 pango_draw_text 中檢查字串判斷是否為 UTF8 如果不是, 則將他轉碼 (也許由 lang 環境參數決定如何轉碼) (2007/07/03)
可能參考
Character Set Conversion
gboolean is_utf8 g_get_charset (G_CONST_RETURN char **charset);
charset : return location for character set name
Returns : TRUE if the returned charset is UTF-8
if(! g_get_charset (&charset) g_locale_to_utf8(string)
http://203.64.187.41/gtk/GTK-Lesson-4.html
#define BIG5(s) g_locale_to_utf8(s, strlen(s),NULL, NULL, NULL)
以 g_utf8_validate() 檢查是否為 UTF8 有效字串 ( Text Handling in GTK+ 2.0)
...繼續閱讀
July 2,2007
Scicos 文字顯現問題
若使用 pango 繪, 則顏色選擇必須注意, 否則 Scicos 中之 Other 圖版 Text 無法畫出字來原因為前景 和背景顏色相同.
已解決 (參考 :http://mail.gnome.org/archives/gtk-app-devel-list/2004-February/msg00322.html)
GdkGC *gc 需設定如下:
void pango_draw_text(BCG *ScilabXgc,GdkDrawable *drawable,int xx, int yy,char *string)
{
PangoLayout *pl;
// PangoFontDescription *font_desc
// = pango_font_description_from_string ("arial black 12");
// gtk_widget_modify_font (ScilabXgc->drawing, font_desc);
// pango_font_description_free (font_desc);
pl = gtk_widget_create_pango_layout(ScilabXgc->drawing,NULL);
pango_layout_context_changed(pl);
pango_layout_set_text(pl, string,-1);
GdkGC *gc;
gc = gdk_gc_new(drawable);
gdk_draw_layout( drawable,gc,xx,yy,pl);
g_object_unref(gc);
g_object_unref(pl);
}
////////////