Web blog of yydzero
姚延栋(Yandong Yao)的博客
归档
« 十一月 2009
星期日星期一星期二星期三星期四星期五星期六
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
     
       
今天
Click me to subscribe
Search In My Blog

链接
 

今日点击: 80

Locations of visitors to this page
星期二 十二月 25, 2007
在 Solaris 上安装 TTX(一个dump TrueType字体文件数据的工具)

TTX 官方网站只提供了Windows和Mac平台的二进制程序,因此如果想在Solaris上使用 TTX 需要自己编译和安装,好在过程也非常简单。

1。安装 numpy python 模块

TTX 是使用 python 写的,并且需要使用一个 Numerical python 模块。可以从 http://sourceforge.net/projects/numpy 下载该模块。下载后进入源代码目录,运行“python setup.py install”。需要注意的是需要在 PATH 中有cc编译器。

2。安装 TTX

http://www.letterror.com/code/ttx/index.html 下载最新的 TTX 版本,然后进入源代码目录,运行“python setup.py install”。这样就安装上 TTX 了。
 

需要注意的一点是 TTX 使用的是老的 Numberic 模块名字,而最新的模块名字是 numpy,因此需要修改文件/usr/lib/python2.4/site-packages/FontTools/fontTools/ttLib/sfnt.py
, 将其中的 "import  Numeric" 修改为 "import numpy".

3. 使用 TTX 

TTX 的使用非常简单,可以查看帮助信息。举一个简单的例子:

转储 TrueType 字体的 CMap 表的信息:ttx -t cmap truetype_file

Posted at 02:07上午 十二月 25, 2007 by Yaodong Zero Yao in I18N  |  评论[2]

星期日 六月 03, 2007
Legal UTF-8 Sequence(合法的、安全的UTF-8)

Ienup Sung has posted one blog(http://blogs.sun.com/is/entry/secure_utf_8) about Secure UTF-8 sequence, very useful. And below table is copied from his blog directly.

Table 2: Legal UTF-8 Byte Sequences
Unicode Scalar Values in Binary
Hex Min
Hex Max
1st Byte 2nd Byte 3rd Byte 4th Byte
00000000 00000000 0xxxxxxx U+0000 U+007F 00..7F      
00000000 00000yyy yyxxxxxx U+0080 U+07FF C2..DF 80..BF
   
00000000 zzzzyyyy yyxxxxxx U+0800 U+0FFF E0 A0..BF 80..BF  
U+1000
U+CFFF
E1..EC
80..BF 80..BF
U+D000
U+D7FF
ED
80..9F 80..BF
U+D800
U+DFFF
ill-formed
U+E000
U+FFFF
EE..EF
80..BF 80..BF
000uuuuu zzzzyyyy yyxxxxxx U+10000 U+3FFFF F0 90..BF 80..BF 80..BF
U+40000
U+FFFFF
F1..F3
80..BF 80..BF 80..BF
U+100000
U+10FFFF
F4
80..8F 80..BF 80..BF

 

Posted at 09:49上午 六月 03, 2007 by Yaodong Zero Yao in I18N  |  评论[0]

星期六 五月 19, 2007
使用 ultraedit 在 Unicode 和 Code page 之间进行编码转换

近来由于项目的需要,需要看一下Windows上的编码转换情况,本打算自己写个小程序来测以下,结果google了半天也没有发现好的例子,只是有WideCharToMultiByte, MultiByteToWideChar的API,鉴于已经 n 年没有写Windows的程序了(怎么编译都忘了),而且时间也不充足,所以还是想偷懒找个现成的工具。于是首先想到了功能极为强大的 UltraEdit, 结果UltraEdit果然没有让我失望,它提供了任意 code page 和 Unicode, UTF-8 之间的转换,而且不用修改系统的 code page. 下面简单介绍一下.(UltraEdit可以从http://www.ultraedit.com/免费下载试用45天,目前的最新版本是 v13.00a)

  1. 试用 UltraEdit  人以打开一个文本文件,可以不用关心其编码.(Notepad创建的文件的默认编码还是当前code page设定的编码,在简体中文环境下是 CP936, 即 GBK)
  2. 设定 UltraEdit 当前的 code page: 选择 "View -> Set Code Page", 然后选择你需要的code page. 这样后面执行的编码转换操作都是根据这里设定的 code page 进行的.
  3. 选择 "Edit -> Hex Function -> Hex Edit" 进入Hex编辑模式,这样你可以输入任意你需要的16进制数字,例如 4E02(Unicode) 或者 8140(GBK) ( "丂" )
  4. 转换: 根据你当前的文件的编码,选择 "File -> Conversions -> Unicode to ASCII" 或者 "File -> Conversions -> ASCII to Unicode", 这里的ASCII就是便是当前的 Code Page便是的编码。

有一点需要注意:如何显示转换的结果?

  1. 首先需要适当的字体,例如如果你的Windows是简体中文,而你想要转换 Unicode -> Big5,那么你需要 Big5 字体。从http://www.unifont.org/可以下载到很多字体。
  2. 即使有了合适的字体也不一定能正确的显示。我将我的系统 code page 设定成 CP950(Big5), 重起后将 UltraEdit 的 Code Page 设定成 CP936,然后转换 GBK <-> Unicode,结果是能够显示 Unicode编码的简体中文字符,而不能显示 GBK 编码的中文字符。估计可能是和字体的处理有关,字体处理如果和当前的 code page 有关的话,这种设定的不一致就会造成无法正确显示。不过在系统code page 是 CP936的情况下在选择了正确的字体后能显示繁体Big5-HKSCS的字符。
  3. 从 http://www.microsoft.com/globaldev/reference/WinCP.mspx 可以看到不同 Code Page 的编码转换表。
Posted at 11:05上午 五月 19, 2007 by Yaodong Zero Yao in I18N  |  评论[1]