2
19
2012
0

unzip 6.10b测试版,解决ZIP乱码问题

原来unzip有个-O参数,可以设定编码的。到了6.0版本不知为何移除了。后来ZIP乱码问题就一直困扰着群众。

今天翻了翻官网,发现测试版本6.10b重新添加了这个参数:

- Add -I and -O options for setting ISO and OEM character sets, respectively, used by UnZip when doing character set translations. This support is based on the unzip60-alt-iconv-utf8 patch suggested in an Info-ZIP forum thread and uses the iconv library which must be available. These options are enabled using the USE_ICONV_MAPPING compiler macro. Suggestions welcome on how to improve this limited character translation support.  

虽然这个版本2010年底就发布了,但能搜索到的信息几乎没有,真是奇怪。用官方新版本解决乱码不是很方便么……

于是写了个PKGBUILD,扔AUR了: unzip-beta

使用示例:

unzip 我是一个ZIP.zip -Ogbk

Category: 软件 | Tags: arch ZIP 软件 linux
1
27
2012
0

最后还是堕落到宋体了

不得不说,点阵字体还是有很大好处的:看着清楚。所以又迎回了宋体。

矢量字体在我这里总有发虚、笔画杂揉的问题。估计是屏幕太小太旧,用网上给的配置感觉也不太好。

其他Windows字体没装,保持系统简洁。

 

参考: http://forum.ubuntu.org.cn/viewtopic.php?f=8&t=359236

(总算弄明白之前宋体为啥总也弄不好了,某个系统级别配置搞的鬼。我逐个移动/etc/fonts/conf.d下的文件,终于找到了元凶。)

 

以下是目前的fontconfig:

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
    <!-- 基本设置,我的屏幕小,DPI设置为85。 -->
    <match target="font">
        <edit name="dpi" mode="assign">
            <double>85</double>
        </edit>
        <edit name="rgba" mode="assign">
            <const>rgb</const>
        </edit>
        <edit name="autohint" mode="assign">
            <bool>false</bool>
        </edit>
        <edit name="hinting" mode="assign">
            <bool>true</bool>
        </edit>
        <edit name="hintstyle" mode="assign">
            <const>hintfull</const>
        </edit>
        <edit name="antialias" mode="assign">
            <bool>true</bool>
        </edit>
        <edit name="embeddedbitmap" mode="assign">
            <bool>false</bool>
        </edit>
    </match>

    <!-- Windows中文字体替换 -->
    <match target="pattern">
        <test qual="any" name="family">
            <string>宋体</string>
            <string>新宋体</string>
            <string>NSimSun</string>
            <string>微软雅黑</string>
            <string>Microsoft YaHei</string>
            <string>AR PL ShanHeiSun Uni</string>
            <string>AR PL ShanHeiSun Uni MBE</string>
            <string>AR PL UMing CN</string>
            <string>AR PL UMing HK</string>
            <string>AR PL UMing TW</string>
            <string>AR PL UMing TW MBE</string>
        </test>
        <edit name="family" mode="assign" binding="same">
            <string>SimSun</string>
        </edit>
    </match>

    <!-- 不认识的字体当作sans-serif -->
    <match target="pattern">
        <test qual="all" name="family" compare="not_eq">
            <string>sans-serif</string>
        </test>
        <test qual="all" name="family" compare="not_eq">
            <string>serif</string>
        </test>
        <test qual="all" name="family" compare="not_eq">
            <string>monospace</string>
        </test>
        <edit name="family" mode="append_last" binding="weak">
            <string>sans-serif</string>
        </edit>
    </match>

    <!-- 小号宋体用点阵,关闭抗锯齿,不然看起来很浅 -->
    <match target="font">
        <test qual="any" name="family">
            <string>SimSun</string>
        </test>
        <test name="pixelsize" compare="more_eq">
            <double>8</double>
        </test>
        <test name="pixelsize" compare="less_eq">
            <double>18</double>
        </test>
        <edit name="antialias">
            <bool>false</bool>
        </edit>
        <edit name="embeddedbitmap" mode="assign">
            <bool>true</bool>
        </edit>
    </match>

    <!-- 斜体关闭点阵、开抗锯齿更清晰 -->
    <match target="font">
        <test name="slant" compare="not_eq">
            <const>roman</const>
        </test>
        <edit name="antialias">
            <bool>true</bool>
        </edit>
        <edit name="embeddedbitmap" mode="assign">
            <bool>false</bool>
        </edit>
    </match>

    <!-- 某些常见字体的alias -->
    <alias>
        <family>Times</family>
        <prefer>
            <family>Times New Roman</family>
        </prefer>
	<default>
	    <family>serif</family>
	</default>
    </alias>

    <alias>
        <family>Helvetica</family>
	<prefer>
	    <family>Arial</family>
	</prefer>
	<default>
            <family>sans</family>
        </default>
    </alias>

    <alias>
        <family>Courier</family>
        <prefer>
            <family>Courier New</family>
        </prefer>
	<default>
	    <family>monospace</family>
	</default>
    </alias>
    
    <alias binding="strong">
	<family>Ubuntu</family>
	<prefer>
	    <family>Ubuntu</family>
            <family>MYuppyGB-Medium</family>
            <family>文泉驿微米黑</family>
	</prefer>
    </alias>

    <!-- 基本的三个字体族:sans、serif、mono -->
    <alias binding="strong">
	<family>sans-serif</family>
	<prefer>
            <family>SimSun</family>
            <family>WenQuanYi Bitmap Song</family>
	</prefer>
    </alias>

    <alias binding="strong">
	<family>serif</family>
	<prefer>
            <family>SimSun</family>
            <family>WenQuanYi Bitmap Song</family>
	</prefer>
    </alias>
    
    <!-- 等宽就不用宋体了。编程不怎么用中文,英语矢量字体更好看 -->
    <alias binding="strong">
	<family>monospace</family>
	<prefer>
	    <family>Droid Sans Mono</family>
            <family>文泉驿等宽微米黑</family>
	</prefer>
    </alias>
</fontconfig>

另外,用font-manager禁用了几个字体。Nimbus那几个是X带的的基本字体,很难看。文鼎明体不禁用应该也没啥问题。剩下几个是效果差的:

<?xml version="1.0"?>
<fontconfig>
  <selectfont>
    <rejectfont>
      <pattern>
        <patelt name="family">
          <string>Nimbus Mono L</string>
        </patelt>
      </pattern>
      <pattern>
        <patelt name="family">
          <string>AR PL UMing TW MBE</string>
        </patelt>
      </pattern>
      <pattern>
        <patelt name="family">
          <string>Century Schoolbook L</string>
        </patelt>
      </pattern>
      <pattern>
        <patelt name="family">
          <string>URW Bookman L</string>
        </patelt>
      </pattern>
      <pattern>
        <patelt name="family">
          <string>AR PL UMing CN</string>
        </patelt>
      </pattern>
      <pattern>
        <patelt name="family">
          <string>Nimbus Roman No9 L</string>
        </patelt>
      </pattern>
      <pattern>
        <patelt name="family">
          <string>Nimbus Sans L</string>
        </patelt>
      </pattern>
      <pattern>
        <patelt name="family">
          <string>AR PL UMing HK</string>
        </patelt>
      </pattern>
      <pattern>
        <patelt name="family">
          <string>AR PL UMing TW</string>
        </patelt>
      </pattern>
      <pattern>
        <patelt name="family">
          <string>Ahem</string>
        </patelt>
      </pattern>
    </rejectfont>
  </selectfont>
</fontconfig>

 

Category: 软件 | Tags: 字体 linux arch
1
17
2012
5

repo-elephant:Arch彩蛋?

无意中在最新的 pacman 4.0.1 里面发现了repo-elephant这么个玩意儿。

 

哦呵呵:

cuihao@cuihao-arch /tmp $ repo-elephant -q
    _    _
   / \__/ \_____
  /  /  \  \    `\
  )  \''/  (     |\
  `\__)/__/'_\  / `
     //_|_|~|_|_|
     ^""'"' ""'"'

 

啊哈:

cuihao@cuihao-arch /tmp $ repo-elephant -q
     __
    '. \
     '- \
      / /_         .---.
     / | \\,.\/--.//    )
     |  \//        )/  /
      \  ' ^ ^    /    )____.----..  6
       '.____.    .___/            \._)
          .\/.                      )
           '\                       /
           _/ \/    ).        )    (
          /#  .!    |        /\    /
          \  C// #  /'-----''/ #  /
       .   'C/ |    |    |   |    |mrf  ,
       \), .. .'OOO-'. ..'OOO'OOO-'. ..\(,

 

貌似是个正经玩意儿:

cuihao@cuihao-arch /tmp $ repo-elephant -h
repo-elephant (pacman) 4.0.1

  -q, --quiet       最小化输出信息
  -s, --sign        更新后使用 GnuPG 签名数据库
  -k, --key <密匙>   使用指定的密匙签名该数据库
  -v, --verify      更新前验证数据库签名

更多细节及可用选项的描述请参见 repo-elephant(8) 。

 

……好像又是坑爹:

cuihao@cuihao-arch /tmp $ man repo-elephant
没有 repo-elephant 的手册页条目

cuihao@cuihao-arch /tmp $ man 8 repo-elephant
在第 8 节中没有关于 repo-elephant 的手册页条目。

 

庐山真面目,原来是repo-add啊:

cuihao@cuihao-arch /tmp $ ls -al `which repo-elephant`
lrwxrwxrwx 1 root root 8  1月 13 12:45 /usr/bin/repo-elephant -> repo-add*

 

打开repo-add,发现这么一些代码:

elephant() {
	case $(( RANDOM % 2 )) in
		0) printf '%s\n' "H4sIAL3qBE4CAyWLwQ3AMAgD/0xh5UPzYiFUMgjq7LUJsk7yIQNAQTAikFUDnqkr" \
		                 "OQFOUm0Wd9pHCi13ONjBpVdqcWx+EdXVX4vXvGv5cgztB9+fJxZ7AAAA"
		;;

		1) printf '%s\n' "H4sIAJVWBU4CA21RMQ7DIBDbeYWrDgQJ7rZ+IA/IB05l69alcx5fc0ASVXUk4jOO" \
		                 "7yAAUWtorygwJ4hlMii0YkJKKRKGvsMsiykl1SalvrMD1gUXyXRkGZPx5OPft81K" \
		                 "tNAiAjyGjYO47h1JjizPkJrCWbK/4C+uLkT7bzpGc7CT9bmOzNSW5WLSO5vexjmH" \
		                 "ZL9JFFZeAa0a2+lKjL2anpYfV+0Zx9LJ+/MC8nRayuDlSNy2rfAPibOzsiWHL0jL" \
		                 "SsjFAQAA"
		;;
	esac | openssl base64 -d | gzip -d
}
# figure out what program we are
cmd=${0##*/}
if [[ $cmd == "repo-elephant" ]]; then
	elephant
	exit 0
fi

 

Arch开发人员真有聊

1
10
2012
4

清理字体

以前觉得字体多了好,这样访问不同网页就能看到不同的效果了。

后来发现不少字体Linux下的效果就是一坨儿…… 比如宋体吧,Windows下看着好好的,在Linux下用看着虚得很。虽然经过复杂地配置能搞定,但一个一个字体都这么弄,还是太费事了。

于是我想,把字体清理一下,只留下那些看着效果好的字体和必须的字体。

  1. Liberation字体删除了,因为英语“R”右下角一捺显示太虚。
  2. Nimbus无衬线和等宽字体禁用了,无衬线字体原因同上,等宽字体太烂了。
  3. Windows字体大多被删除,除了雅黑看着不错,其他无论中英文效果都很糟糕。
  4. 多余的韩文、日文CJK字体删除了。
  5. 基本用不着的小语种字体删除了。

目前留下的字体:

CJK:

  1. 文鼎的宋体、楷体,显示文档也许有用
  2. 文泉驿正黑、微米黑
  3. hannom,衬线字体,支持的汉字比较多
  4. 花园明朝,无衬线字体,支持的汉字比较多
  5. 雅黑宋体(修改版M$雅黑)
  6. 几个装点门面的艺术字体。

英语:

  1. Bitstream Vera
  2. Dejavu
  3. 谷歌的Droid字体
  4. Ubuntu字体,装点门面

其他:

  1. mph-2b-damase 支持些额外的字符。

目前感觉好极了…… 至少不用为了乱七八杂的字体纠结了。

 

Category: 软件 | Tags: 字体 美化 linux
1
8
2012
0

一些Arch PKGBUILD的知识

总结一些以前疑惑的关于PKGBUILD的问题。

1. 就算需要,base-devel组中的软件包也不会写入编译时依赖列表(makedepends):

base-devel软件包组包含编译软件所需的基本工具(软件包列表:i686x86_64),包括gcc编译器、make之类的。一般编译软件包都需要这些包,所以干脆就规定makedepends中不需要指定它们。

如果你发现怎么makepkg都编译不了,先看看是不是忘记装base-devel了(pacman -S base-devel)。

2. 从git、svn、cvs、hg等版本控制系统获取代码的软件包,版本号会自动更新:

从版本控制系统获取代码的话,只要PKGBUILD是标准格式,版本号会自动更新,以反映最新的代码变化。

比如,从AUR上下载的ibus-git的PKGBUILD,本来的版本号是20110501,可makepkg之后得到的版本号就变成当天日期YYYYMMDD了。

svn、hg版本号会更新为最新修订号,git、cvs用当天的日期了。

3. install文件之作用:

某些软件包除了PKGBUILD,还会附带一个XXX.install文件。这个文件定义了安装、升级、删除软件包前后要执行的操作。

这些操作放到PKGBUILD是不行的,因为最终要安装的是软件包,而非PKGBUILD。

比如,字体软件包安装或卸载后需要刷新字体缓存,这些操作就必须放在install文件中。

4. arch=('x86_64' 'i686')arch=('any') 的区别:

arch=('x86_64' 'i686')表示:该PKGBUILD可以为x86_64和i686平台生成软件包,但生成的软件包并不能跨平台。

arch=('any')表示:该PKGBUILD生成的软件包在x86_64和i686平台都可以安装。

5. package()build() 函数的区别:

package()是在fakeroot环境执行的,所以能使用某些特殊命令。

其实,通常情况下,把编译过程放在package()、或是把所有操作都放在build()都是可以的。makepkg只保证package()build()(以及不常见的check())之后执行。

6. “xxx || return 1”中“return 1”的作用:

xxx || return 1”的意思是:如果 xxx 命令出错退出了,就退出当前函数并返回错误代码1。这是为了保证重要过程出错时makepkg及时停止。

估计是历史遗留,现在用处不大,因为makepkg本来就会自动出错停止。

7. makepkg不会自动删除旧的src目录,可能导致第二次编译错误:

在执行过一次makepkg的目录再次执行makepkg,src目录不会自动被删除。如果有patch之类的操作,可能因为上次patch过而导致错误。需要手动删除src目录。

Category: 软件 | Tags: arch cvs Git linux shell svn 软件

Host by is-Programmer.com | Power by Chito 1.3.0 beta | Theme: Aeros 2.0 by TheBuckmaker.com