« 2007年3月 | トップページ | 2007年6月 »

2007年4月

2007年4月18日 (水曜日)

Windows の管理者権限ないけどフォント追加し鯛

会社の PC(Windows XP) では、通常のユーザは殆ど何も出来ない設定になっていて、例えば、 NTEmacs で使いたいフォントをインストールしようとしても、アクセス権がないと叱られてしまう。
ちょっと検索すると、管理者権限が無くても一時的にフォントを追加出来るツールがいくつかあるようで、これまでは FontPnP(リンク切れ??) や FontPlug を試させて貰っていた。しかし、どちらも使いたいフォントを有効にするには、アプリケーションを起動して、ヒトが操作してやる必要がある。確かに、フォントを一時的に試したい場合や、たくさんあるフォントの一部だけを選んで有効にしたい場合には便利なのかもしれないが、自分がやりたいのは、毎回起動(ログオン)時に決まったフォントが有効になって欲しいだけなので、それくらい勝手にやって欲しいのだ…と、 ruby + Win32API で書いてみたメモ。

使い方は、予め入手したフォントがあるフォルダのパスを引数として指定して起動するか、フォントのあるパスにスクリプトを置いて引数なしで起動すると、現在のセッションの間だけ、フォルダ内のフォントが使用可能になるという…それだけ。

自分は、フォントがあるフォルダにスクリプトを置いて、そのショートカットをスタートアップに登録して使ってます :-)
あ、そうやって使う場合は、 Win32 版 ruby がインストールされていて .rb ファイルに関連付けされている必要があるのかな…。 Exerb で .exe にしてもいいんでしょうが。

#!/usr/bin/ruby

require 'Win32API'

fontPath = String.new
# if font-path is not specified as an argument, use the path where this script resides
if ARGV.size != 0
  fontPath = ARGV.shift
else
  # retrieve my own name depends on whether I am .rb or .exe...
  myName   = (defined?(ExerbRuntime))? ExerbRuntime.filepath: $0
  fontPath = File.dirname(myName)
end

objAddFontResource = Win32API.new('GDI32.DLL', 'AddFontResource', %w(p), 'i')
Dir.chdir(fontPath) {
  Dir.glob("*.{fon,fnt,ttf,ttc,fot,otf}", File::FNM_CASEFOLD) {|entry|
    if /cygwin/ =~ RUBY_PLATFORM
      font = `cygpath -aw #{fontPath}/#{entry}`.chomp!
    else
      font = "#{fontPath}\\#{entry}"
    end
    if File.file?(font)
      ret = objAddFontResource.call(font)
      if ret != 0
        print "%d font(s) added from #{entry}.\n" % ret
      else
        print "adding #{entry} failed.\n"
      end
    end
  }
}

##########  font files with following extensions are added
## .fon
## .fnt
## .ttf
## .ttc
## .fot
## .otf

##########  font files with following extensions are not added
## .mmm
## .pfb
## .pfm

(2007/06/13 追記)
今は、下記の用に一部変更して addfont.rbw という名前で使っています。終了時に追加したフォント一覧を表示しますが、何も考えていないのでフォントが多すぎるとダメ鴨。

#!/usr/bin/ruby

require 'Win32API'

fontPath = String.new
# if font-path is not specified as an argument, use the path where this script resides
if ARGV.size != 0
  fontPath = ARGV.shift
else
  # retrieve my own name depends on whether I am .rb or .exe...
  myName   = (defined?(ExerbRuntime))? ExerbRuntime.filepath: $0
  fontPath = File.dirname(myName)
end

objAddFontResource = Win32API.new('GDI32.DLL', 'AddFontResource', %w(p), 'i')
text = String.new
Dir.chdir(fontPath) {
  Dir.glob("*.{fon,fnt,ttf,ttc,fot,otf}", File::FNM_CASEFOLD) {|entry|
    if /cygwin/ =~ RUBY_PLATFORM
      font = `cygpath -aw #{fontPath}/#{entry}`.chomp!
    else
      font = "#{fontPath}\\#{entry}"
    end
    if File.file?(font)
      ret = objAddFontResource.call(font)
      if ret != 0
        text << "%d font(s) added from #{entry}.\n" % ret
      else
        text << "adding #{entry} failed.\n"
      end
    end
  }
}

objMessageBox = Win32API.new('user32', 'MessageBox', %w(p p p i), 'i') # args: window, text, caption, type
if text.size > 0
  objMessageBox.call(0, text, "#{myName}", 0) # MB_OK=0
else
  objMessageBox.call(0, "No font specified...", "#{myName}", 0) # type = MB_OK = 0
end

##########  font files with following extensions are added
## .fon
## .fnt
## .ttf
## .ttc
## .fot
## .otf

##########  font files with following extensions are not added
## .mmm
## .pfb
## .pfm

| | コメント (0) | トラックバック (0)

2007年4月11日 (水曜日)

日曜日は登山…

Rimg0255Rimg0206 こないだの日曜日は、ソウル近郊のブカンサン(北漢山・북한산)に登って来ました。
すっかりハイキング気分の普段着で出かけたのですが、これが結構な険しい(ボクには)登山道で…ちょっと後悔しました ^^;;
…と、言っても、ボクらが登ったのは、標高 400m 弱くらいの低いピークだったのですが。
行き当たりばったりで登り始めたので、ガイド本で見たインスボンには辿り 着けませんでしたが…それでも久し鰤の登山で、頂上(一応 ^^;)からの眺めもよくて楽しかったです :-)


2007040800320070408004 帰りに登山口の近くの食堂で、遅い昼食にムルネンミョン?(水冷麺・물냉면)を食べました(写真左)。2900 ウォンと安かったですが、結構美味しかったです :-)

写真右は、こちらで知り合って一緒に出かけた中国人の友人が注文した「とんかつ」です。日本のトンカツとはビミョーに違うようですが。こちらでも結構「とんかつ」を出す店があるのに驚きました。


20070408007帰りの地下鉄の中で始まった実践販売。今日はきゅうりパック用?のスライサと LED ライト?の販売もありました。韓国の地下鉄では、この他にも牧師さん?みたいな人が乗客に話しかけながら通過したり、募金?を集めるおばちゃんが通過したりと、居眠りしているヒマがありません…


| | コメント (2) | トラックバック (0)

2007年4月10日 (火曜日)

今夜の晩酌…

Rimg0002今夜は、ちょっと雨が降ったので、夕食はコンビニの食材で済ませました。

今、ソジュ(焼酎・소주)を飲みながら書いてます。多分、コレ
名前は「チョウンチョロン」と読むようです。 360ml のビンで、食事するお店にも大概置いてあって、コンビニにも置いてあります。
値段をよく覚えていませんが…確かコンビニで 2000 ウォンしなかったような…(?)。
Altavista で名前の「처음처럼」を英訳してみると "Like initially" と… ^^;;
こちらのブログを拝見すると「初めての頃のように」という意味みたいです。
飲み味は、とても甘くて度数もそんなに感じないので、どんどん飲んでしまう感じですが、 20 度なので調子に乗って飲んでると、それなりに酔ってしまいます(笑)。
よくお店で見かけるソジュがもうひとつあるのですが、名前を思い出せないので、また次回に…。

こちらでの食事は、ほぼ毎食写真に残してあるのですが、なかなか面倒で…否、時間がなくて、こちらに上げれていません…。だんだん味も忘れつつありますが(苦笑)。

今週末はファソンに行ってみようかなぁ…と考え中。多分、この辺
そういえば、次が最後の週末。 早く日本に帰りたい…です。

こちらの飲み屋さんらしいところで一度も飲んでないのが、少し心残り…かな。

| | コメント (0) | トラックバック (0)

2007年4月 2日 (月曜日)

今日のとんがりコーン?…ぢゃないのか??

20070402007 ホテルの前のコンビニにありました。味もカタチもそっくりです(苦笑)。
他にも、 かっぱえびせん や チョコパイ もどき?があるのは知っていましたが、コレは初めて気づきました。…ん?作ってるのはロッテなのか??スミマセン、分かりません ^^;;
コレとは別に、地下鉄の駅にある看板が JR ぽかったり、道路標識や高速道路のチケットも日本のによく似てますね。

| | コメント (0) | トラックバック (0)

2007年4月 1日 (日曜日)

Emacs のキーバインド

Emacs で、今のモードのキーバインドを知りたければ…
M-x describe-binding
…なんですね。
今まで…
M-x describe-mode
…と、してたんで、イマイチ分かりにくかったんですね (T-T)

| | コメント (0) | トラックバック (0)

« 2007年3月 | トップページ | 2007年6月 »