Skip to content

Conversation

@berryzplus
Copy link
Contributor

PR対象

  • ドキュメント(md、ヘルプファイル等)
  • ビルド手順/CI

カテゴリ

  • 改善

PR の背景

仕様・動作説明

HTMLヘルプのビルドにCMakeを使うよう変更します。

ビルド方式 説明
変更前 bat + PowerShell ビルドをバッチで実装。バッチで実現不能な部分にWindows PowerShellを使用。
変更後 bat + CMake + PowerShell Core ビルドをCMakeで実装、バッチはCMakeを叩くだけ。CMakeから呼び出すシェルスクリプトに PowerShell Core を採用し、プレーンテキストの UTF8→SJIS 変換を実現。

変更により、HTMLヘルプのソースを UTF-8 で登録できるようになります。


問題のあった文字は「全角チルダ」です。
Windows準拠とUnicode準拠で仕様が異なるため、実装によってブレが生じていました。

  • 全角チルダ \uFF5E、ShiftJISで \x8160。Windows仕様はこっち。
  • 波ダッシュ \u301C、ShiftJISで \x8160。Unicode仕様はこっち。

今後どうするかについてはノープランです。
サクラエディタは一応、古くからの伝統を継承するアプリなので Windows準拠 一択ですが、
アホみたいに正統派を騙るなら Unicode準拠 を「正」とする選択もあるかも。


ドキュメントの更新については、最低限に留めています。

システムロケールが日本語以外の場合に使うLocale Emulatorの話とか、もとから書いてない事項が結構あります。


レビュー不可だと思うので、本件も勝手にやります。

PR の影響範囲

  • HTMLヘルプのメンテナンスに影響します。
  • HTMLヘルプのビルドに影響します。

テスト内容

  • システムロケールが ja-JP の端末でビルドできることを確認しました。
  • GitHub Actions(≒システムロケールが ja-JP 以外)の環境でビルドできることを確認しました。

関連 issue, PR

参考資料

HTMLヘルプのコンパイラはレガシー資産なのでソースをSJISにしないとうまく動かない。
GitではテキストファイルをUTF-8で管理するため、文字コード変換で問題が出る。
HTMLヘルプのビルド工程全体を CMake に移行し、UTF8→SJIS変換を自前で行うようにする。
従来は working-tree-encoding で cp932 を指定していたが、gitクライアント依存で文字コード変換の問題が起きていた。
ビルドスクリプトが無駄に複雑になるので ./help/macro/macro.hhp の拡張子を小文字に置換。
- Out-of-source buildに移行して不要になった無視エントリを削除。
- 各フォルダに分散していた共通の無視リストを統合。
CMake対応により変更した部分のみ更新。
もともとの記述がおかしい点についてはスルー。
@github-actions
Copy link

Test Results

621 tests  ±0   621 ✅ ±0   1m 22s ⏱️ -1s
 78 suites ±0     0 💤 ±0 
  1 files   ±0     0 ❌ ±0 

Results for commit 00f4fee. ± Comparison against base commit 9961b29.

@sonarqubecloud
Copy link

@berryzplus berryzplus merged commit eda9b45 into sakura-editor:master Dec 3, 2025
13 checks passed
@berryzplus berryzplus deleted the feature/use_cmake_for_build-chm branch December 3, 2025 10:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

リポジトリに文字コードがおかしいファイルが含まれている。

1 participant