試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

ReactOS 0.3.3-RC1のインストールCD作成時に日本語フォントを入れてみる

0.3.3-RC1の時点では、日本語のフォントを入れても、自動的にこれを使うようにはできず、多少の作業が必要。また、Shift_JISに対応していない?ためか、完全に日本語化することもできない(化ける)。
今回、IPAモナーフォントを実験に使用。UI用フォントはIPAモナーUIゴシックにしている。作業はReactOSソースツリーのトップで行っている。
まずは、使用するフォントをコピーしておく。場所はIPAモナーフォントのあるところに合わせる。

$ cp /usr/share/fonts/ipamonafont/*.ttf media/fonts/

以下、修正するファイル。fonts.rbuildは、インストールCDの作成には関係ないため、インストールCDを作る場合は編集する必要はない。

--- media/fonts/fonts.rbuild.orig
+++ media/fonts/fonts.rbuild
@@ -50,4 +50,9 @@
 <installfile base="media/fonts">VeraMono.ttf</installfile>
 <installfile base="media/fonts">VeraSe.ttf</installfile>
 <installfile base="media/fonts">VeraSeBd.ttf</installfile>
+<installfile base="media/fonts">ipag-mona.ttf</installfile>
+<installfile base="media/fonts">ipagp-mona.ttf</installfile>
+<installfile base="media/fonts">ipagui-mona.ttf</installfile>
+<installfile base="media/fonts">ipam-mona.ttf</installfile>
+<installfile base="media/fonts">ipamp-mona.ttf</installfile>
 </group>



--- boot/bootdata/packages/reactos.dff.orig
+++ boot/bootdata/packages/reactos.dff
@@ -337,6 +337,11 @@
 media\fonts\VeraSeBd.ttf                            3
 media\fonts\VeraSe.ttf                              3
 media\fonts\Vera.ttf                                3
+media\fonts\ipag-mona.ttf                           3
+media\fonts\ipagp-mona.ttf                          3
+media\fonts\ipagui-mona.ttf                         3
+media\fonts\ipam-mona.ttf                           3
+media\fonts\ipamp-mona.ttf                          3
 media\nls\c_037.nls                                 1
 media\nls\c_500.nls                                 1
 media\nls\c_737.nls                                 1



--- boot/bootdata/hivesft.inf.orig
+++ boot/bootdata/hivesft.inf
@@ -38,14 +38,25 @@

 ; Font substitutes
 ; SysFontSubstitutes are also returned by EnumFontFamilies, FontSubstitutes aren't
-HKLM,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\SysFontSubstitutes","Arial",0x00000000,"DejaVu Sans"
-HKLM,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\SysFontSubstitutes","Courier New",0x00000000,"DejaVu Sans Mono"
-HKLM,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\SysFontSubstitutes","Times New Roman",0x00000000,"DejaVu Serif"
-HKLM,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\SysFontSubstitutes","Tahoma",0x00000000,"DejaVu Sans"
-HKLM,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\SysFontSubstitutes","MS Sans Serif",0x00000000,"DejaVu Sans"
-HKLM,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\SysFontSubstitutes","MS Shell Dlg",0x00000000,"DejaVu Sans"
-HKLM,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\SysFontSubstitutes","MS Shell Dlg 2",0x00000000,"DejaVu Sans"
-HKLM,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\SysFontSubstitutes","Helv",0x00000000,"DejaVu Sans"
+HKLM,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\SysFontSubstitutes","Arial",0x00000000,"IPAMonaUIGothic"
+HKLM,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\SysFontSubstitutes","Bitstream Charter",0x00000000,"IPAMonaUIGothic"
+HKLM,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\SysFontSubstitutes","Bitstream Vera Sans",0x00000000,"IPAMonaUIGothic"
+HKLM,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\SysFontSubstitutes","Bitstream Vera Sans Mono",0x00000000,"IPAMonaUIGothic"
+HKLM,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\SysFontSubstitutes","Bitstream Vera Serif",0x00000000,"IPAMonaUIGothic"
+HKLM,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\SysFontSubstitutes","Courier 10 Pitch",0x00000000,"IPAMonaUIGothic"
+HKLM,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\SysFontSubstitutes","Courier New",0x00000000,"IPAMonaUIGothic"
+HKLM,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\SysFontSubstitutes","DejaVu Sans",0x00000000,"IPAMonaUIGothic"
+HKLM,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\SysFontSubstitutes","DejaVu Sans Mono",0x00000000,"IPAMonaUIGothic"
+HKLM,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\SysFontSubstitutes","DejaVu Serif",0x00000000,"IPAMonaUIGothic"
+HKLM,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\SysFontSubstitutes","Helmet",0x00000000,"IPAMonaUIGothic"
+HKLM,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\SysFontSubstitutes","Helv",0x00000000,"IPAMonaUIGothic"
+HKLM,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\SysFontSubstitutes","MS Sans Serif",0x00000000,"IPAMonaUIGothic"
+HKLM,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\SysFontSubstitutes","MS Shell Dlg",0x00000000,"IPAMonaUIGothic"
+HKLM,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\SysFontSubstitutes","MS Shell Dlg 2",0x00000000,"IPAMonaUIGothic"
+HKLM,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\SysFontSubstitutes","MS UI Gothic",0x00000000,"IPAMonaUIGothic"
+HKLM,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\SysFontSubstitutes","Tahoma",0x00000000,"IPAMonaUIGothic"
+HKLM,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\SysFontSubstitutes","Times New Roman",0x00000000,"IPAMonaUIGothic"
+HKLM,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\SysFontSubstitutes","Timmons",0x00000000,"IPAMonaUIGothic"

 ; Time zone settings
 HKLM,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones",,0x00000012

上のフォント置換では、コマンドプロンプトの文字幅が怪しくなってしまった。

ここまで修正を適用したら、ビルドを通す。上記修正は、全ての実行ファイルのコンパイルが終わった後でも、

$ make bootcd

を再実行させれば、CDイメージを作り直して、変更を反映できる。
これで、インストール時には、

左のようになっていたのが右のようになり、日本語が出ているのだが、

化けてしまうところもある。

そのほか、下のように、プログラム中に英語フォント名をハードコーディングしている例もあり、結構厳しいものがある。
[引用]ファイル名: subsystems/win32/csrss/win32csr/guiconsole.cより

static VOID FASTCALL
GuiConsoleUseDefaults(PCSRSS_CONSOLE Console, PGUI_CONSOLE_DATA GuiData, PCSRSS_SCREEN_BUFFER Buffer)
{
  /*
   * init guidata with default properties
   */

  wcscpy(GuiData->FontName, L"DejaVu Sans Mono");

また、日本語の入力は全くできず、これからどうなっていくのか、という段階。

こんな無理矢理な方法で入れても、実用的とは程遠い...

参考URL:
http://reactos.2chv.net/wiki/?%C6%FC%CB%DC%B8%EC%C2%D0%B1%FE

使用したバージョン: