Vol.911 24.Jan.2025

フリーのフォントエディッタ 大陸はどうやってできたのか? Windows11マシン

F フリーのフォントエディッタ 〜FontForge

by fjk

 abc910で32x32ドットまでのBDFフォントパターンを作れるようになったが、フォントパターンを新規にゼロから作るのは大変である。そこで、フリーのフォントエディッタのFontForgeを使ってみた。
 FontForge(フォントフォージ)はオープンソースのフォント作成プログラムで、TrueType、PostScript、OpenType、SVG、BDFなど、数々のフォント形式に対応している。
 新規にアウトラインフォントを作成してからビットマップフォントを作成することもできるが、フリーのアウトラインフォントである「Mgen+」(M+の強化版)から32x32ドットBDFフォントを作成してみる(フリーフォントでも著作権があるのでライセンスを確認すること)

【アウトラインフォントからBDFフォントを作成】
@ 例えば、mgenplus1m.zipをダウンロード後、解凍。
A 解凍フォルダー内の適当なフォントデータ(例えばlightやreguler)をFontForgeに読み込む。
B コードをJISにしたいので、「エンコーディング/エンコーディングの変換」でJISX0208を選ぶ(デフォルトのエンコードはUTF-8)。
C「エンコーディング/compact」で有効文字のみ表示
D「エレメント/Bitmap StrikesAvailable」を選択
E ピクセルサイズに「32」(作りたいドットのサイズ)を入力後、「OK」をクリック【BDF作成終了】
F 編集画面で文字を選び、「ウインドウ/ビットマップウィンドウを開く」で、ビットマップを確認(ここでパターン修正も可)
G「ファイル/フォントを出力」を選ぶ
H 出力するファイル名、フォントがBDFになっていることを確認後、「生成」をクリック
I「BDFの解像度」の「その他」に「32」(Eで指定した値)を入力後、「OK」をクリックすると、BDFファイルが作成される。
 
※ BDFファイルのビットマップデータは、ゼロサプレス(上位が0なら省略)16進数になっている。
※ BDFファイルの書式が東雲フォントと異なっているので注意が必要。
 
<参考> FontForgeの使い方・日本語版取説など
freesoft-100
fontforge.org
github.com
 

エンコーディングの変更(JIS X0208を選択)

Bitmap StrikesAvailableでビットマップを作成

ピクセルサイズを
32にセット

ビットマップウィンドウ
でビットマップを確認

BDFフォントをファイルに出力

ファイル名を入力

ドットサイズを32に

【おまけ】
 32x32ドットのBDFファイルの読み込みができるようにabc910のBdfEdita4を強化したBdfEdita5.xlsmを作成した。

・フォント付き(7.3Mb)
BdfEdita5.xlsm(zip)
・フォント無し(150kb)
BdfEdita5nf.xlsm(zip)
32ドットパターンの読込と使い方
@ FontForge出力BDFファイルで、Excel取込時に文字列のデリミタ(空白)が正しく認識されなかったので、テキストエディッタで空白をコンマに置換
A「ファイル読込」でExcelにBDFファイルを読み込む
B Codeセル(B23)に文字コードを入力後、「BDF拡張読込」ボタンをクリック
C 32x32ドットの拡張画面に文字パターンが表示される(mgenplus***.bdfの文字は半角・全角の両方を含む)
D もし、パターン表示位置が正しくない場合は、パターンを移動し、さらに必要であれば編集・修正
※ 「BDF拡張読込」の動作を確認したBDFファイルはFontForgeで保存したBDFファイルのみです
 
   BdfEdita5.xlsmのVBAソースリスト
 

BdfEdita5の画面例 (「BDF拡張読込」ボタンを追加)


L 大陸はどうやってできたのか?  〜「大陸の誕生」を読んで

by fjk

 大陸(陸地、日本列島も)の地殻はどうやってできたのか興味がわき、「大陸の誕生」(田村芳彦著、ブルーバックス、講談社)を読んでみた。
 大陸地殻(安山岩)と海洋地殻(玄武岩)はシリカ(SiO2)の含有比が異なり、安山岩の方がシリカが多く、軽い。そのため安山岩はマントルへの沈み込みがなく、マントル(玄武岩)の上に大陸として安定している。地球には火山が多くあるが、大陸の火山は元々安山岩が溶けたマグマなので、どれだけ噴火しても大陸(安山岩)が増えることはない。一方、海洋の火山は玄武岩マグマなので、大陸地殻になれず、プレートテクトロ二クスに従い、いずれマントルに沈み込んでしまう。
 この原理では、大陸地殻(安山岩)が増える要素がなく、大陸ができないことになる。
 同書では、この矛盾について、マントルから沸き上がる玄武岩マグマで、ある条件が整えば、安山岩マグマになることを紹介している。その条件は、マグマができる温度と圧力と水(溶解温度を下げる働き)で、@水があること、A圧力が1GPa(地面から30km)以下であること。
 すなわち、大陸の火山では地殻の厚さが厚く(圧力が高い)、マントル由来のマグマから安山岩ができる条件がなく、地殻が薄い海洋の火山でのみ安山岩ができる条件が満たされる。そして、この様にしてできた海洋火山由来の安山岩が、プレートの沈み込み帯に差しかかると、安山岩部分のみが地表に取り残されることで大陸地殻(安山岩)ができる。
 ちなみに、火星や金星の地殻は全て玄武岩といわれており、海洋がありプレートテクトロニクスが働く惑星にのみ大陸(安山岩)ができると考えられている。


W Windows11マシン 〜いよいよ新OSディスクトップマシン

by fjk

 abc910で動作に不安を覚えたVistaマシンの後継にと、windows11マシンを20万円以内(office付き)で作ることにした。パーツを集めて自作すれば好みのマシンにできるが、安価なパーツを揃えるのが面倒になったので、手頃なBTOマシンが無いか、ネットで調べ、実機を確認するため市内の3店のBTOショップを廻ってみた。簡単な画像処理と旧ハードディスクも取り付けたいのでベイに余裕があることも条件とした。
 当初はCPUをi7と考えていたが、店員が「画像処理をするのであれば、ゲームをしなくてもそれなりのグラボが必要ですよ」と言われた。・・が、i7(\50,000程度)にグラボを加えると予算がオーバーする。
 さらに、ネットで調べていると、パソコン工房で「i5(14400F、価格はi7の半分)+RTX3050(6Gb)マシン」が2.5万円引きの正月特価で売られており、メモリ等を強化し、税込18.7万円(送料0円)で注文した。。

主な仕様は、(★はオプションで強化・追加したパーツ)
【OS】     Windows 11 Home
【Officeソフト】 Office Home and Business 2024 [デジタルライセンス版] 【個人向け】★
【セキュリティソフト】 「ノートン 30日体験版」 プリインストール
【CPU】    Core i5-14400F [4.7GHz/10コア(P6+E4)/16スレッド/20MBキャッシュ/TDP 65W-148W]
【CPU冷却グリス】 ナノダイヤモンドグリス(熱伝導率:16W/m・K) JP-DX1 塗布サービス★
【CPUクーラー】 トップフロー空冷クーラー
【グラフィック】 NVIDIA GeForce RTX 3050 6GB GDDR6 [HDMI×1・DisplayPort×3]
【メインメモリ】 32GB(16GB×2) [DDR5 / デュアルチャンネル]★
【1stストレージ】 1TB SSD / NVMe M.2 [PCIe 4.0×4] ★
【チップセット】 インテル B760 チップセット
【サウンド機能】 High Definition Audio subsystem
【ネットワーク】 有線:1000BASE-T ※無線機能はついておりません
【光学ドライブ】 記録型ブルーレイドライブ [LG BH16NS58/大容量BD-XL対応]★
【ケースファン】 標準12cmケースファン 背面搭載
【電 源】    700W [80PLUS GOLD認証] / ATX電源★
【ケース】    ミニタワーMicroATXケース IN-WIN EM040 [フロントUSB3.0] ブラック
【キーボード】  有線/日本語キーボード/ブラック
【マウス】    有線/2ボタン/ブラック
◆参考:
上記仕様のパーツをネットの最安値で集めても約18万円。組立工賃を考慮とすると、トントン。
 

前 面

背 面

ミニタワーケースの中の様子

 正月休み明けでしたが、注文から12日後(通常納期は1〜2週間)に商品が届いた。早速コードを繋ぎ、右(電源)ボタンを押して電源を投入してみるが、・・ン、LEDも点灯せず、起動しない。初期不良?と思いつつ、ケースの側板を外してCPUファンが見える状態で、再度起動を試みると、何故か今度は正常に起動した。1回目はキーボード・マウスをケースの前面に、2回目は背面のUSBコネクタに接続した違いだけである。どうもWindowsセットアップ前はケース前面のUSBコネクタは有効ではなく、「キーボード無し」と判断されたらしい。なお、始めて電源を入れる時は、Delキーを押してBIOSが立ち上がるようにした。
 ケースの内部を確認すると、マザーボードにはASRockのロゴがあるが、ボード名の記述はなく、およらくショップオリジナルのB760M LGA1700らしい。ボタン電池の位置と背面PS/2端子の違いがあるが、スペックはB760M-H/M.2に近いものと思われる。拡張ベイは5.25inchベイ×2、3.5inchベイ×1 、3.5inch内蔵ベイ×2、3.5/2.5inch兼用内蔵ベイ×1。なお、BTOマシンにはシステムの説明書の付属がなく、セットアップの簡単な説明書が付いているだけ。


マザーボードはASRock製

起動時にDelキーを押してBIOSを起動(英語のみ)

 有線LANを接続し、Delキーを押さずに電源を再度投入すると、「ハードの確認」「Windowsの更新確認」後、Windowsのセットアップが進行し、画面の指示に従い、「マイクロソフトのアカウントを登録」し「ライセンス契約に同意」すると、無事にWindows11が起動した(ここまで結構時間がかかる)。
 次に、デジタルライセンス版Office(Wordなど)を起動してみると、「規約の同意」画面で「同意」すると、Officeが使えるようになった。しばらくすると、MicrosoftからこのOfficeのプロダクトキーがメールで届き、このキーはOfficeの再インストール時に必要なので、保証書と共に保管しておくこと!


WIndows11が起動。システムを確認

Excel(office)も使えるようになった

★ Windowsシステムが故障した場合に備えて「回復ドライブ」を作る

@ コントロールパネル/ハードウェアとサウンド/電源オプション/プラン設定の変更(設定中に画面が消えるのを防止するため)
「ディスプレィの電源を切る」「コンピュータをスリープ状態にする」を「適用しない」に設定
 
A 回復ドライブの作成 (結構時間がかかります。作り方はここなども参照。)
16GB以上のUSBメモリ接続後、スタートボタン、全てのアプリ、Windowsツール/回復ドライブ をWクリック。

◆OneDrive

OneDriveの同期の解除/設定
windows11では、クラウドサービスであるOneDrivがデフォルトで使える。
しかし、無料のサービスは5GBなので、フォルダーとの同期を続けていると、容量が足りなくなる。
そこで、この同期を解除/設定するには、「OneDrive/設定/同期とバックアップ」で設定できます。

◆スタートメニューをWindows10風に
 @ タスクバーの空いている所を右クリック 
 A「タスクバーの設定」をクリックする
 B「タスクバーの動作」を選択
 C「タスクバーの配置」で、
   「中央揃え」−>「左揃え」に

※ windows11風に戻すにはCの逆を実行


【BDFEdita5のVBAプログラム】

abc910に追加した関数のみ紹介(詳細は BDFEdita5.bas[zip] を参照)

' ---   これ以前は、BDFEDita4.basとほぼ同じなので、省略 ---
Sub findKey2()
    Dim ws As Worksheet
    Set ws = Worksheets(Worksheets.Count)
    Dim kw As String
    Dim cc As Variant
    Dim bc, br, ox As Integer
    Dim cl, m As LongLong
       
    kw = "ENCODING"
    RowSize = 16
    CorSize = 16
    Dim code As Long
    cc = Worksheets("16dot").Range("B23")
    code = Val("&h" & cc)
    Dim i, j, b As Integer
    Dim r As Range
    With ws.Range("A:A")
        Worksheets("16dot").Range("C1").Value = ws.Name
        Set r = .Find(what:="SIZE", LookAt:=xlWhole)
        If r Is Nothing Then
            Exit Sub
        Else
            CorSize = r.Offset(0, 2).Value
            Worksheets("16dot").Range("C2") = CorSize
            RowSize = r.Offset(0, 3).Value
            Worksheets("16dot").Range("E2") = RowSize
        End If
    
        Set r = .Find(what:=kw, LookAt:=xlWhole)
        Do
            If r Is Nothing Then
                MsgBox ("該当無し")
                Exit Do
            Else
                If r.Next.Value = code Then
                    Range("BQ2:CV33").Clear
                    If code < 256 Then
                        bc = r.Offset(3, 1)
                        br = r.Offset(3, 2)
                        ox = r.Offset(3, 3)
                        For i = 1 To br
                            cc = r.Offset(4 + i)
                            cl = WorksheetFunction.Hex2Dec(cc)
                            For b = bc + ox + 2 To 0 Step -1
                                m = 2 ^ b
                                  If cl And m Then
                                    Worksheets("16dot").Range("BQ2").Offset(i, 32 - b - 1) = "●"
                                Else
                                    Worksheets("16dot").Range("BQ2").Offset(i, 32 - b - 1) = ""
                                End If
                            Next
                         Next i
                    Else
                        bc = r.Offset(1, 1)
                        br = r.Offset(1, 2)
                        ox = r.Offset(1, 3)
                        For i = 1 To br
                            cc = r.Offset(2 + i)
                            cl = WorksheetFunction.Hex2Dec(cc) / 4
                            For b = bc + ox To 0 Step -1
                                m = 2 ^ b
                                 If cl And m Then
                                    Worksheets("16dot").Range("BQ2").Offset(i, 32 - b - 1) = "●"
                                Else
                                    Worksheets("16dot").Range("BQ2").Offset(i, 32 - b - 1) = ""
                                End If
                            Next
                         Next i
                    End If
                    Worksheets("16dot").Select
                    Call SetEditScrn
                    Exit Do
                Else
                    Set r = .FindNext(r)
                End If
            End If
        Loop While Not r Is Nothing
    End With
End Sub
※ 全角フォントで、BDFデータ(cl)を4で割っているのは、ビット演算時のオーバーフローエラーを回避している。


※プログラムのリストをハイライト付きのスタイルで見る場合はここをクリック


※ 本レポートの参考・利用は、あくまでも自己責任でお願いします。


フリーのフォントエディッタ 大陸はどうやってできたのか? Windows11マシン