找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
楼主: mmqqll

[软硬件讨论] 从解剖一只麻雀开始PALM深入编程

[复制链接]
发表于 2009-4-8 18:18 | 显示全部楼层
牛人一个
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-4-8 20:01 | 显示全部楼层
7、OK,走到这一步,创建字库的工作就已经完成了。2 M) O7 x# _* N' Y
' R) e7 s8 v9 n$ G5 U3 u; G

: f/ H! V+ s+ f7 Q* x* F, y, v) q: @  g! W: [2 g; U2 m- o
, C& O7 A3 Q7 j& b: F6 F. H* H3 `/ r
90%。- l, I( h' F9 ~2 @
俗话说,行百里路者半九十,好吧,我们就开始创建字库的另一半工作吧。& r3 c. S9 z, c
如何把我们创建的字库应用到程序里?直接关联,显然不行!这里我要小小地谴责一下SugarMemo的作者,您老人家在烧禾花雀的时候干嘛非把毛给褪掉,害得我吃了半天还以为是红烧乳鸽呢!没办法,我们只好对已经创建的文本字库进行褪毛工作吧。
+ j0 K7 V4 |7 p7 h4 E  R5 J回到CodeWarrior编程环境,仔细检查一下SugarFont.r这个字库资源文件,还好,毛没有褪得太干净,有些语句还认识。什么?您不认识,怎么可能哪,仔细看看:5 Q& s  s" P3 d7 z3 Z  L6 Y
data 'NFNT' (12345)* p* r  M" m$ l8 t0 r
...8 `4 x& u: s- F$ }( g; R
data 'NFNT' (12346)
# [: O  h  g. `9 Y...
* {" P9 y( f* T8 T4 {data 'NFNT' (12347)
1 u" e1 V- F% s9 c0 k...0 Y, r# d5 b) N# }
data 'NFNT' (12348)5 r8 w9 G: @  H: S: g
...2 o/ T6 d, _' V8 l; O- ?
data中文就是数据的意思,'NFNT'代表的是字库的识别码,12345,12346,12347,12348自然就是字库的ID标识喽。浏览整个文件,只发现了四个ID标识,OK,说明SugarMemo创建了四种自定义字体,好吧,全都把他们换掉,慢着,说不定作者会生气的,那就换掉三种吧,这下应该没问题了吧。
% {5 A* u4 p7 p6 F9 `: S, j7 ^& o8 Y9 }4 _, L% S1 Y) N2 @$ b# }
[ 本帖最后由 mmqqll 于 2009-4-8 21:47 编辑 ]
35.JPG
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-4-8 20:22 | 显示全部楼层
8、一个是字节数组,一个是文本字库,how to translate?
4 Y# D6 Y7 h& q2 Y0 I没问题,进入到CodeWarrior的安装目录:C:\Program Files\Metrowerks\CodeWarrior\CW for Palm OS Tools\PilRC,您可以看到PilRC.EXE这样一个文件,对了,就是它,它是一个DOS控制台程序,所以没有图标。什么是DOS控制台程序,太简单了,DOS下运行的程序都是DOS控制台程序。什么?不会用,没关系,凑合着用吧,实在不会用,那我做一个批处理文件,这样您就不用费心了。什么?批处理文件怎么用?生气了,拒绝回答!; m1 A6 y- q) m
由于PilRC.EXE这个文件在palm编程时经常会用到,建议把它关联到系统路径下面:/ p% G8 i+ ]1 {0 @+ k
打开系统属性--〉高级-〉环境变量表--〉path,把PilRC.EXE所在的目录拷贝到它下面,记住,用分号分隔啊。
% C' S/ T' Q" A 36.JPG
3 Y' _# o; c+ S: Y1 T
, \8 u7 ]. ^. l$ h% g  a7 _批处理文件在这下载:

a.bat

30 Bytes, 下载次数: 257

回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-4-8 21:06 | 显示全部楼层
9、再次回到CodeWarrior编程环境,打开字库资源文件的头文件SugarFontRsc.h,真有意思,四种字体的定义在这里都看到了,看我猜得对不对:! Z9 i! r+ M/ e% r1 s" C+ j3 v. F
#define PhoneticSmallFont         12345      --〉小音标字库5 N) X' N+ a% B0 k9 i. x9 y
#define PhoneticLargeFont         12346      --〉中音标字库1 {% t' o" P. P  Q7 W4 }
#define PhoneticHugeFont        12347      --〉大音标字库
! n) z% D, m7 l1 y( ^#define OS5_16_Font         12348      --〉显示字库
3 n4 o9 V7 L& S. f% ?' j我们的目标:替换前三种字库,
0 }. c$ Z- S" k小音标字库--〉精美小音标字库% @* D% _/ W! c
中音标字库--〉精美大音标字库
' R& w; [- D1 C大音标字库--〉精美系统大字体字库
; V3 u. {8 x3 b  \  o- g1 L/ M( BOK,先替换大音标字库成为系统大字体字库,它的ID标识是12347,定义的替换宏是PhoneticHugeFont。什么是宏?举个简单的例子,您的身份证号码和您的名字,哪个更容易让别人记住?对了,当然是名字了,ID好比身份证号码,宏就相当于它的名字,如果觉得这样还不确切,那就把宏当成外号吧,一般叫名字没有反应的人,叫他的外号绝对有反应。
( E# d& w5 v$ [2 J2 C+ x0 J2 |: T1 }好的,打开记事本,创建一个文件,名字随意,后缀一定是.rcp,我给它起的名字是FontTest001.rcp,它代表的是文本资源文件,内容如下:
6 O4 l7 N( {8 T# u8 V#include "SugarFontRsc.h"
" k1 S5 A1 c3 y7 Z" t3 _+ n
0 N* i- o1 H4 gFONTFAMILY ID PhoneticHugeFont FONTID 195 LOCALE "enUS"
& k9 d- I) U, b/ I! nBEGIN5 n2 c$ @6 d4 G3 X
   FONT "Eng-329-CAI97848×56 low.txt" DENSITY 727 B$ h; {! v$ j% v) Z+ W6 _" i
   FONT "Eng-329-CAI97848×56 high.txt" DENSITY 144( i5 Z5 g% m" }! P2 E
END, |6 D, O5 u& C/ u3 F  m
; I/ V. u7 N3 M% O
看懂了吗?不懂没关系,我在这慢慢解释,文件第一行是关联字库资源的头文件,由于PhoneticHugeFont 是在它里面被定义的,所以这一行一定是要的。第三行是创建一个字库家庭(老外有时候真幽默,起Font Family这个名字真是形象表达了同源字库集合的概念,赞一个),这个家庭成员都是为PhoneticHugeFont服务的,字库家庭的ID标识是195,为什么是195呢,问SugarMemo作者吧,或者您在SugarMemo.h中搜索一下,可以找到这么一句话:
+ B% `, U0 m+ z- h2 ?#define PhoneticHugeFont        ((FontID)195)
, q$ f& ]& o: O* M" H4 H6 K5 E' y当然了它是说英语的了"enUS"。Begin和End之间是字库家庭成员,高分辨率字体和低分辨率字体,分别以72和144来区别,为什么呢?我也不知道,死记住就行了。跟我一起念100遍:所有的高分字体144,所有的低分字体72。
: G8 \# U6 O7 T6 N5 P; f% w
( M. L, w+ R' y[ 本帖最后由 mmqqll 于 2009-4-8 21:49 编辑 ]
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-4-8 21:31 | 显示全部楼层
10、把批处理文件,两个文本字库文件(高分辨率,低分辨率),文本资源文件统统拷贝到Palm WorkSpace\SugarMemo 0.59Beta Src\Src目录下面。为什么?因为字库资源的头文件在这个目录下面呀。
8 @1 p/ y# A- g. E  M8 n3 q运行批处理文件如下图所示,会得到字库的中间目标文件nfnt303b.bin。
37.JPG
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-4-8 21:43 | 显示全部楼层
11、用ultraEdit-32把上面生成的字库资源中间目标文件打开。Ultraedit是什么?I服了You,这可是解剖程序的必备工具之一呀,给您个链接:http://nj.onlinedown.net/soft/7752.htm
7 d2 u& R, n. G8 d哈哈,怎么这么像呢,SugarFont.r中所定义的字节数组内容是不是就是字库资源中间目标文件呢?不管它,用这个文件把字节数组内容替换掉。
) N4 d- ]$ H2 q1 ^4 q
' {8 g( d  p5 p( M+ o7 h[ 本帖最后由 mmqqll 于 2009-4-9 00:14 编辑 ]
38.JPG
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-4-8 22:03 | 显示全部楼层
12、如何替换SugarMemo.r文件中字节数组的内容呢?, }& B% \' u# R/ J- k
首先先找到要替换的字库ID标识所在的数组位置,在这里,要替换的字库ID是1237,找到后,用两种方法之一来替换:: h# p" ~8 |8 P& C
方法一:字库中间目标文件大小是22274个字节,算您5秒钟替换一个字节,您总共需要花费111370秒,也就是说,您不吃不喝,要用一天半的时间;
6 x9 d+ ~& F' N# b& D方法二:本人不才,编了一个小程序生成字节数组,一秒钟搞定,然后使用拷贝粘贴把字节数组替换掉;
( u% J) f, ~3 s; }生成字节数组的小程序连同VB源代码一同献上,有兴趣的胖友可以自己研究改进: Font Bin to Array.zip (7.13 KB, 下载次数: 278) ! x$ b8 c0 p- O4 ~5 z

; ]2 b) r- w; |[ 本帖最后由 mmqqll 于 2009-4-8 23:08 编辑 ]
39.JPG
回复 支持 反对

使用道具 举报

发表于 2009-4-8 22:07 | 显示全部楼层
踩踩。正准备入手小胖。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-4-8 23:03 | 显示全部楼层
13、好了,系统字库已经放进去了,接下来,我们再制作两套音标字库。对,没错,自己制作,毛主席教导我们,自己动手,丰衣足食。
# r) y* s7 C9 M; j) `首先,要知道Sugarmemo里的音标字符的对应位置,这个工作已经有达人做好了,不需要我们再花精力了: SugarMemo音标对照表.pdf (42.66 KB, 下载次数: 328)
# L# ?" P1 n' E6 _5 i4 C: L打开PixelFont,设置好点阵字体大小,这里,大音标字库我选择32x32点阵,小音标字库我选择16x22点阵。选择一个精美的windows字库,然后开始制作。怎么?不会做?参看下面例图:, {: N9 P/ \* {4 h& M; `9 V
# E' T3 @2 F. }  ~/ Q0 y# u
[ 本帖最后由 mmqqll 于 2009-4-8 23:07 编辑 ]
40.JPG
41.JPG
42.JPG
43.JPG
44.JPG
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-4-8 23:27 | 显示全部楼层
14、到这一步,音标字库已经做好了,同样过程,将它们导入到SugarMemo程序中。
: Q& \% f, }% ?6 D: L3 ?接下来,激动人心的时刻到了,编译运行,察看结果:诸位胖友,屏住呼吸,仔细察看新旧两种SugarMemo程序显示界面的差异:6 f; P0 ?& P7 q7 H: G
注意,在SugarMemo字体设置窗口里,单词选择大音标字体,音标选择小音标或中音标字体。
- N: j; _& D+ x- L, }/ }2 B9 F% ~* z: @8 a
[ 本帖最后由 mmqqll 于 2009-4-8 23:47 编辑 ]
45.JPG
46.JPG
回复 支持 反对

使用道具 举报

发表于 2009-4-8 23:32 | 显示全部楼层
彻底看不懂……
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-4-9 00:13 | 显示全部楼层
对不起,忘了交待一点,在改写字库资源文件的时候,要将字库识别码'NFNT'改写为'nfnt'。为什么呢?'NFNT'代表的是低分辨率字体,'nfnt'代表的是字体集合,它包含低分辨率和高分辨率两种字体。
47.JPG
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-4-9 09:44 | 显示全部楼层
好了,到这一步,SugarMemo字体改造大餐就奉送完毕了,希望诸位发烧友能够喜欢。大家在消化过程中遇到什么问题,希望能够积极回帖反映,本人本着有问不一定必答的精神,与发烧友们一起享受palm编程的乐趣。: S" z' O) C# J6 p# p9 E
下一讲,我们开始享用第二道大餐:SugarMemo操作按钮及菜单改造大法。
回复 支持 反对

使用道具 举报

发表于 2009-4-9 17:11 | 显示全部楼层
哈哈,注个ID来顶
回复 支持 反对

使用道具 举报

发表于 2009-4-9 20:26 | 显示全部楼层
赞一个!!!  胖友的希望!
$ ?" a! v5 J! O7 J6 i) D9 {9 R. `2 a& T/ O8 t
[3G坛,手机登陆吹友吧发帖]
回复 支持 反对

使用道具 举报

发表于 2009-4-9 20:41 | 显示全部楼层
楼主,我想要您的制作好的音标字库
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-4-9 21:17 | 显示全部楼层
两套音标文本字库3 _9 P6 i3 ~; H/ m7 `1 |+ k* Q" s
# k- q$ k: |$ \# |2 @4 ]3 ^
[ 本帖最后由 mmqqll 于 2009-4-9 23:16 编辑 ]

Phonetic 16×22 high.txt

21.62 KB, 下载次数: 232

很贵的,希望不要下载

Phonetic 16×22 low.txt

7.35 KB, 下载次数: 256

真地很贵,希望不要下载

Phonetic 32×32 high.txt

47.79 KB, 下载次数: 251

非常贵的,希望不要下载

Phonetic 32×32 low.txt

14.26 KB, 下载次数: 242

真地非常贵,希望不要下载

nfnt3039.bin

3 KB, 下载次数: 260

nfnt303a.bin

6.87 KB, 下载次数: 261

回复 支持 反对

使用道具 举报

发表于 2009-4-9 22:16 | 显示全部楼层
出书吧。现在市场上的书太老啦。实在没兴趣看。楼主出书,本人一定买
回复 支持 反对

使用道具 举报

发表于 2009-4-10 00:01 | 显示全部楼层
lz真是强人呀。一直想学习来着。终于有机会了。可惜最近比较忙。留个记号以后慢慢学。
回复 支持 反对

使用道具 举报

发表于 2009-4-10 10:15 | 显示全部楼层

强烈顶一下

我们大力支持一下,这个真的是好东西,真得很好玩哦
回复 支持 反对

使用道具 举报

发表于 2009-4-10 20:24 | 显示全部楼层
大开眼界啊。。。。。。。。。!!!!!!!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-4-10 20:31 | 显示全部楼层
希望有根据解剖大餐做出自己中意字库的胖友在此留个脚印,谈谈体会。没有搞出来的朋友也别灰心,回帖反映一下遇到哪些问题,可能的话,一起探讨一下。是否因为本人讲述的不够生动直观,若是的话,本人一定在奉送下一道正餐的时候加以改进。
回复 支持 反对

使用道具 举报

发表于 2009-4-10 22:09 | 显示全部楼层
顶楼主,真的要出书啊,比书店的palm书生动多了
回复 支持 反对

使用道具 举报

发表于 2009-4-10 22:32 | 显示全部楼层
强帖被插了好多队。
回复 支持 反对

使用道具 举报

发表于 2009-4-11 00:08 | 显示全部楼层
哈哈,谢谢楼主分享。有没有发现每次Sugarmemo重启后用UNINSTALL MANAGER把 (S) SGMM ID:0 删掉,下次就会正常。到底是为啥?我清明节也在婺源看油菜花
回复 支持 反对

使用道具 举报

发表于 2009-4-11 00:12 | 显示全部楼层
厉害啊LZ
回复 支持 反对

使用道具 举报

发表于 2009-4-11 00:18 | 显示全部楼层
看不懂! 顶。。。。lz 呵呵。。。
回复 支持 反对

使用道具 举报

发表于 2009-4-11 00:44 | 显示全部楼层
palm os已经快被淘汰了吧
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-4-11 10:38 | 显示全部楼层
原帖由 antivirus 于 2009-4-11 00:08 发表 & O) }1 W% P; P5 u
哈哈,谢谢楼主分享。有没有发现每次Sugarmemo重启后用UNINSTALL MANAGER把 (S) SGMM ID:0 删掉,下次就会正常。到底是为啥?我清明节也在婺源看油菜花
# q* a  |' ^* z1 {+ V. m
哈,瞧我这大脑子,说着说着就把正事忘了。根据我的分析,造成Sugarmemo重启的原因可能是它本身的音标字库不太完整的原因(如不正确,欢迎胖友达人拍砖),使用完整音标字库替换后,这个现象应该可以解决。这个软件相当不错,再次赞作者一个。, E& ?" N! Y) \2 O

  Y2 E( u3 k) Z" r( i/ {[ 本帖最后由 mmqqll 于 2009-4-11 11:01 编辑 ]
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-4-11 10:48 | 显示全部楼层
原帖由 xiaozhunai 于 2009-4-11 00:44 发表 2 j* X2 ]( v# U0 f/ m) }
palm os已经快被淘汰了吧

- A8 r5 N) ^# U4 u) Q5 _6 z) H( p( Y严重同意!但有一点我感到很困惑,现在手机硬件软件配置越来越强,但是给发烧友提供的可玩空间却越来越小。而且现在的手机系统也趋于封闭,想在上面搞个编程体验还要申请许可证(操,鄙视下塞班),没劲!
回复 支持 反对

使用道具 举报

发表于 2009-4-11 15:42 | 显示全部楼层
原帖由 mmqqll 于 2009-4-11 10:48 发表
3 Q* g( N* s$ j5 J# u# z# w
% ]6 x! ~/ |) g) m  i  d6 I4 A& ]9 f严重同意!但有一点我感到很困惑,现在手机硬件软件配置越来越强,但是给发烧友提供的可玩空间却越来越小。而且现在的手机系统也趋于封闭,想在上面搞个编程体验还要申请许可证(操,鄙视下塞班),没劲!

% t4 Q9 _2 h) R) C* J. R$ [) `- M. b: ]8 H
顶此句
回复 支持 反对

使用道具 举报

发表于 2009-4-11 22:35 | 显示全部楼层
这种帖子太少见了
回复 支持 反对

使用道具 举报

发表于 2009-4-11 23:28 | 显示全部楼层
strong strong
回复 支持 反对

使用道具 举报

发表于 2009-4-11 23:35 | 显示全部楼层
我也顶顶顶
: j9 g# N( a7 w
! a% H$ H$ t5 ~: @3 @# y佩服!
回复 支持 反对

使用道具 举报

发表于 2009-4-12 01:39 | 显示全部楼层
楼主真是有心人* i  W% d, v/ n" X4 V
) P( o1 u1 _9 s# M( c0 W) j3 m这样的帖子早点看到就好了,呵呵# y2 G8 ?8 g' R) k9 f  N
- g  R6 ^3 {; F% @+ W希望palm pre出来时能尽快看到楼主相关文章
回复 支持 反对

使用道具 举报

发表于 2009-4-12 09:52 | 显示全部楼层
学习学习) P7 t0 u" P6 R+ |
呵呵
回复 支持 反对

使用道具 举报

发表于 2009-4-12 11:30 | 显示全部楼层
留名,学习
回复 支持 反对

使用道具 举报

发表于 2009-4-12 15:28 | 显示全部楼层
上厕所不带纸你是------高手呀!:)1 顶顶更健康
回复 支持 反对

使用道具 举报

发表于 2009-4-12 15:40 | 显示全部楼层
:)1 顶顶更健康
回复 支持 反对

使用道具 举报

发表于 2009-4-12 21:48 | 显示全部楼层
顶楼主 高人!2 {4 |: N. N, v) Y' K$ I7 B7 L1 y
. Q5 F) t9 V4 \- h4 j# r8 k  q. N
[3G坛,手机登陆吹友吧发帖]
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

QQ|Archiver|手机版|小黑屋|吹友吧 ( 京ICP备05078561号 )

GMT+8, 2025-4-4 04:22 , Processed in 0.394531 second(s), 16 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表