From 13b46f0b7d3df92de03a65e84175b25488c110be Mon Sep 17 00:00:00 2001 From: Vladimir Date: Fri, 14 Aug 2026 18:43:36 +0300 Subject: [PATCH] =?UTF-8?q?ui(dxcluster):=20=D1=81=D0=B8=D1=81=D1=82=D0=B5?= =?UTF-8?q?=D0=BC=D0=BD=D1=8B=D0=B9=20=D1=88=D1=80=D0=B8=D1=84=D1=82=20?= =?UTF-8?q?=D0=B2=D0=BC=D0=B5=D1=81=D1=82=D0=BE=20=D0=B7=D0=B0=D1=85=D0=B0?= =?UTF-8?q?=D1=80=D0=B4=D0=BA=D0=BE=D0=B6=D0=B5=D0=BD=D0=BD=D0=BE=D0=B3?= =?UTF-8?q?=D0=BE=20'Courier=20New'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit По проекту гарнитуры не задаём — работает системный шрифт (907c2c0 выпилил 'Courier New' из flat-контролов, 19babef из статус-бара). Новый код DX-кластера это правило нарушал в трёх местах, все три введены в a2fdc3a. - DXSpotOverlay: подписи спотов на спектре рисуются системным шрифтом — гарнитура убрана совсем. Моноширинность там ни к чему: позывные не в колонках, ширина чипа и так меряется по TextWidth. Размер по-прежнему задан через Font.Height от высоты ряда — иначе подпись не влезала бы при DPI. - DXClusterForm: список спотов и лог соединения ОСТАЮТСЯ моноширинными осознанно (колонки частота/позывной/мода/UTC/спотер выровнены пробелами в FormatSpotLine, пропорциональный шрифт их развалит), но имя теперь платформенное — MONO_FONT = Consolas/Monospace, как в CWTerminalForm и в полосе CW у PanafallPanel. 'Courier New' на Linux не существует вовсе, fontconfig молча подменял его. Font.Size/Font.Style не трогал: их проект оставляет и после перехода на системный шрифт (в StatusBar размер сохранён). Дифы всех четырёх коммитов ветки проверены по Font.Name — других мест, где DX-код задаёт гарнитуру, нет. Сборка ewsdr (--ws=qt6) — ОК. Co-Authored-By: Claude Opus 5 --- DXClusterForm.pas | 14 ++++++++++++-- DXSpotOverlay.pas | 7 ++++--- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/DXClusterForm.pas b/DXClusterForm.pas index 55ec7b7..9aa680c 100644 --- a/DXClusterForm.pas +++ b/DXClusterForm.pas @@ -88,6 +88,16 @@ const BTN_H = 26; LOG_H = 130; + // Моноширинный — ТОЛЬКО там, где колонки выровнены пробелами (список спотов и + // лог соединения); всё остальное в окне идёт системным шрифтом, как везде по + // проекту. Имя платформенное, как в CWTerminalForm: 'Courier New' есть не + // всюду (на Linux fontconfig всё равно подставляет свой моноширинный). +{$IFDEF WINDOWS} + MONO_FONT = 'Consolas'; +{$ELSE} + MONO_FONT = 'Monospace'; +{$ENDIF} + constructor TDXClusterForm.CreateWith(AOwner: TComponent; AStore: TDXSpotStore; AClient: TDXClusterClient); var @@ -197,7 +207,7 @@ begin FLog.Anchors := [akLeft, akRight, akBottom]; FLog.ReadOnly := True; FLog.WordWrap := False; - FLog.Font.Name := 'Courier New'; + FLog.Font.Name := MONO_FONT; FLog.Font.Size := 8; FList := TFlatListBox.Create(Self); @@ -206,7 +216,7 @@ begin ClientWidth - DpiScale(MARGIN * 2), FLog.Top - DpiScale(56 + 6)); FList.Anchors := [akLeft, akTop, akRight, akBottom]; - FList.Font.Name := 'Courier New'; + FList.Font.Name := MONO_FONT; FList.Font.Size := 9; FList.TabStop := True; FList.OnDblClick := @OnListDblClick; diff --git a/DXSpotOverlay.pas b/DXSpotOverlay.pas index c64b3cf..1e6f489 100644 --- a/DXSpotOverlay.pas +++ b/DXSpotOverlay.pas @@ -419,9 +419,10 @@ begin C.Pen.Style := psClear; C.FillRect(Rect(0, 0, W, FBandH)); - // Шрифт привязан к высоте ряда (а не к point-size) — подпись влезает при - // любом DPI-масштабе, как в бэндплане. - C.Font.Name := 'Courier New'; + // Гарнитуру НЕ задаём — системная, как договорено по проекту: позывные тут + // не в колонках, ширина чипа и так меряется по TextWidth. Задан только + // размер, привязанный к высоте ряда (а не к point-size), — подпись влезает + // при любом DPI-масштабе, как в бэндплане. C.Font.Style := [fsBold]; C.Font.Height := -Max(8, Round(FRowH * 0.62));