API gpt-image-2 คือปลายทาง (endpoint) การสร้างภาพใหม่ของ OpenAI ซึ่งเปิดตัวพร้อมกับ ChatGPT Images 2.0 เมื่อวันที่ 21 เมษายน 2026 หากคุณเรียกใช้ API แชทหรือการฝังของ OpenAI อยู่แล้ว การเพิ่มความสามารถในการสร้างภาพจะใช้รูปแบบคำขอใหม่เพียงรูปแบบเดียว, คีย์ API ที่มีขอบเขตที่เหมาะสม และใช้เวลาประมาณสิบนาที
คู่มือนี้เป็นเรื่องเกี่ยวกับ API โดยเฉพาะ: การยืนยันตัวตน, พารามิเตอร์คำขอ, ตัวอย่างโค้ดในสามภาษา, โหมดการคิด, การสร้างภาพเป็นชุด, การจัดการการตอบกลับ, รหัสข้อผิดพลาด, ข้อจำกัดอัตรา และเวิร์กโฟลว์การทดสอบที่จะช่วยให้คุณไม่เสียเครดิตไปกับพรอมต์ที่ผิดพลาด สำหรับภาพรวมระดับผลิตภัณฑ์ของสิ่งใหม่ใน ChatGPT Images 2.0 โปรดดูที่ บทวิเคราะห์ ChatGPT Images 2.0 ของเรา
ในตอนท้าย คุณจะมีโค้ดที่ทำงานได้จริง, คอลเลกชัน Apidog ที่นำกลับมาใช้ใหม่ได้สำหรับการวนซ้ำ และภาพที่ชัดเจนว่าพารามิเตอร์แต่ละตัวมีค่าใช้จ่ายเท่าใด
ข้อกำหนดเบื้องต้น
ก่อนส่งคำขอแรก คุณต้องมีสี่สิ่งดังนี้:
- บัญชี OpenAI ที่สามารถเข้าถึง API ได้ บัญชีนักพัฒนาแยกต่างหากจาก ChatGPT Plus; การสมัครสมาชิก ChatGPT ไม่รวมเครดิต API
- ระดับการใช้งานที่เรียกเก็บเงินได้
gpt-image-2มีให้บริการในระดับ Tier 1 ขึ้นไป บัญชีใหม่เริ่มต้นที่ Free tier และต้องเพิ่มวิธีการชำระเงินก่อนที่ปลายทางสำหรับรูปภาพจะปลดล็อก - คีย์ API ที่มีขอบเขต
images:writeแนะนำให้ใช้คีย์ที่กำหนดขอบเขตโปรเจกต์มากกว่าคีย์ที่กำหนดขอบเขตผู้ใช้สำหรับการใช้งานจริง - เครื่องมือทดสอบที่สามารถดูตัวอย่างการตอบกลับของรูปภาพได้ Terminal curl ใช้ได้สำหรับคำขอแรก; หลังจากนั้น ให้ใช้ไคลเอนต์ API จริงๆ รายละเอียดเพิ่มเติมด้านล่าง
ตั้งค่าคีย์ในเชลล์ของคุณครั้งเดียว เพื่อให้ทุกตัวอย่างในคู่มือนี้ทำงานได้โดยไม่ต้องแก้ไข:
export OPENAI_API_KEY="sk-proj-..."
ปลายทางและการยืนยันตัวตน
gpt-image-2 ใช้ปลายทางการสร้างภาพเดียวกันกับโมเดลก่อนหน้า:
POST https://api.openai.com/v1/images/generations
การยืนยันตัวตนคือโทเค็นผู้ถือ (bearer token) ในส่วนหัว Authorization ทุกคำขอยังมีเนื้อหา JSON พร้อมด้วย ID โมเดล, พรอมต์ และพารามิเตอร์เอาต์พุต
curl https://api.openai.com/v1/images/generations \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2",
"prompt": "A sharp product hero image for an API testing platform, dark background",
"size": "1024x1024",
"n": 1,
"quality": "high"
}'
หากการเรียกสำเร็จ คุณจะได้รับออบเจกต์ JSON ที่มีอาร์เรย์ data ของรูปภาพ หากเกิดข้อผิดพลาด จะส่งกลับข้อผิดพลาดมาตรฐานของ OpenAI พร้อมกับ code และ message ที่อ่านเข้าใจได้สำหรับมนุษย์; ตารางข้อผิดพลาดในคู่มือนี้จะครอบคลุมข้อผิดพลาดทั่วไป
พารามิเตอร์คำขอ
ทุกฟิลด์ในเนื้อหาคำขอจะเปลี่ยนแปลงสิ่งที่คุณจ่ายและสิ่งที่คุณได้รับ นี่คือแผนที่พารามิเตอร์ที่สมบูรณ์สำหรับ gpt-image-2
| พารามิเตอร์ | ประเภท | ค่า | หมายเหตุ |
|---|---|---|---|
model |
สตริง | gpt-image-2 |
จำเป็น |
prompt |
สตริง | สูงสุด 32,000 ตัวอักษร | จำเป็น พรอมต์ที่ยาวขึ้นจะใช้โทเค็นอินพุตมากขึ้น |
size |
สตริง | 1024x1024, 1024x1536, 1536x1024, 2000x1000, 1000x2000, 2000x667, 667x2000 |
กำหนดจำนวนโทเค็นเอาต์พุต |
quality |
สตริง | standard, high |
high มีค่าใช้จ่ายประมาณ 2 เท่า แต่รองรับข้อความละเอียดและองค์ประกอบ UI ได้ดี |
n |
จำนวนเต็ม | 1–10 | คำขอแบบกลุ่มจะใช้สไตล์ร่วมกันทั้งชุด |
thinking |
สตริง | off, low, medium, high |
งบประมาณการคิดก่อนการเรนเดอร์ |
response_format |
สตริง | url, b64_json |
URL จะหมดอายุในหนึ่งชั่วโมง |
user |
สตริง | อิสระ | ใช้สำหรับการตรวจจับการละเมิด; ส่ง ID ผู้ใช้ที่เข้ารหัส |
background |
สตริง | auto, transparent, opaque |
เอาต์พุตแบบโปร่งใสจะส่งเป็น PNG พร้อมอัลฟา |
seed |
จำนวนเต็ม | int32 ใดๆ | การควบคุมแบบหลวมๆ; seed เดียวกันบวกกับพรอมต์เดียวกันจะได้ผลลัพธ์ที่ใกล้เคียง แต่ไม่เหมือนกันเป๊ะ |
พารามิเตอร์สามตัวที่เปลี่ยนแปลงค่าใช้จ่ายมากที่สุดคือ size, quality และ thinking รูปภาพขนาด 2000 พิกเซลคุณภาพ high พร้อม thinking: "high" อาจมีค่าใช้จ่าย 4–5 เท่าของรูปภาพพื้นฐานขนาด 1024x1024 คุณภาพ standard
ตัวอย่าง Python
SDK อย่างเป็นทางการ (openai>=1.50.0) เพิ่มการรองรับแบบเนทีฟสำหรับ gpt-image-2:
import base64
from pathlib import Path
from openai import OpenAI
client = OpenAI()
response = client.images.generate(
model="gpt-image-2",
prompt=(
"A minimalist diagram of an OAuth 2.1 authorization code flow with PKCE. "
"Five boxes labeled in English: User, Client, Auth Server, Resource Server, Token. "
"Sharp sans-serif text, off-white background, teal accent arrows."
),
size="1536x1024",
quality="high",
n=2,
thinking="medium",
response_format="b64_json",
)
out_dir = Path("out")
out_dir.mkdir(exist_ok=True)
for i, image in enumerate(response.data):
png_bytes = base64.b64decode(image.b64_json)
(out_dir / f"oauth_{i}.png").write_bytes(png_bytes)
print(f"Generated {len(response.data)} images into {out_dir.resolve()}")
สองสิ่งที่ควรสังเกต:
response.dataเป็นรายการ (list) แม้ว่าn=1ก็ตาม ควรวนซ้ำเสมอb64_jsonง่ายกว่าสำหรับสคริปต์ในเครื่อง;urlดีกว่าเมื่อคุณส่งต่อรูปภาพไปยัง CDN หรือการอัปโหลด S3 เนื่องจากคุณไม่ต้องผ่านวงจรการถอดรหัสแล้วเข้ารหัสใหม่
ตัวอย่าง Node.js / TypeScript
import fs from "node:fs/promises";
import OpenAI from "openai";
const client = new OpenAI();
const response = await client.images.generate({
model: "gpt-image-2",
prompt:
"Dashboard UI mockup for a REST client, sentence-case labels, latency sparkline in the top-right, cool grey palette.",
size: "1536x1024",
quality: "high",
n: 4,
thinking: "medium",
response_format: "b64_json",
});
await Promise.all(
response.data.map(async (image, i) => {
if (!image.b64_json) return;
await fs.writeFile(`dash_${i}.png`, Buffer.from(image.b64_json, "base64"));
}),
);
console.log(`Saved ${response.data.length} images`);
ใช้ SDK อย่างเป็นทางการแทนที่จะใช้ fetch โดยตรง เว้นแต่คุณมีเหตุผลที่ไม่ควรใช้ SDK จัดการการลองใหม่, ส่วนหัว idempotency และการสตรีม และยังติดตามการเปลี่ยนแปลงสคีมาที่สำคัญระหว่างการแก้ไขโมเดล
โหมดการคิด: ควรใช้เมื่อใด
thinking ควบคุมว่าโมเดลจะใช้การประมวลผลมากแค่ไหนในการวางแผนเลย์เอาต์ก่อนการเรนเดอร์ สี่ค่าโดยประมาณ:
off: ไม่มีการคิด เหตุผลที่เร็วกว่า, ถูกกว่า, ดีที่สุดสำหรับพรอมต์เชิงสร้างสรรค์แบบหลวมๆ ที่องค์ประกอบไม่จำเป็นต้องแม่นยำlow: การวางแผนเล็กน้อย ค่าเริ่มต้นที่ดีสำหรับภาพผลิตภัณฑ์และภาพฮีโร่medium: การวางแผนที่หนักขึ้น ตัวเลือกที่เหมาะสมสำหรับไดอะแกรม, อินโฟกราฟิก, สไลด์ และสิ่งใดก็ตามที่มีองค์ประกอบที่นับได้ (“สี่แผง”, “สามลูกศร”)high: การคิดเหตุผลสูงสุด ใช้ได้ผลกับเลย์เอาต์หลายภาษาที่ซับซ้อนหรือไดอะแกรมทางเทคนิคที่เข้มงวดเท่านั้น; คาดว่าจะมีความหน่วงและค่าใช้จ่ายที่สูงขึ้นอย่างเห็นได้ชัด
กฎที่ใช้งานได้จริง: หากพรอมต์มีตัวเลข, ป้ายกำกับ หรือข้อจำกัดด้านตำแหน่ง ให้เลื่อนขึ้นหนึ่งระดับ หากแค่บอกว่า “ฉากที่อบอุ่นสบาย” ให้ลดลงหนึ่งระดับ
โหมดการคิดจะเพิ่มโทเค็นการคิดเหตุผลลงในบิล นอกเหนือจากโทเค็นเอาต์พุตภาพ หน้าการกำหนดราคาของ OpenAI แสดงอัตราต่อโทเค็นปัจจุบัน; ให้งบประมาณสำหรับ 1.2–2 เท่าของค่าใช้จ่ายภาพพื้นฐานของคุณเมื่อเปิด medium หรือ high
การสร้างภาพเป็นชุด
การตั้งค่า n > 1 จะส่งคืนรูปภาพหลายรูปในการตอบกลับครั้งเดียวที่ใช้การจัดองค์ประกอบและสไตล์ร่วมกัน นี่ไม่ใช่แบบเดียวกับการเรียกปลายทาง n ครั้งพร้อมกัน ซึ่งจะให้รูปภาพสี่รูปที่ไม่เกี่ยวข้องกัน เอาต์พุตแบบกลุ่มมีความสอดคล้องกัน ซึ่งตรงกับวิธีการทำงานของทีมออกแบบ
response = client.images.generate(
model="gpt-image-2",
prompt="Four different hero illustrations for an API documentation landing page, shared color palette, shared line weight.",
size="1536x1024",
quality="high",
n=4,
thinking="low",
)
คุณจ่ายตามรูปภาพ ดังนั้น n=4 จึงมีค่าใช้จ่ายประมาณ 4 เท่าของ n=1 ข้อดีคือความสอดคล้อง ไม่ใช่ปริมาณงาน
รูปแบบการตอบกลับและการจัดเก็บ
สองรูปแบบ, สองกรณีการใช้งาน:
b64_json: รูปภาพถูกฝังอยู่ในคำตอบ โดยตรง ใช้งานง่ายสำหรับสคริปต์ เพย์โหลดการตอบกลับมีขนาดใหญ่ขึ้นอย่างรวดเร็ว; PNG คุณภาพสูงขนาด 2000 พิกเซลอาจทำให้ขนาดการตอบกลับเกิน 3 MB ได้url: รูปภาพจะอยู่บน CDN ของ OpenAI เป็นเวลาหนึ่งชั่วโมง และคุณต้องดาวน์โหลดเอง ดีกว่าสำหรับฟังก์ชันไร้เซิร์ฟเวอร์ที่มีข้อจำกัดขนาดการตอบกลับ และสำหรับไปป์ไลน์ที่ส่งต่อรูปภาพไปยังที่เก็บข้อมูลของคุณเอง
สำหรับการใช้งานจริง ให้ดาวน์โหลด URL และอัปโหลดไปยัง S3, R2 หรือ Cloudflare Images ของคุณเองทันที ห้ามส่ง URL ของ OpenAI ให้ผู้ใช้ปลายทาง เนื่องจากมันจะหมดอายุ
การจัดการข้อผิดพลาดและข้อจำกัดอัตรา
gpt-image-2 ส่งคืนรูปแบบข้อผิดพลาดมาตรฐานของ OpenAI นี่คือข้อผิดพลาดที่คุณจะพบ:
| HTTP | code |
สาเหตุ | วิธีแก้ไข |
|---|---|---|---|
| 400 | invalid_request_error |
ขนาดไม่ถูกต้อง, อัตราส่วนไม่รองรับ, พรอมต์ยาวเกิน 32k ตัวอักษร | ตรวจสอบรายการขนาดและตัดพรอมต์ให้สั้นลง |
| 401 | invalid_api_key |
คีย์ขาดหายไปหรือไม่ถูกต้อง | ส่งออก OPENAI_API_KEY ใหม่ |
| 403 | insufficient_quota |
ไม่มีเครดิต หรืออยู่ใน Free tier | เพิ่มการเรียกเก็บเงิน, ตรวจสอบ tier |
| 429 | rate_limit_exceeded |
ส่งคำขอมากเกินไปต่อนาที | ถอยกลับพร้อม jitter; ลองใหม่พร้อม Retry-After |
| 429 | image_generation_user_error |
การปฏิเสธนโยบายเนื้อหา | เปลี่ยนถ้อยคำของพรอมต์ |
| 500 | server_error |
ปัญหาชั่วคราวของ OpenAI | ลองใหม่สองครั้งด้วย exponential backoff |
| 503 | overloaded |
การใช้งานสูงสุดทั่วทั้งภูมิภาค | รอแล้วลองใหม่ |
ข้อจำกัดอัตราบน gpt-image-2 เป็นแบบแบ่งตามระดับ (tier-based) ที่ Tier 1 คุณเริ่มต้นที่ประมาณ 50 คำขอต่อนาที; ระดับที่สูงขึ้นจะเพิ่มขึ้น อ่านส่วนหัว x-ratelimit-remaining-requests และ x-ratelimit-remaining-tokens ในทุกการตอบกลับเสมอ และลดความเร็วลงก่อนที่จะชนข้อจำกัด
ข้อผิดพลาดที่สามารถลองใหม่ได้ในการใช้งานจริง:
import time
from openai import OpenAI, RateLimitError, APIStatusError
client = OpenAI()
def generate_with_retry(prompt: str, tries: int = 3):
delay = 1.0
for attempt in range(tries):
try:
return client.images.generate(
model="gpt-image-2",
prompt=prompt,
size="1024x1024",
quality="high",
n=1,
)
except RateLimitError:
time.sleep(delay)
delay *= 2
except APIStatusError as e:
if 500 <= e.status_code < 600 and attempt < tries - 1:
time.sleep(delay)
delay *= 2
continue
raise
raise RuntimeError("gpt-image-2 retries exhausted")
อย่าลองใหม่กับข้อผิดพลาด 400, 401 หรือ 429 ที่เกี่ยวกับนโยบายเนื้อหา; ข้อผิดพลาดเหล่านั้นล้มเหลวด้วยเหตุผล และการลองใหม่จะทำให้เสียเครดิตโดยเปล่าประโยชน์
การทดสอบ API ด้วย Apidog
การวนซ้ำพรอมต์การสร้างภาพจากเทอร์มินัลเป็นไปอย่างช้าๆ: คุณไม่สามารถเห็นผลลัพธ์, ไม่สามารถเปรียบเทียบการเปลี่ยนแปลงพารามิเตอร์ และไม่สามารถกำหนดเวอร์ชันพรอมต์ที่ดีได้ ไคลเอนต์ API ที่สร้างขึ้นโดยเฉพาะสามารถแก้ไขปัญหาทั้งสามนี้ได้

Apidog ถือว่าปลายทาง gpt-image-2 เป็นคำขอระดับเฟิร์สคลาส เวิร์กโฟลว์ทั่วไป:
- สร้างคำขอใหม่ในคอลเลกชัน OpenAI ของคุณ, วิธีการ
POST, URLhttps://api.openai.com/v1/images/generations - เพิ่ม
Authorization: Bearer {{OPENAI_API_KEY}}เป็นส่วนหัว; ตั้งค่าOPENAI_API_KEYในตัวแปรสภาพแวดล้อมเพื่อไม่ให้มีอยู่ในซอร์สโค้ด - วางเนื้อหา JSON พร้อมพรอมต์ของคุณ; Apidog จะตรวจสอบกับสเปค OpenAPI และแสดงประเภทที่ไม่ตรงกันก่อนที่คุณจะส่ง
- กด Send การตอบกลับรูปภาพจะแสดงผลในบรรทัด; บันทึกรูปภาพที่ดี, ติดแท็กรูปภาพที่ไม่ดี, แยกคำขอสำหรับตัวแปรต่างๆ
- บันทึกสภาพแวดล้อมสำหรับ
thinking: off,thinking: mediumและthinking: highเพื่อเปรียบเทียบพรอมต์เดียวกันในระดับการคิดเหตุผลที่ต่างกัน
คุณสมบัติการเปรียบเทียบคำขอของ Apidog เป็นส่วนที่สำคัญที่สุดที่นี่ คุณปรับแต่งพารามิเตอร์เดียว; คุณเห็นรูปภาพก่อนและหลังเคียงข้างกัน; คุณยืนยันผลลัพธ์ที่ชนะไปยังคลังพรอมต์ที่ทั้งทีมของคุณใช้ร่วมกัน นี่คือเวิร์กโฟลว์ที่เทอร์มินัลไม่สามารถให้คุณได้
หากคุณมาจากไคลเอนต์ HTTP ทั่วไปหรือ Postman workspace ที่เสียหาย ดาวน์โหลด Apidog และเชื่อมต่อกับคีย์ OpenAI ของคุณ การตั้งค่าใช้เวลาน้อยกว่าห้านาที ทีมที่กำลังประเมินทางเลือกอื่นสามารถอ่าน คู่มือการทดสอบ API โดยไม่ต้องใช้ Postman และ ภาพรวมส่วนขยาย Apidog VS Code ของเราได้
ข้อผิดพลาดที่พบบ่อย
ข้อผิดพลาดไม่กี่อย่างที่มักจะทำให้เสียเครดิตและเวลาในสัปดาห์แรกที่ใช้ gpt-image-2
- การใช้
quality: "standard"สำหรับพรอมต์ที่มีข้อความจำนวนมาก คุณภาพมาตรฐานจะทำให้ข้อความขนาดเล็กผิดเพี้ยน ให้เปลี่ยนไปใช้highเมื่อป้ายกำกับ, ไอคอน หรือข้อความ UI มีความสำคัญ - การใส่พรอมต์มากเกินไป (Over-prompting) 32k ตัวอักษรคือเพดาน ไม่ใช่เป้าหมาย เมื่อเกินสองสามร้อยโทเค็น โมเดลจะเริ่มเพิกเฉยต่อคำสั่งก่อนหน้า ให้พรอมต์มีความยาวไม่เกิน 500 คำ และใช้
thinkingเพื่อบังคับใช้ข้อจำกัดที่ซับซ้อน - การคาดหวังความสามารถในการทำซ้ำจาก
seedSeed ช่วยลดความแปรปรวน แต่ไม่สามารถตรึงเอาต์พุตได้ หากคุณต้องการภาพที่เหมือนเดิมเป๊ะ ให้แคชไบต์ไว้; อย่าสร้างใหม่ - การส่ง URL ของ OpenAI URL เหล่านี้จะหมดอายุในหนึ่งชั่วโมง ควรรีบคัดลอกไปยังที่เก็บข้อมูลของคุณเองก่อนที่จะให้บริการต่อปลายทาง
- การเรียกปลายทางในลูปแน่น (tight loop) การสร้างภาพเป็นกระบวนการที่ช้า ให้กระจายการทำงานไปยัง workers หลายตัวและเคารพส่วนหัวข้อจำกัดอัตรา; ลูปแน่นแบบต่อเนื่องจะแค่เข้าคิวและหมดเวลา
คำถามที่พบบ่อย
gpt-image-2 แตกต่างจาก gpt-image-1 ในระดับ API อย่างไร?ปลายทางเดียวกัน, การยืนยันตัวตนเดียวกัน พารามิเตอร์ใหม่: thinking (off/low/medium/high), ค่า size เพิ่มเติมสูงสุด 2000 พิกเซล และ n สูงสุด 10 พร้อมสไตล์ที่ใช้ร่วมกัน การรวม SDK ที่มีอยู่ยังคงทำงานได้หลังจากเปลี่ยน ID โมเดล; คุณเพียงแค่เพิ่มพารามิเตอร์ใหม่ในส่วนที่ช่วย สำหรับความแตกต่างทั้งหมด ดู ภาพรวม ChatGPT Images 2.0
วิธีที่เร็วที่สุดในการสร้างต้นแบบการรวม gpt-image-2 คืออะไร?สร้างคำขอใน Apidog, บันทึกสภาพแวดล้อมสองแบบ (มาตรฐาน vs การคิด), และวนซ้ำพรอมต์โดยไม่ต้องแตะโค้ด ส่งออกคำขอสุดท้ายเป็น curl หรือโค้ด SDK เมื่อคุณพร้อมที่จะใช้งานจริง
API รองรับการแก้ไขภาพ (image editing) หรือการเติมเต็มภาพ (inpainting) หรือไม่?ปลายทางสำหรับการแก้ไขและการสร้างตัวแปร (variation) ตามรูปแบบเดียวกับรุ่นก่อนหน้าภายใต้ ID โมเดลใหม่ ตรวจสอบ การอ้างอิงโมเดล gpt-image-2 สำหรับสคีมาล่าสุด; พารามิเตอร์สำหรับมาสก์และรูปภาพอินพุตมีเอกสารอยู่ที่นั่น
ฉันสามารถใช้ gpt-image-2 สำหรับผลงานเชิงพาณิชย์ได้หรือไม่?ได้ ภายใต้นโยบายการใช้งานมาตรฐานของ OpenAI คุณเป็นเจ้าของรูปภาพที่สร้างขึ้น; OpenAI ยังคงสงวนสิทธิ์ในการใช้ข้อมูลอินพุตและเอาต์พุตสำหรับการตรวจสอบการละเมิด ตัวละครที่มีเครื่องหมายการค้าและบุคคลสาธารณะที่ระบุชื่อยังคงถูกจำกัดโดยระบบป้องกัน
ค่าใช้จ่ายสำหรับการใช้งานจริงเป็นอย่างไร?โดยประมาณ $0.21 ต่อรูปภาพคุณภาพสูงขนาด 1024x1024 ในโหมดมาตรฐาน 10,000 รูปภาพต่อเดือนจะมีค่าใช้จ่ายประมาณ $2,100 โดยไม่มีการคิด เพิ่ม 20–80% สำหรับโหมดการคิด เปรียบเทียบกับทางเลือกที่โฮสต์เอง เช่น คู่มือ API GLM 5V Turbo และ การรวม Qwen 3.5 Omni ของเรา หากงบประมาณสำคัญกว่าคุณภาพสูงสุด
มีทางเลือกที่ถูกกว่าพร้อมการเรนเดอร์ข้อความที่คล้ายกันหรือไม่?ยังไม่มีในคุณภาพเดียวกันสำหรับข้อความหลายภาษา โมเดลแบบโอเพนซอร์สได้ลดช่องว่างในการจัดองค์ประกอบลง แต่ยังคงล้าหลังในสคริปต์ CJK และ Indic
