Flex FAQ #8: Font Embedding 全集
尋日要幫一個 application 做 font embedding
主要係想 embed 楷書
其實 font embedding 本身並唔係一件難事
因為 Flex 本身已經 support~
但係 embed 得黎又要控制好 file size 就唔簡單~!
至於楷書o既問題就更加多…
應該 specific d 講… 係 Microsoft o既標楷體o既問題更加多…
由淺入深~
1) Flex 直接 Embed font
方法主要有兩種
1A) Flex CSS refer local font
@font-face
{
src: local("標楷體");
font-family: "KaiShu";
}
o係 CSS 裡面 declare font-face
然後 source 利用 local 指住個字體名
最後 declare 一個 font family 名~ (呢個隨意就得)
呢度最 tricky 係個字體名… 特別係 Mac 機再加埋中文字…
經常攪到 Flex Builder compile o既時候會出現 local build error…
好: 快
壞: 唔穩定, File Size 大
1B) Flex CSS refer font file
@font-face
{
src: url("/fonts/標楷體.ttc");
font-family: "KaiShu";
}
想解決 1A 出現o既問題就要利用 source 指 url 直接指住 font file
font file 大家可以o係唔同地方買或者 download 到
如果o係 system font 的話
Windows 可以o係控制台 > 字型 裡面抄走
Mac 可以o係 System/Library/Fonts 裡面抄走
(Mac 特別要留意副檔名 dfont 的係 embed 唔到架)
好: 穩定~ 準
壞: File Size 大
備註: Embed Microsoft Windows 內置標楷體o既爆字問題
如果大家要 embed 標楷體~ 就千祈唔好用 Windows 裡面o既標楷體
因為 embed 之後o係 Mac 機睇係會出現爆字問題
關於爆字 (字形破碎) o既問題請參考 – 破碎的細明體研究院
http://bbs.bnw.com.tw/conference/viewtopic.php?t=2856
簡單黎講o係 MS 的標楷體 version 太舊 (3.0)
解決方法係去華康科技買返新 d o既 version (latest 5.0) (我試過 2005 年o既 3.10 無問題)
不過用華康標楷體 3.10 最大o既問題係 file size…
MS (4.9Mb) 華康 (27.9Mb)
一個 Flex application 用之前要 download 4.9Mb 已經唔容易… 更何況 27.9Mb…
另外更要特別提一提
Embed 27.9Mb o既字形係好耐同好唔 stable 架
我曾經多次出現 out of memory o既問題…
10 次 compile 得 2 – 3 次成功…
(Mac Pro 都頂唔順… 好難相信… 應該又係 Flex Builder 問題…)
2) Flex 利用 unicode-range 抽出要 embed o既字
@font-face
{
src: url("/fonts/標楷體.ttc");
font-family: "KaiShu";
unicode-range: U+5011,U+6211;
}
其實利用 Flex CSS Embed font o既時候係可以透過 unicode-range 抽出某 d 字架
以上面為例就會將 “們” 字同 “我” 字抽出黎啦~!
究竟點解係 5011 同 6211 呢?
其實 5011 同 6211 係 d 字o既 unicode value in HEX
想 get 一個中文字o既 unicode
大家可以用呢個 Chinese to Unicode converter
http://www.chinese-tools.com/tools/converter-unicode.html
記住要將個 result 轉返做 HEX value
如果大家用 Mac o既 Numbers 的話可以用下面呢個 equation
=CONCATENATE("U+",RIGHT(DEC2HEX(CODE("字")),4))
@font-face
{
src: url("/fonts/標楷體.ttc");
font-family: "KaiShu";
unicode-range: U+5011-U+6211;
}
至於呢個係另一種寫法~ 將 5011 至 6211 所有字都 embed~
當然大家可以 combine comma “,” 同 dash “-” 兩種寫法啦~!!
好: 要用o既字先 embed~ 有效控制 file size
壞: 煩… 要逐粒字加都幾浪費時間…
更壞: Flex Builder 應該有 bug… 當 unicode-range 後面太多野會出現 compilation error…
3) Flash + Flex Combo = 無敵~!
試左一整日… 放棄左一輪之後… 突然諗到o既絕技~!
Flash + Flex Combo
首先利用 Flash dynamic text field 寫低需要o既字

記住要揀埋你需要o既 font
跟住 set dynamic text field o既 font embedding

然後揀 Auto Fill~
一下就掂晒~!

然後 Export SWF file~
最後 Flex embed SWF file
@font-face
{
src: url("/fonts/font.swf");
font-family: "DFBiaoKaiShu-B5";
}
留意 font family 一欄今次唔可以隨便填
一定要同 Flash 裡面寫o既完全一樣
以我上面 example 為例就係 DFBiaoKaiShu-B5
之後就可以 compile 啦~!
好: 快 準 穩定
壞: 要開多一個 application… =.=
Related posts:
No comments yet.
You must be logged in to post a comment.
No trackbacks yet.
Flex FAQ #10: Flex 4 有幾多個 namespace
about 3 weeks ago - No comments
知道點解要用 Spark 之後當然要實戰下啦
首先寫返個 Hello Spark application 先
以下o係 main application o既 source code
* 太簡單喇~ 無 build application 放上黎~ 抱歉
<?xml version="1.0" encoding="utf-8"?>
<s:Application
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx">
<s:Label text="Hello Spark!" />
</s:Application>
唔太複雜吧~ 不過都幾多野唔同~ 首先當然係 namespace 啦
Flex Builder 3 (FB3) 寫 Flex 3 app 時o既 namespace 真係簡單到不得了
xmlns:mx="http://www.adobe.com/2006/mxml"
一個 mx 走天涯~
一個已經包括左:
- language (Array, uint, Number, Object etc…) 同埋
- Halo components (Button, VBox, DataGrid etc…)
FB4 寫 Flex 3 More >
Flex FAQ #9: 點解要 Spark
about 3 weeks ago - No comments
認識 Spark 之前先要講下 Halo
Halo 係 Flex 3 o既主要骨格
由最 base o既 application (mx:Application)
去到 layout properties (horizontalAlign, padding)
再去到 UI control (mx:Button, mx:TextInput) 都係 Halo o既範圍
而 Spark 就係 Flex 4 o既主要骨格
好地地用緊 Halo 點解又要 Spark 呢?
用得 Flex 比較深入o既 developer 或者 designer… 又或者 dezeloper 都會發現 Halo 有幾個比較大o既問題
1) Skinning Skinning and Skinning
Halo control 要做 skin 係非常痛苦架
一係就只係用 CSS 做 d 好似無做過咁o既 styling
一係就用 More >
Flex 4 重新上路
about 3 weeks ago - No comments
近期因為要寫幾個比較細既 Flex application
所以借機會用下 Flash Builder 4 寫 Flex 4 apps
Flex 4 最大最大既改變當然係 Spark framework
黎緊我會將寫 Flex 4 o既一 d 心得同大家分享下
大家亦唔需要太擔心 Flex 4 o既 syntax 會再變
因為 Flex 4 o既 SDK 已經 freeze 左
除左 bug fix 同埋 font embedding 之外~ 其他都應該唔會再變
大家可以放心去用喇~!
首先大家要 Flex 4 app 當然要用最新o既 compiler 啦
大家可以用 Flex 4 o既 SDK 又或者 Adobe Flash Builder 4 beta 2
Adobe More >
Adobe MAX SF day 3
about 1 year ago - No comments
最後一日 MAX
今年有 d 唔同~
Sneak peak session 同 General session 逼埋o係同一日
第三日變左只係得堂上~
其中一堂講 Flash player 10 最新既 text engine 同 text layout framework
Text layout framework 可以話係現有 text controls o既加強版
可以 support 到更加多o既文字效果
- multiple column
(重點係 support 自動換 column
仲有 multiple column selection
仲可以 self define irregular shape columns)
- support 打直寫某 d 字~ 例如中文同日文
(大家以後可以唔駛靠 enter 靠行黎打中文喇)
詳細可以參考 Adobe Labs
http://labs.adobe.com/technologies/textlayout/
其他時間就同 Way 作最後衝刺
Adobe MAX 有個傳統
就係要行攤位儲印仔換禮物
外國人比較得意… 佢地會直接行去人地個檔度要人印… More >
Adobe MAX SF day 2
about 1 year ago - No comments
(抱歉… 太忙喇… 遲左好多先出 post…)
第二日又黎喇~ 精神都算唔錯~
今朝o係 marriot 食早餐
原本諗住會同會場的有 difference
但係都係食o個 d 野…
生果… 硬飽… 奶… 茶… 果汁…
比較好o既係果汁係樽裝~ 可以拎走飲~ 仲要係 tropicana~ 正
朝早上 Flex testing o既 session
之前寫 Flex application 都比較少考慮 testing
呢個 session 對我黎講都幾重要~
不過上完之後就會發覺 testing 唔應該係事後先去做…
而係要由 Day 1 開始每寫一 part 就要寫返相對應o既 testing module…
基本上工作量係 double 或者 triple~ 因為除左 unit test 仲有 function test, etc…
講真… 有幾多 company 會考慮到同埋 afford 得起呢…
下一個 app… 如果我有時間的話我都想認真的做一次…
跟住就係 General More >
Adobe MAX SF day 1
about 1 year ago - No comments
MAX 終於開始~
去到 Moscone 就見到 Kai~
佢同佢太太一齊去 MAX~ 真係開心
之後即刻上二樓食早餐
同之前一樣… 硬飽… 果汁… 咖啡… 奶…
Somehow 我總係覺得唔會夠飽…
食飽見未夠鐘就去左 community lounge
一入到去就見到熟識既面孔~
John, Sumi, Craig 同 JD 都o係到
總係覺得見到佢地就 = 見到 Adobe community~ 哈哈
打完招呼傾左一陣就要趕去聽野
第一場係 Flex testing~ 都 ok~
之後就係精采o既 general session~!
一如以往~ 未入到門就聽到好激昂o既音樂~!
一入到去真係好震撼~ 3 個 main screen 加兩組 side screen
main screen 係山峰藍天白雲~ 一堆 Adobe product logos o係天度飛~ 好型~
跟住所有 screen 會好似老虎機咁轉 d product logos
然後中間加插 30onMAX o既 video~
好彩無拍者… 唔係比人 More >
Adobe MAX SF pre day 1
about 1 year ago - No comments
期待已久既 trip 終於都到左
Adobe MAX 2008 San Francisco
2 年之前去 MAX Las Vegas 見識到好多野
特別係學左 Flex…
可以話係完全改變左自己既 programming path
今年都希望可以再進一步深造下~
當然啦~ 去之前大約都估到今次 MAX focus point 會係 Thermo
一早去到機場~ 同之前一樣搭機鐵~
其實都諗左好耐搭唔搭巴士~ 但係最後都係機鐵算… 最緊要快
到左機場會合阿 Way 然後去左 2 號大樓食餃子~
$40 有麵有餃 (8隻) 真係好抵~!!
不過成個機場o既冷清程度真係有 d 害怕
d 餐廳阿姐每日都唔知點過日子…
上到飛機見到個全新o既 Cathay Pacific shell seat 的確… 的確有 d 呆…
乜個位咁樣衰o既… 再一次證明相係信唔過架…
不過~ 坐落的確係好舒服~ 唔會好似西北 d 機咁逼到爆
但係好坐唔等如我想坐耐 d… 就o係準備飛走o既一刻
Captain 竟然話架機有 fuel leakage 要折返…
Fuel leakage… 聽落都幾恐怖… More >
Yahoo! 立法會選舉 interactive Flash banner
about 1 year ago - No comments
幾個月之前透過 blog 識到一位 designer Bryan
(哈哈~ blog 的確有佢 networking 既用途~
就算你幾個月唔 update 都好 =.=||)
Bryan 想我幫佢手為 Yahoo! 香港既立法會選舉網頁寫一個 Flash 既 interactive banner
一聽到 Yahoo! 就二話不說即刻應承~
相信一定係好好既 experience~
(結果… 唔… 原來係咁… 真係估唔到…)
Anyway… 講返個 banner
Banner 裡面其中一個 function 係要將一 d avatars randomly placed in 一個 specified area
起初我只係用簡單既切餅方法將一個長方形切成等份
然後 randomly place d avatar 入 d 餅入面…
好明顯… 結果好生硬…
之後嘗試唔用餅~ 直接做 random placement
然後每一次 place 既時候都 check hit area~ if More >
Flex FAQ #6: Layout 秘技 Part 1
about 1 year ago - No comments
好多時候寫 Flex application 有大部份時間都係用o係 UI layout
雖然 Flex 既 UI layout 已經好易寫~ 但係有時想做到心目中既效果唔係咁易
舉個例我地想整一個 shopping cart list
我地會用 List + itemRenderer
itemRenderer 既 content 多數係 Label + Button
通常我地都會將 Label 放埋一邊~ Button 放另一邊~ 好似咁…
A List with Label and Button itemRenderer
但係有時總會出現一 d item o既名太長…
結果令到 button distort 左~
Too long label resulting distorted button
解決方法係利用 Label o既 truncateToFit
而用 truncateToFit o既時候一定要 define minWidth 或者 maxWidth
直覺上當然係用 More >
Sometimes I hate Flex… Sometimes
about 1 year ago - No comments
Don’t get it wrong… I am not leaving Flex, most of my current developments still rely on it and I am sure it will last for several more years.
Working with Flex for nearly two years. I am sure I have the right choice however sometimes Flex do makes me mad.
SWFLoader content can’t be unloaded completely.
(How More >



