#!/usr/bin/env python3
"""Buat image FB DAS Bengkel Indonesia 2 Sep 2026 — Servis Berkala Fortuner Diesel
1080x1350, bg #1a1a2e, teks putih, aksen orange #f97316 (pola das_fb_20260901.py)
Artikel: https://dasindonesia.com/bengkel-fortuner-surabaya-servis-berkala/
"""
from PIL import Image, ImageDraw, ImageFont
import os

W, H = 1080, 1350
BG = (26, 26, 46)        # #1a1a2e
TXT = (255, 255, 255)    # white
ORANGE = (249, 115, 22)  # #f97316
MUTED = (200, 200, 210)

FONT_PATHS = [
    "/home/mantapman/.fonts/Poppins-Bold.ttf",
    "/home/mantapman/.fonts/Poppins-SemiBold.ttf",
    "/home/mantapman/.fonts/Poppins-Regular.ttf",
    "/home/mantapman/.fonts/poppins/Poppins-Bold.ttf",
    "/home/mantapman/.fonts/poppins/Poppins-Regular.ttf",
    "/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf",
    "/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf",
]

def font(sz, bold=True, regular=False):
    want = "Bold" if bold else "Regular"
    for p in FONT_PATHS:
        if ("Bold" in p) == bold or (regular and "Regular" in p):
            if os.path.exists(p):
                try:
                    return ImageFont.truetype(p, sz)
                except Exception:
                    continue
    return ImageFont.load_default()

def draw_check(d, x, cy, size, fill):
    """Gambar centang vektor (garis 2 segmen) — anti-tofu, konsisten di semua font."""
    s = size
    p1 = (x, cy + s * 0.52)
    p2 = (x + s * 0.32, cy + s * 0.92)
    p3 = (x + s, cy + s * 0.08)
    d.line([p1, p2, p3], fill=fill, width=max(5, int(s * 0.16)), joint="curve")

img = Image.new("RGB", (W, H), BG)
d = ImageDraw.Draw(img)

SZ = 65

# Header
d.text((SZ, SZ), "DAS BENGKEL INDONESIA", font=font(34, True), fill=ORANGE)
d.text((W - SZ, SZ), "OTOMOTIF", font=font(30, True), fill=TXT, anchor="ra")

# Accent line under header
d.line([(SZ, SZ + 70), (W - SZ, SZ + 70)], fill=ORANGE, width=4)

# Title (big, bold, 2 baris)
title = "SERVIS BERKALA\nFORTUNER DIESEL"
d.multiline_text((SZ, 225), title, font=font(88, True), fill=TXT, spacing=14)

# Subtitle (orange, 1 baris)
d.text((SZ, 585), "Jangan tunggu sampai muncul gejala", font=font(46, True), fill=ORANGE)

# Garis aksen kecil sebelum bullets
d.line([(SZ, 680), (SZ + 180, 680)], fill=ORANGE, width=5)

# Body bullets — 3 item, centang vektor orange, spacing 130
bullets = [
    ("Servis minor tiap 5.000\u201310.000 km", "Ganti oli, filter oli, cek cairan & ban"),
    ("Servis mayor tiap 20.000\u201340.000 km", "Filter udara, glow plug, rem & suspensi"),
    ("Khusus diesel 2.4L & 2.8L GD-6", "Cek injektor & tekanan kompresi mesin"),
]
y = 740
for t, s_ in bullets:
    draw_check(d, SZ + 4, y + 6, 34, ORANGE)
    d.text((SZ + 62, y), t, font=font(38, True), fill=TXT)
    d.text((SZ + 62, y + 56), s_, font=font(29, False), fill=MUTED)
    y += 132

# Footer
d.line([(SZ, H - 130), (W - SZ, H - 130)], fill=(70, 70, 100), width=3)
d.text((SZ, H - 108), "www.dasindonesia.com", font=font(30, True), fill=ORANGE)
d.text((W - SZ, H - 108), "#ServisBerkalaFortuner", font=font(30, True), fill=TXT, anchor="ra")

img.save("das_fb_20260902.png")
print("saved das_fb_20260902.png")

# Sanity check: lebar teks terpanjang (max aman ~950px)
checks = [
    ("title S1", font(88, True), "SERVIS BERKALA"),
    ("title S2", font(88, True), "FORTUNER DIESEL"),
    ("subtitle", font(46, True), "Jangan tunggu sampai muncul gejala"),
    ("b2 label", font(38, True), "Servis mayor tiap 20.000\u201340.000 km"),
    ("b1 sub", font(29, False), "Ganti oli, filter oli, cek cairan & ban"),
    ("footer r", font(30, True), "#ServisBerkalaFortuner"),
]
for name, f, txt in checks:
    print(f"  {name}: {f.getlength(txt):.0f}px")
