「日本語フォントのマージ手順」の版間の差分

提供: KiCad.jp Wiki
ナビゲーションに移動 検索に移動
 
(同じ利用者による、間の23版が非表示)
1行目: 1行目:
'''日本語フォントのマージ手順'''
'''日本語フォントのマージ手順'''


2013.08.16 善養寺薫 (KaoruZenyouji) kaoruzen@gmail.com
<!--2013.08.16 善養寺薫 (KaoruZenyouji) kaoruzen@gmail.com-->
 
分かり難い場所や補足が必要な場所がありましたら、修正をお願い致します。


==はじめに==
==はじめに==
11行目: 11行目:


当初は時間をかけてマルチバイト対応修正することを覚悟していました。
当初は時間をかけてマルチバイト対応修正することを覚悟していました。
しかし実際には文字列は内部でUnicodeとして扱われており、結果として日本語に対応するフォントデータを既存のフォントファイルへ追加するだけで日本語文字列が扱えるようになりました。
しかし実際には文字列は内部でUnicodeとして扱われており、結果として日本語に対応するフォントデータを既存のフォントファイルへ追加するだけで日本語文字列が扱えるようになることがわかりました。


本手順では、フリーのストロークフォント(直線データで表されたフォントデータ)である[[http://www.vector.co.jp/soft/data/writing/se119277.html KST32B]]を、
本手順では、フリーのストロークフォント(直線データで表されたフォントデータ)である[[http://www.vector.co.jp/soft/data/writing/se119277.html KST32B]]を、
既存のフォントデータにマージすることで日本語対応を行います。
既存のフォントデータにマージすることで日本語対応を行います。


既存の図面データなどを開いた際に微妙な文字位置などが変化することを避けるため、
英数字などのフォントデータは、KiCad本来のものを引き継ぎます。




31行目: 33行目:


あまり美しい手順ではないのですが、"簡単に実行できる"ことに主眼を置きました。
あまり美しい手順ではないのですが、"簡単に実行できる"ことに主眼を置きました。
また、ごくたまにリポジトリ内のソースコードリビジョンによっては正常にビルドできない場合があるようです。
フォントデータ書き換えの前に、手順.1にて正常に動作するソースコードセットであることを確認します。


詳しい方がいらっしゃいましたら、本ページの手順を修正頂きたく思います。
詳しい方がいらっしゃいましたら、本ページの手順を修正頂きたく思います。


==準備==
==準備==
41行目: 43行目:
予め準備/ダウンロードしてください。
予め準備/ダウンロードしてください。


*a. Windows PC
*a. '''Windows PC'''
:  WindowsOS上で行います。KiCad Windows Builderと、フォントマージ用ツールがWindows用なので。
:  WindowsOS上で行います。KiCad Windows Builderと、フォントマージ用ツールがWindows用なので。
*b. [[https://launchpad.net/kicad-winbuilder/trunk/2.1/+download/kicad-winbuilder-2.1.zip KiCad Windows Builder]]
*b. '''[https://launchpad.net/kicad-winbuilder/trunk/2.1/+download/kicad-winbuilder-2.1.zip KiCad Windows Builder]'''
*c. [[http://kicad.jp/wp-content/uploads/KiCad-2012-07-04-ja-BZR3256-stable-Win_full_with_components_doc.zip KiCad.jp発行の日本語版KiCadセット]]
*c. '''[http://kicad.jp/wp-content/uploads/KiCad-2012-07-04-ja-BZR3256-stable-Win_full_with_components_doc.zip KiCad.jp発行の日本語版KiCadセット]]'''
*d. [[http://www.vector.co.jp/soft/data/writing/se119277.html KST32Bフォントデータ]]
*d. '''[http://www.vector.co.jp/soft/data/writing/se119277.html KST32Bフォントデータ]'''
:  キーとなる日本語ストロークフォントデータです。
:  キーとなる日本語ストロークフォントデータです。
*e. [[http://sourceforge.jp/projects/jpfontmerger/downloads/59332/fontmerger.zip/ フォントマージ用ツール]]
*e. '''[http://sourceforge.jp/projects/jpfontmerger/downloads/59335/fontmerger.zip/ フォントマージ用ツール]'''
 


==KiCadのビルド==
==KiCadのビルド==
82行目: 83行目:
「make」コマンド発行のち、自動的に必要ライブラリや最新版のKiCadソースコードを取得しビルド作業を開始します。
「make」コマンド発行のち、自動的に必要ライブラリや最新版のKiCadソースコードを取得しビルド作業を開始します。


環境にも依りますが、1時間程かかることがあります。
環境にも依りますが、2時間程かかることもあるようです。
 
<!-- 構築に失敗した場合、"C:\dev\kicad-winbuilder-2.1\logs"のログを見て修正する必要があります。-->
 
ビルド正常完了後、下記のような表示となります。
 
[[Image:builder5.png]]
 
何かキーを押してコマンドプロンプトのコンソールに戻ります。
 
また、「C:\dev\kicad-winbuilder-2.1\bin」へプログラム一式が生成されていることを確認して下さい。


==フォントデータのマージ作業==
==フォントデータのマージ作業==
===必要ファイルの準備===
[[http://sourceforge.jp/projects/jpfontmerger/downloads/59335/fontmerger.zip/ フォントマージ用ツール]]を解凍し、
プログラム「CSF1toKiCADFontSrc.exe」と同じディレクトリに、
*''KST32B.TXT''   ([[http://www.vector.co.jp/soft/data/writing/se119277.html KST32Bフォントデータ]]を解凍し取得)
*''newstroke_font.cpp''  (C:\dev\kicad-winbuilder-2.1\src\kicad\common\よりコピー)
をコピーします。
下記図のような状態にしてください:
[[Image:merger.png]]
KST32B.TXTは、解凍ソフトとの相性の問題で、ファイルが壊れてしまうことがあるようです。
ファイルを一度メモ帳などテキストエディタで開き、ファイル末尾が下記のようになっていることを確認して下さい。
[[Image:kst32b.png|400px]]
===フォントデータの作成===
「CSF1toKiCADFontSrc.exe」を起動し、下記図のように、先ほどコピーした「newstroke_font.cpp」と出力ファイル名を指定します。
[[Image:merger2.png]]
指定後、「Merge」ボタンをクリックします。
処理は一瞬で終了します。
ソフトウエア上で指定した出力ファイルが、生成されていることを確認して下さい(5.7MB程のデータが生成されます)。
===マージ後のフォントデータ書き戻し===
先ほどコピーした「newstroke_font.cpp」をメモ帳などテキストエディタで開きます。
フォントデータは、
const char* const newstroke_font[] =
{
から、
}
で囲まれています。(31行目~11350行目)
この{~}の内容を、先ほど出力したフォントデータに置き換えます。
{~}の中身をすべて消し(<ins>カッコ記号は残します</ins>)、出力したフォントデータの中身をコピー&ペーストします。
[[Image:merger3.png|400px]]
「newstroke_font.cpp」の修正完了後、上書き保存し、「C:\dev\kicad-winbuilder-2.1\src\kicad\common\」内へ上書きします。


==KiCadの再ビルド==
==KiCadの再ビルド==
===「KiCadWinbuilder.cmake」の修正===
修正したフォントデータを利用し、再度KiCadをビルドします。
しかし先ほどの手順では、再度Webより最新版のソースコードへ上書きされてしまいますので、ビルドスクリプトよりソースコード取得部分を削除します。
「C:\dev\kicad-winbuilder-2.1\」より、「KiCadWinbuilder.cmake」をメモ帳などテキストエディタで開きます。
576行目付近
#-------------------------------------------------------------------------------
#
# Get the KiCad source code
#
if( NOT EXISTS "${SRCDIR}" )
    file( MAKE_DIRECTORY "${SRCDIR}" )
より、
650行目付近
        return()
   
      endif( kicad_src_NOT_UPDATED )
               
endif( NOT EXISTS "${SRCDIR}/kicad/.bzr" )
までを削除(または#記号によりコメントアウト)し、保存します。
===フォント修正後のビルド===
再度コマンドプロンプトを開き、1度目のビルドと同様の手順で下記図赤線部のように入力します。
(1度目のビルド終了後コマンドプロンプトを閉じていない場合は、makeコマンドのみで問題ありません。)
[[Image:builder6.png]]
makeコマンド実行後、KiCadの再ビルドが行われます。
ビルドは変更部分のみに対し行われるため、数分程度でビルドは完了します。
「C:\dev\kicad-winbuilder-2.1\bin」へプログラム一式が生成されていることを確認して下さい。


==変更後のバイナリのインストールとテスト==
==変更後のバイナリのインストールとテスト==
[[http://kicad.jp/wp-content/uploads/KiCad-2012-07-04-ja-BZR3256-stable-Win_full_with_components_doc.zip KiCad.jp発行の日本語版KiCadセット]]
を任意の場所へ展開します。
「C:\dev\kicad-winbuilder-2.1\bin」内に生成されたバイナリファイル一色を、KiCad.jp発行の日本語環境セットを展開した先のbinフォルダ内に上書きします。
その後eeschema等を起動し、日本語テキストを作成できることを確認して下さい。
[[Image:eeschema.png|400px]]
問題ないようでしたら、「C:\dev\kicad-winbuilder-2.1\」を削除してください。 
以上で手順は終了です。お疲れ様でした。
==Appendix. ツール「CSF1toKiCADFontSrc.exe」について==
このツールは、KiCad内フォントデータのフォーマットを調べるために作成し始めたソフトです。
参考までに、ソースコードも同梱いたします。
開発環境はVisualStudio2010Pro、C#/.netFramework2.0を使用しています。
未確認ですが、ExpressEditionでも問題なくビルドできるかと思います。
===Mergeタブ===
本手順で使用する機能です。
「newstroke_font.cpp」で定義されているフォントデータと、KST32Bのフォントデータを結合し、フォントデータ部を生成します。
===CharConvertCheckタブ===
[[Image:charconvertcheck.png|400px]]
指定された文字について、KST32Bフォントより文字データを抽出し、「newstroke_font.cpp」形式のデータへ変換します。
===CompiledFontViewerタブ===
[[Image:compiledfontviewer.png|400px]]
「newstrole_font.cpp」形式のデータを解釈し、描画します。


==Appendix. フォントフォーマットについて==
==Appendix. フォントフォーマットについて==
===newstroke_font.cppで定義されるnewstroke_font[]配列===
*newstroke_font[文字コード - 32(0x20)]としてフォントデータが取り出せます。
**半角スペースから始まります。
*Unicodeでフォントが配置されています
**'あ'はUnicode 0x3042 = 12354、12354 - 32 = 12322より、newstroke_font[12322]へ配置することになります。
*各国のフォントデータを追加すればするほど、バイナリサイズが肥大化していくと思います。
===フォントデータ===
[[Image:kicad_glyph.png|400px]]
*本来のフォント作成方法は、eeschema用のシンボルとして作成し、awkスクリプトでCのソースへ変換します。
*最初の2バイトはよく分かっていません。適当な値でも問題無さそうです?
**文字幅とかの情報だとは思うのですが…
*3バイト目からは、X、Y、X、Y、…の順番で、線分の座標を示します。
**座標X = (文字コード) - 82
**座標Y = -1 * ((文字コード) - 91)
**上記に50を掛けると、eeschema用のシンボルとしての座標系になります。
*基本的には連続した線分として描画しますが、セパレータ" R"(半角スペースに大文字のR)を挟むと線分の切れ目として線分を描画しません。
*(ソース中、座標を示す記号が"\"となった場合は、"\\"としてエスケープされています。)
参考:src\kicad\helpers\tools_to_build_newstroke-font\、
および、同ディレクトリ内fontconv.awk

2013年8月21日 (水) 11:15時点における最新版

日本語フォントのマージ手順

分かり難い場所や補足が必要な場所がありましたら、修正をお願い致します。

はじめに

KiCadの回路図エディタやボードエディタ上で、日本語文字列を扱えるようにする手順です。

Kicad japaneseinput.png


当初は時間をかけてマルチバイト対応修正することを覚悟していました。 しかし実際には文字列は内部でUnicodeとして扱われており、結果として日本語に対応するフォントデータを既存のフォントファイルへ追加するだけで日本語文字列が扱えるようになることがわかりました。

本手順では、フリーのストロークフォント(直線データで表されたフォントデータ)である[KST32B]を、 既存のフォントデータにマージすることで日本語対応を行います。

既存の図面データなどを開いた際に微妙な文字位置などが変化することを避けるため、
英数字などのフォントデータは、KiCad本来のものを引き継ぎます。


本手順について

フォントデータは、ソースコード中でハードコーディングされているため、フォントデータの改変にはソースコードのビルドが必要になります。 幸い、Windows環境では[KiCad Windows Builder]が準備されており、楽しい煩わしいビルド環境整備を自動で行うことができます。

本手順では、

1. KiCad Windows Builderによる通常手順でのビルド
先ず「正常ビルド可能なソース/環境であるか」のチェックを行います
2. フォントデータのマージ
一度ビルドに成功したソース中のフォントデータを編集します
3. 編集後のソースで再度ビルド
本手順にて最終的なバイナリファイルを生成します

の3段階で進めることとします。

あまり美しい手順ではないのですが、"簡単に実行できる"ことに主眼を置きました。

また、ごくたまにリポジトリ内のソースコードリビジョンによっては正常にビルドできない場合があるようです。 フォントデータ書き換えの前に、手順.1にて正常に動作するソースコードセットであることを確認します。

詳しい方がいらっしゃいましたら、本ページの手順を修正頂きたく思います。

準備

下記のものが必要となります。 予め準備/ダウンロードしてください。

  • a. Windows PC
  WindowsOS上で行います。KiCad Windows Builderと、フォントマージ用ツールがWindows用なので。
  キーとなる日本語ストロークフォントデータです。

KiCadのビルド

KiCad Windows Builderの配置

KiCad Windows Builderを解凍し、スペースや日本語フォルダ名を含まないパスへ配置します。

私は、C:ドライブ下に「dev」というフォルダを作り、その中にKiCad Windows Builderを解凍して得られる「kicad-winbuilder2.1」フォルダを配置しました。以降の説明では、このフォルダ構成であるとしますので、適時読み替えて下さい。

Builder1.png

setenv.batの編集

本項は(多分)任意です。

KiCad Windows Builderに含まれる、「setenv.bat」を右クリックし、「編集」を選択します。

(またはエディタでsetenv.batを開きます)

Builder2.png


47行目付近、自分の名前とメールアドレスへ書き換えます。

Builder3.png


KiCadソースの取得とビルド

コマンドプロンプトを開き、下記図赤線部のように入力します:

Builder4.png

「make」コマンド発行のち、自動的に必要ライブラリや最新版のKiCadソースコードを取得しビルド作業を開始します。

環境にも依りますが、2時間程かかることもあるようです。


ビルド正常完了後、下記のような表示となります。

Builder5.png

何かキーを押してコマンドプロンプトのコンソールに戻ります。

また、「C:\dev\kicad-winbuilder-2.1\bin」へプログラム一式が生成されていることを確認して下さい。

フォントデータのマージ作業

必要ファイルの準備

[フォントマージ用ツール]を解凍し、 プログラム「CSF1toKiCADFontSrc.exe」と同じディレクトリに、

  • KST32B.TXT   ([KST32Bフォントデータ]を解凍し取得)
  • newstroke_font.cpp  (C:\dev\kicad-winbuilder-2.1\src\kicad\common\よりコピー)

をコピーします。

下記図のような状態にしてください:

Merger.png


KST32B.TXTは、解凍ソフトとの相性の問題で、ファイルが壊れてしまうことがあるようです。 ファイルを一度メモ帳などテキストエディタで開き、ファイル末尾が下記のようになっていることを確認して下さい。

Kst32b.png


フォントデータの作成

「CSF1toKiCADFontSrc.exe」を起動し、下記図のように、先ほどコピーした「newstroke_font.cpp」と出力ファイル名を指定します。

Merger2.png

指定後、「Merge」ボタンをクリックします。 処理は一瞬で終了します。

ソフトウエア上で指定した出力ファイルが、生成されていることを確認して下さい(5.7MB程のデータが生成されます)。

マージ後のフォントデータ書き戻し

先ほどコピーした「newstroke_font.cpp」をメモ帳などテキストエディタで開きます。

フォントデータは、

const char* const newstroke_font[] =
{

から、

}

で囲まれています。(31行目~11350行目)

この{~}の内容を、先ほど出力したフォントデータに置き換えます。 {~}の中身をすべて消し(カッコ記号は残します)、出力したフォントデータの中身をコピー&ペーストします。

Merger3.png


「newstroke_font.cpp」の修正完了後、上書き保存し、「C:\dev\kicad-winbuilder-2.1\src\kicad\common\」内へ上書きします。

KiCadの再ビルド

「KiCadWinbuilder.cmake」の修正

修正したフォントデータを利用し、再度KiCadをビルドします。 しかし先ほどの手順では、再度Webより最新版のソースコードへ上書きされてしまいますので、ビルドスクリプトよりソースコード取得部分を削除します。

「C:\dev\kicad-winbuilder-2.1\」より、「KiCadWinbuilder.cmake」をメモ帳などテキストエディタで開きます。

576行目付近

#-------------------------------------------------------------------------------
#
# Get the KiCad source code
#
if( NOT EXISTS "${SRCDIR}" )
    file( MAKE_DIRECTORY "${SRCDIR}" )

より、

650行目付近

        return()
    
     endif( kicad_src_NOT_UPDATED )
                
endif( NOT EXISTS "${SRCDIR}/kicad/.bzr" )

までを削除(または#記号によりコメントアウト)し、保存します。


フォント修正後のビルド

再度コマンドプロンプトを開き、1度目のビルドと同様の手順で下記図赤線部のように入力します。 (1度目のビルド終了後コマンドプロンプトを閉じていない場合は、makeコマンドのみで問題ありません。)

Builder6.png


makeコマンド実行後、KiCadの再ビルドが行われます。 ビルドは変更部分のみに対し行われるため、数分程度でビルドは完了します。

「C:\dev\kicad-winbuilder-2.1\bin」へプログラム一式が生成されていることを確認して下さい。

変更後のバイナリのインストールとテスト

[KiCad.jp発行の日本語版KiCadセット] を任意の場所へ展開します。

「C:\dev\kicad-winbuilder-2.1\bin」内に生成されたバイナリファイル一色を、KiCad.jp発行の日本語環境セットを展開した先のbinフォルダ内に上書きします。

その後eeschema等を起動し、日本語テキストを作成できることを確認して下さい。

Eeschema.png


問題ないようでしたら、「C:\dev\kicad-winbuilder-2.1\」を削除してください。 

以上で手順は終了です。お疲れ様でした。

Appendix. ツール「CSF1toKiCADFontSrc.exe」について

このツールは、KiCad内フォントデータのフォーマットを調べるために作成し始めたソフトです。

参考までに、ソースコードも同梱いたします。 開発環境はVisualStudio2010Pro、C#/.netFramework2.0を使用しています。 未確認ですが、ExpressEditionでも問題なくビルドできるかと思います。

Mergeタブ

本手順で使用する機能です。

「newstroke_font.cpp」で定義されているフォントデータと、KST32Bのフォントデータを結合し、フォントデータ部を生成します。


CharConvertCheckタブ

Charconvertcheck.png

指定された文字について、KST32Bフォントより文字データを抽出し、「newstroke_font.cpp」形式のデータへ変換します。


CompiledFontViewerタブ

Compiledfontviewer.png

「newstrole_font.cpp」形式のデータを解釈し、描画します。

Appendix. フォントフォーマットについて

newstroke_font.cppで定義されるnewstroke_font[]配列

  • newstroke_font[文字コード - 32(0x20)]としてフォントデータが取り出せます。
    • 半角スペースから始まります。
  • Unicodeでフォントが配置されています
    • 'あ'はUnicode 0x3042 = 12354、12354 - 32 = 12322より、newstroke_font[12322]へ配置することになります。
  • 各国のフォントデータを追加すればするほど、バイナリサイズが肥大化していくと思います。

フォントデータ

Kicad glyph.png

  • 本来のフォント作成方法は、eeschema用のシンボルとして作成し、awkスクリプトでCのソースへ変換します。
  • 最初の2バイトはよく分かっていません。適当な値でも問題無さそうです?
    • 文字幅とかの情報だとは思うのですが…
  • 3バイト目からは、X、Y、X、Y、…の順番で、線分の座標を示します。
    • 座標X = (文字コード) - 82
    • 座標Y = -1 * ((文字コード) - 91)
    • 上記に50を掛けると、eeschema用のシンボルとしての座標系になります。
  • 基本的には連続した線分として描画しますが、セパレータ" R"(半角スペースに大文字のR)を挟むと線分の切れ目として線分を描画しません。
  • (ソース中、座標を示す記号が"\"となった場合は、"\\"としてエスケープされています。)


参考:src\kicad\helpers\tools_to_build_newstroke-font\、 および、同ディレクトリ内fontconv.awk