Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

変換候補と注釈のフォントサイズ変更を追加 #142

Merged
merged 8 commits into from
Apr 13, 2024

Conversation

y-yu
Copy link
Contributor

@y-yu y-yu commented Apr 6, 2024

変換候補と注釈はもともとの設定(SwiftUIのデフォルト)のフォントサイズが少し小さめに感じたので、これらのフォントサイズ変更機能を作りました。

変換候補と注釈

image

設定画面

image

@mtgto
Copy link
Owner

mtgto commented Apr 7, 2024

ありがとうございます。
私は自分で作ったUIに慣れてしまっていたためカスタマイズの需要がわからないため助かります。
いくつか思いついたことを書いてみます。

  • AquaSKKのようにフォントパネルを出してフォントサイズ以外にもフォント自体を変えたりしてもいいかもしれない? と思いましたがひとまずフォントサイズだけでもよいかもですね。
  • 補完パネルのフォントサイズも変更できてもいいのかな? と思いましたがあまりそこには需要はないと思いますか?

macSKK/InputController.swift Outdated Show resolved Hide resolved
@@ -119,6 +119,10 @@ final class SettingsViewModel: ObservableObject {
@Published var showAnnotation: Bool
/// インラインで表示する変換候補の数。
@Published var inlineCandidateCount: Int
/// 変換候補のフォントサイズ
@Published var candidatesFontSize: Int = 13
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

memo: ぐぐっても見当たらなかったのでswift replで確認。

Welcome to Apple Swift version 5.10 (swiftlang-5.10.0.13 clang-1500.3.9.4).
Type :help for assistance.
  1> import AppKit
  2> NSFont.preferredFont(forTextStyle: .body).pointSize
$R1: CoreFoundation.CGFloat = 13

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

これは自分もググってわからなかなったですが、目で見て(ぇ)だいたい同じくらいということで13を初期値にしました。

macSKK/Settings/GeneralView.swift Outdated Show resolved Hide resolved
@y-yu
Copy link
Contributor Author

y-yu commented Apr 7, 2024

  • フォントパネルを出す方法がサクっとは分からなかったので、とりあえず直近小さすぎて困っていた(自分は普段、エディターやIDEなどのフォントサイズを20くらいで使っているので……)この2つのフォントサイズを変更する設定としました
  • 補完もやろうかどうか実は迷ったんですが、補完は1行しか表示されないのであまり困ってないというのがあります。変換候補と注釈は文字数が多くて複数行になるので、細かいと正確に読むのが難しいのです 😇

@y-yu y-yu requested a review from mtgto April 8, 2024 12:51
@@ -24,6 +24,18 @@ struct GeneralView: View {
}
}
}
Section {
Picker("Candidates font size", selection: $settingsViewModel.candidatesFontSize) {
ForEach(6..<31) { count in
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

29で終わりにするより30で終わりのほうが自然かと思って1増やしました。
Swiftでは範囲を 6...30 のようにも定義できるんですが、それは ClosedRange<Int> となってしまってForEachは受け取ってくれないようでした。

Section {
Picker("Candidates font size", selection: $settingsViewModel.candidatesFontSize) {
ForEach(6..<31) { count in
Text("\(count)").tag(count)
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

13が指定されているとき、表示上19になっていたのでtagで指定するようにします。

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

なるほど 🙏

@@ -137,6 +141,8 @@ final class SettingsViewModel: ObservableObject {
}
showAnnotation = UserDefaults.standard.bool(forKey: UserDefaultsKeys.showAnnotation)
inlineCandidateCount = UserDefaults.standard.integer(forKey: UserDefaultsKeys.inlineCandidateCount)
candidatesFontSize = UserDefaults.standard.integer(forKey: UserDefaultsKeys.candidatesFontSize)
annotationFontSize = UserDefaults.standard.integer(forKey: UserDefaultsKeys.annotationFontSize)
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

macSKKAppでデフォルト値を保存してそちらから採用するようにします。

)
.padding(EdgeInsets(top: 16, leading: 12, bottom: 16, trailing: 8))
.frame(width: Self.annotationPopupWidth, alignment: .topLeading)
.frame(maxHeight: 200)
.frame(maxHeight: max(200, CGFloat(words.count) * candidates.candidatesLineHeight + Self.footerHeight))
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

変換候補のフォントサイズが大きいとき注釈表示の高さが小さくなってしまうので変換候補パネルの高さと最低保証とします。
ただし変換候補が1つとか2つしかないときには変換候補パネルの高さに合わせるとそれはそれで狭いので200は確保します。

.scrollDisabled(true)
.frame(width: candidates.minWidth, height: CGFloat(words.count) * Self.lineHeight)
.frame(width: candidates.minWidth, height: CGFloat(words.count) * candidates.candidatesLineHeight)
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ここでSelf.lineHeightを使っているとフォントサイズが大きいときに全部の候補を表示できないため修正。

@y-yu
Copy link
Contributor Author

y-yu commented Apr 13, 2024

いい感じです。ありがとうございます 🙆‍♀️

image

@mtgto
Copy link
Owner

mtgto commented Apr 13, 2024

Pull Requestありがとうございました。
skkserv対応で最近全然リリースできてないのでこの修正を今週末中にリリースしようと思っています。

@mtgto mtgto merged commit 3078ee2 into mtgto:main Apr 13, 2024
2 checks passed
@y-yu y-yu deleted the add-fontsize-setting branch April 15, 2024 04:36
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.

2 participants