Q - มีวิธีแสดงขนาดความกว้างของตัวอักษรใน Python ไหมครับ โดยสามารถกำหนด font ได้ด้วย

แนะนำ สอบถาม ภาษา C สำหรับผู้เริ่มต้น ภาษา Java ภาษา Python

Moderator: mindphp, ผู้ดูแลกระดาน

ภาพประจำตัวสมาชิก
kritserv
PHP VIP Members
PHP VIP Members
โพสต์: 6004
ลงทะเบียนเมื่อ: 27/05/2024 10:09 am

Q - มีวิธีแสดงขนาดความกว้างของตัวอักษรใน Python ไหมครับ โดยสามารถกำหนด font ได้ด้วย

โพสต์ที่ยังไม่ได้อ่าน โดย kritserv »

ผมต้องการสร้าง dictionary ของความกว้างของตัวอักษรใน python

โค้ด: เลือกทั้งหมด

char_width = {'A': 8, 'B': 9, 'C': 8, 'D': 9, 'E': 8, 'F': 7, 'G': 9, 'H': 9, 'I': 5, 'J': 6, 
              'K': 9, 'L': 7, 'M': 10, 'N': 9, 'O': 9, 'P': 8, 'Q': 9, 'R': 8, 'S': 8, 'T': 7, 
              'U': 9, 'V': 9, 'W': 11, 'X': 9, 'Y': 9, 'Z': 8, ' ': 4, ',': 2, '.': 2, '+', '-', '*' ,'/', '(', ')', '{', '}', '[', ']', ...}
โดยโค้ดนี้คือปลอมขึ้นมาครับ ไม่ใช่ข้อมูลจริงๆ

ผมต้องการวิธีสร้างข้อมูลแบบนี้ใน Python ครับ อาจจะใช้ library Pillow หรืออะไรก็ได้
ซึ่งจะใช้ฟ้อนต์นี้ในการสร้างข้อมูลครับ "TH Niramit AS.ttf" ช่วยแนะนำด้วยครับ
MindPHP Assistant

Re: Q - มีวิธีแสดงขนาดความกว้างของตัวอักษรใน Python ไหมครับ โดยสามารถกำหนด font ได้ด้วย

โพสต์ที่ยังไม่ได้อ่าน โดย MindPHP Assistant »

แน่นอนครับ! การสร้าง dictionary ของความกว้างของตัวอักษรใน Python สามารถทำได้โดยใช้ library Pillow (PIL) ซึ่งเป็น library สำหรับการจัดการรูปภาพใน Python ในที่นี้เราจะใช้ฟ้อนต์ "TH Niramit AS.ttf" เพื่อคำนวณความกว้างของตัวอักษรต่าง ๆ

ขั้นตอนการทำงานดังนี้:

1. ติดตั้ง Pillow library ก่อน:

โค้ด: เลือกทั้งหมด

bash
pip install pillow
2. ใช้โค้ดด้านล่างเพื่อสร้าง dictionary ของความกว้างของตัวอักษร:

โค้ด: เลือกทั้งหมด

python
from PIL import ImageFont, Image, ImageDraw

# Load the font
font_path = "TH Niramit AS.ttf"
font_size = 12  # สามารถปรับขนาดฟ้อนต์ตามที่ต้องการได้
font = ImageFont.truetype(font_path, font_size)

# ตัวอักษรทั้งหมดที่ต้องการตรวจสอบ
characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,!?()[]{}<>+-=*/^&%$#@"

# สร้าง dictionary เพื่อเก็บความกว้างของตัวอักษร
char_width = {}

# คำนวณความกว้างของตัวอักษรแต่ละตัว
for char in characters:
    width, _ = font.getsize(char)
    char_width[char] = width

# แสดงผลลัพธ์
print(char_width)
ในโค้ดด้านบน:
- เราโหลดฟ้อนต์ "TH Niramit AS.ttf" ด้วยฟังก์ชัน `ImageFont.truetype`.
- เรากำหนดฟ้อนต์ขนาดที่ต้องการ (ในที่นี้คือ 12).
- เราสร้าง list ของตัวอักษรที่ต้องการตรวจสอบ.
- เราใช้ `font.getsize(char)` เพื่อคำนวณความกว้างของตัวอักษรแต่ละตัว และเก็บผลลัพธ์ลงใน dictionary `char_width`.

เมื่อคุณรันโค้ดนี้ คุณจะได้ dictionary ที่มีความกว้างของตัวอักษรต่าง ๆ ตามฟ้อนต์ที่กำหนดครับ
ภาพประจำตัวสมาชิก
kritserv
PHP VIP Members
PHP VIP Members
โพสต์: 6004
ลงทะเบียนเมื่อ: 27/05/2024 10:09 am

Re: Q - มีวิธีแสดงขนาดความกว้างของตัวอักษรใน Python ไหมครับ โดยสามารถกำหนด font ได้ด้วย

โพสต์ที่ยังไม่ได้อ่าน โดย kritserv »

โค้ดของ GPT ใช้ได้ครับ ตอนแรกจะติด error เพราะ Pillow version ใหม่ๆ ไม่มีคำสั่ง getsize() >> https://github.com/tensorflow/models/issues/11040 ต้องย้อน version ของ Pillow ก่อน

โค้ด: เลือกทั้งหมด

pip install Pillow==9.5.0
ฟอนต์ TH Niramit AS.ttf size = 8

โค้ด: เลือกทั้งหมด

from PIL import ImageFont, Image, ImageDraw

# Load the font
font_path = "TH Niramit AS.ttf"
font_size = 8  # สามารถปรับขนาดฟ้อนต์ตามที่ต้องการได้
font = ImageFont.truetype(font_path, font_size)

# ตัวอักษรทั้งหมดที่ต้องการตรวจสอบ
characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,!?()[]{}<>+-=*/^&%$#@"

# สร้าง dictionary เพื่อเก็บความกว้างของตัวอักษร
char_width = {}

# คำนวณความกว้างของตัวอักษรแต่ละตัว
for char in characters:
    width, _ = font.getsize(char)
    char_width[char] = width

# แสดงผลลัพธ์
print(char_width)

โค้ด: เลือกทั้งหมด

{'A': 4, 'B': 3, 'C': 3, 'D': 4, 'E': 3, 'F': 3, 'G': 4, 'H': 3, 'I': 1, 'J': 2, 'K': 4, 'L': 3, 'M': 5, 'N': 3, 'O': 4, 'P': 3, 'Q': 4, 'R': 3, 'S': 3, 'T': 3, 'U': 4, 'V': 4, 'W': 5, 'X': 3, 'Y': 3, 'Z': 3, 'a': 3, 'b': 3, 'c': 3, 'd': 3, 'e': 3, 'f': 2, 'g': 3, 'h': 3, 'i': 1, 'j': 2, 'k': 3, 'l': 1, 'm': 5, 'n': 3, 'o': 3, 'p': 3, 'q': 3, 'r': 2, 's': 3, 't': 2, 'u': 3, 'v': 3, 'w': 4, 'x': 3, 'y': 3, 'z': 3, '0': 3, '1': 2, '2': 3, '3': 3, '4': 3, '5': 3, '6': 3, '7': 3, '8': 3, '9': 3, '.': 2, ',': 2, '!': 2, '?': 3, '(': 2, ')': 2, '[': 2, ']': 2, '{': 2, '}': 2, '<': 3, '>': 3, '+': 3, '-': 3, '=': 3, '*': 3, '/': 3, '^': 3, '&': 4, '%': 5, '$': 3, '#': 3, '@': 5}
ตอบกลับโพส
  • Similar Topics
    ตอบกลับ
    แสดง
    โพสต์ล่าสุด

ผู้ใช้งานขณะนี้

สมาชิกกำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และบุคลทั่วไป 6