"0.75rem", // Top KPI card values "kpi_value" => "2.0rem", // Middle "최근 센서 데이터" values "mid_value" => "1.0rem", // Status stream (Activity) "status_title" => "1.0rem", "status_text" => "0.85rem", // Recent list/table "list_header" => "0.9rem", "list_value" => "0.95rem", // Yesterday max/min badge "yday_badge" => "0.85rem", ]; $NS20_FONTS = $__NS20_FONTS_DEFAULT; // Load saved if (is_file($__NS20_FONT_JSON)) { $raw = @file_get_contents($__NS20_FONT_JSON); $j = json_decode($raw, true); if (is_array($j)) { foreach ($j as $k=>$v) { if (isset($NS20_FONTS[$k]) && is_string($v) && trim($v) !== "") { $NS20_FONTS[$k] = trim($v); } } } } // If included from another file, don't render any HTML $__is_direct = true; if (isset($_SERVER["SCRIPT_FILENAME"])) { $__is_direct = (basename($_SERVER["SCRIPT_FILENAME"]) === "font_config.html"); } if (!$__is_direct) { return; } ns20_auth_require_page_access('font_config'); $__msg = ""; if ($_SERVER["REQUEST_METHOD"] === "POST") { $next = $NS20_FONTS; foreach ($next as $k=>$old) { if (isset($_POST[$k])) { $v = trim((string)$_POST[$k]); if ($v !== "") $next[$k] = $v; } } $ok = @file_put_contents( $__NS20_FONT_JSON, json_encode($next, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE) ); if ($ok === false) $__msg = "❌ 저장 실패: inc 디렉토리 쓰기 권한을 확인하세요 (font_config.json)"; else $__msg = "✅ 저장 완료"; $NS20_FONTS = $next; } ?> NS40 폰트 설정

NS40 폰트 설정

• 입력 예: 2.0rem, 18px, 110%
• 저장은 /inc/font_config.json 파일로 이루어집니다. (서버 쓰기 권한 필요)

라벨 / 소제목

" />

상단 최신값 카드

" />

중간 카드 (최근 센서 데이터)

" />

상태 스트림 (Activity)

" />
" />

최근 데이터 리스트

" />
" />

전날 최고/최저 표시

" />