好久好久都沒有寫網誌了,實在是忙、忙、忙。每天都很忙,每天都很累,經常都會忽然很累、很餓或者很呆。
IDPF EPUB2.1/3.0 電子書標準目前進入需求蒐集的階段,預計要蒐集到七月底。原本分為八個工作組,不過上個禮拜把 Advertising 合併到 RichMediaAndInteractivity 這裡了(頭銜好長喔),所以目前剩下七個工作組。
跟我們比較有關的,首要就是 EGLS(Enhanced Global Language Support),舉凡文字直排、斷行規則、連字規則統統在這組,其實這組應該屬於 Styling&Layout 的範疇,不過該組的組頭,日本的 Makoto 桑很堅持一定要獨立成為一組,而且一直拉台灣『贊聲』,所以主席就從善如流,把這部份獨立出來囉。
其他像是 Annotation 負責讀者、作者註記,也包含文字旁註的範疇;而 Metadata 負責擴充標籤;文字內容部份則交給 TextContent 負責;而跟目錄有關的則是交給 Navigation 搞定。
目前呢,每週四早上五點有個跨組的工作會議,透過 IRC 以及國際電話舉行會議,我們是一定都要參加的啦,早上四點起床,洗臉刷牙,然後叫計程車,聽一堆以我的程度懂不到一半的英文對話,然後撐到中午才能下班休息,這真是目前最辛苦的事情之一。
這就是為什麼我會這麼久沒有上來寫網誌的原因,下次見囉!
總網頁瀏覽量
咕狗大神
2010年6月28日 星期一
Arch Linux
好久沒有寫網誌了,一直都在追 WebKit 原始碼。六月中旬在追架構,六月底則是挑選 table 部份來追。對我而言,追原始碼本身是一件非常辛苦的事情,因為我已經太習慣從架構一路 down 下來了。
不過今天沒什麼心得要寫,主要是紀錄一套 linux 作業系統,叫做 Arch Linux,官方網址: http://www.archlinux.org/ 。這是一套針對 64 位元 Intel x86-64 最佳化的 linux 作業系統,以簡單乾淨為他的原則。
等我有空再來看看好不好玩。
不過今天沒什麼心得要寫,主要是紀錄一套 linux 作業系統,叫做 Arch Linux,官方網址: http://www.archlinux.org/ 。這是一套針對 64 位元 Intel x86-64 最佳化的 linux 作業系統,以簡單乾淨為他的原則。
等我有空再來看看好不好玩。
2010年6月11日 星期五
利用 SVG 讓 WebKit 可以進行文字直書
上個週五,不小心被我發現,原來 WebKit 已經實做利用 SVG 的標籤,來改變文字排列方向了。這讓我省了一些事情,也爭取了一些時間,繼續進行比較精細的原始碼追蹤。
<div style="word-break:break-all; width:480;overflow:auto">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 400 300">
<text writing-mode='tb'>測試直書01234567測試直書。</text></svg></div>
用上面這段 html 就可以達成了,不過在 IE 是沒辦法的。
<div style="word-break:break-all; width:480;overflow:auto">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 400 300">
<text writing-mode='tb'>測試直書01234567測試直書。</text></svg></div>
用上面這段 html 就可以達成了,不過在 IE 是沒辦法的。
2010年6月2日 星期三
蟄伏已久的心再度被喚醒
今天 Bernie 說,他想換個中醫, C 醫生療效不怎麼好,他有點害怕。然後他給我看了 J 醫生的網頁,不看還好,看了真的讓我血脈賁張。怎麼說呢?我看過的那些中醫古本,我超級喜歡的那幾本,包括曹穎甫、李可、彭子益、張錫純、陳修園等人的醫案,他們開出的藥方,那種攻守兼具,明辨陰陽的藥方,就出現在 J 醫生的醫案。
自從五月換了工作,一直沉浸在工作裡面,新的工作真是有趣,讓我把所有時間都花在上面,每天上班都超過九個小時,還意猶未盡。一直以為學習中醫只是對前一份工作失望後的寄情作用,沒想到今天發現,中醫其實一直藏在我心底,從來沒有消逝。要不是換新工作沒有放假,我超想跟 Bernie 一起跑一趟 J 醫生的診所。
~真的!我超想去一趟的。
自從五月換了工作,一直沉浸在工作裡面,新的工作真是有趣,讓我把所有時間都花在上面,每天上班都超過九個小時,還意猶未盡。一直以為學習中醫只是對前一份工作失望後的寄情作用,沒想到今天發現,中醫其實一直藏在我心底,從來沒有消逝。要不是換新工作沒有放假,我超想跟 Bernie 一起跑一趟 J 醫生的診所。
~真的!我超想去一趟的。
鞕道:追蹤 WebKit 的原始碼,找出直書的部份
先說明一下,『鞕』音義同『硬』,請不要搞成鞭子的『鞭』囉。這次老大要我們兩個禮拜內,改寫 WebKit 使其擁有中文直書的功能,這就是台語講的『鞕道』。
追了一整天,先紀錄一下目前找到的東西。
追了一整天,先紀錄一下目前找到的東西。
- WebKit 把文字方向的功能,透過 class SVGRenderStyle 內的 struct IngeritedFlags 內的 unsign _writingMode 來控制, EWritingMode 定義請見這篇
- SVGRenderStyle 透過 setBitDefaults() 來賦予包含 svg_inherited_flags._writingMode 初值
2010年6月1日 星期二
關於 Webkit 在中文直書上的技術問題
安裝 WebKit 請參考這裡
目前 Webkit 可透過呼叫 -webkit-transform: rotate(90deg) 的方式,把文字及排版同時旋轉九十度。而中文直書需要的,其實只要把排版轉九十度,文字不旋轉。
在 /Webkit/WebCore/rendering/SVGTextLayoutUtilities.cpp
有段 float glyphOrientationToAngle(const SVGRenderStyle*, bool isVerticalText, const UChar&) { }
回傳值為角度,共有 0, 90, 180, 270 四種
假如文字方向垂直,則檢查 SVGRenderStyle::glyphOrientationVertical(),
否則為 SVGRenderStyle::glyphOrientationHorizontal()
回傳的 state 有 GO_AUTO, GO_90DEG, GO_180DEG, GO270DEG, GO_0DEG 五種。
...(以下刪去)
(我覺得之前好像搞錯方向了)
在 /Webkit/WebCore/ 目錄裡面搜尋 WM_TBRL ,總共出現在五個地方:
已經有實作了,只是還沒有開放而已。
~先寫到這裡
目前 Webkit 可透過呼叫 -webkit-transform: rotate(90deg) 的方式,把文字及排版同時旋轉九十度。而中文直書需要的,其實只要把排版轉九十度,文字不旋轉。
...(以下刪去)
(我覺得之前好像搞錯方向了)
在 /Webkit/WebCore/ 目錄裡面搜尋 WM_TBRL ,總共出現在五個地方:
- /Webkit/WebCore/rendering/style/SVGRenderStyleDefs.h -- 定義 EWritingMode { WM_LRTB, WM_LR, WM_RLTB, WM_RL, WM_TBRL, WM_TB } ... 直書就是這兩個
- /Webkit/WebCore/svg/SVGFont.cpp -- 透過 SVGRenderStyle->writingMode() 是否為 WM_TBRL 或者 WM_TB 來判斷直書與否
- /Webkit/WebCore/svg/SVGTextContentElement.cpp -- 透過檢查 SVGRenderStyle->writingMode() 決定是否為直書,整個類別使用多次直書與否進行不同邏輯演算
- /Webkit/WebCore/css/CSSPrimitiveValueMapping.h -- 進行各種 CSSValue 與程式定義的對應
- /WebKit/WebCore/rendering/SVGTextLayoutUtilities.cpp -- 把 SVGRenderStyle->writingMode() 是否為直書,包裝成一個 isVerticalWritingMode() 的函式。
~先寫到這裡
2010年5月31日 星期一
從原始檔建立 Sigil
目前看來 Sigil 是最有可能使用的解決方案,盡力去瞭解一下也是應該的,想想從編譯開做起,也好對 Sigil 有更深一步的瞭解。
- 使用平台: Ubuntu 10.04 LTS
- 編譯程式:CMake 2.8.0 (含)以上
- 函式庫:Qt 4.6.x
- 解開 Sigil-Code.zip
- 安裝 Qt、CMake
- 如果沒有 C++ Compiler ,可以安裝 g++ (sudo apt-get install g++ )
- 安裝 libqt4-xml, libqt4-svg, libqt4-webkit and libqt4-dev 這幾個 libraries 。(sudo apt-get install libqt4-gui libqt4-svg libqt4-webkit libqt4-xml libqt4-dev)
- 執行 cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release /Sigil/Source/Code/Path
- 執行 make
訂閱:
文章 (Atom)