|
Arabic / Persian / Urdu şekillendirme desteği Üretici tarafı şekillendirme hattı (v2.85.0 - v2.119.68)
|
OpenType GSUB motoru CFF / OpenType alt kümeleme |
HotPDF, Unicode girdili Arapça, Farsça ve Urduca dizileri PDF metni yazılırken Arapça Presentation Forms biçimlerine çeviren üretici tarafı bir shaping hattı çalıştırır; böylece okuyucu uygulamalar, kendi başlarına Harfbuzz sınıfı bir shaper'a ihtiyaç duymadan konumsal / bağlantı (ligature) gliflerini doğrudan alır.
Hattın yaptığı iş Konumsal shaping (v2.85.0): her Arapça temel harfinin en fazla dört konumsal biçimi vardır — isolated (
LAM-ALEF zorunlu ligatürü (v2.119.32): Arapça Unicode Shaping spec; herhangi bir LAM'ın (U+0644) hemen ardından bir ALEF gelmesi (U+0627 düz, U+0622 maddalı, U+0623 üst hamzalı, U+0625 alt hamzalı) hâlinde tek bir ligatür glifine katlanmasını zorunlu kılar (U+FEFB - U+FEFC; uygun hamza / madda varyantlarıyla isolated / final biçimleri). Bu, Arapça tipografideki az sayıda isteğe bağlı olmayan ligatürden biridir ve doğruluk için gereklidir; bunları ayrı glifler olarak çizmek, ana dili okuyanların hemen bozuk metin olarak tanıdığı bir çıktı üretir. HotPDF bu katlamayı yazım sırasında gerçekleştirir; böylece çağıranların kendi kod yolunda Harfbuzz sınıfı bir shaper'a ihtiyacı olmaz.
Farsça / Urduca çekirdek 9 harf (v2.119.35): Farsça ve Urduca, Arabic Presentation Forms-B bloğunda (U+FE70 - U+FEFC) bulunmayan harflerle Arapçayı genişletir. En çok kullanılan 9 such harf — PEH (U+067E), TCHEH (U+0686), JEH (U+0698), KEH (U+06A9 / U+06AF), GAF (U+06AF), NOON GHUNNA (U+06BA), HEH DOACHASHMEE (U+06BE), YEH BARREE (U+06D2) ve HEH GOAL (U+06C1) dahil — Arabic Presentation Forms-A'da (U+FB50 - U+FDFF) sunum biçimlerine sahiptir. HotPDF artık konumsal shaping sırasında bu harfleri uygun Forms-A glifleriyle eşler; böylece Farsça ve Urduca metin, herhangi bir okuyucuda doğru init / medi / fina / isol biçimleriyle çizilir.
Arabic Extended-A + Supplement (v2.119.52, v2.119.56): birleşme sınıfı tablosu artık kalan Arabic Extended-A karakterlerini (ALEF WASLA / NOON GHUNNA / HEH varyantları), Arabic Supplement U+0750-U+077F aralığını ve üst Arabic Extended-A U+08A0-U+08FF aralığını kapsıyor. Sabit bir Presentation Forms-A kodlaması olan karakterler mevcut 4 konumlu shaper üzerinden eşlenir; olmayanlar (Extended-A'nın çoğu) yalnızca birleşme sınıfı sınıflandırması alır; böylece karakterin kendisi değişmeden geçse bile komşuları doğru şekillenir. v2.119.56, v2.119.52'nin getirdiği iki yanlış Forms-A eşlemesini (U+06C2 / U+06C3) düzeltti.
Farsça / Urduca Forms-B tam kapsamı (v2.119.57): birleşme sınıfı tablosu, tam U+0672-U+06D5 aralığını kapsayacak şekilde genişletildi (REH / DAL / SEEN / SAD / TAH / AIN / FEH / QAF / KAF / GAF / LAM / NOON / HEH / WAW / YEH varyantlarını kapsayan yaklaşık 80 karakter) ve 26 yeni Presentation Forms-A eşlemesi eklendi (15 D sınıfı 4 biçimli + 11 R sınıfı 2 biçimli). Özellikle Urduca'nın standart 'h'si HEH DOACHASHMEE (U+06BE → FBAA-FBAD) ve Urduca kelime sonu yeh'si YEH BARREE (U+06D2 → FBAE-FBAF), artık v2.119.52 ALEF WASLA / NOON GHUNNA geçici düzeltmesinin yanlış kullandığı Forms-A yuvalarına doğru biçimde eşleniyor. Sabit Forms-A kapsamı artık 40+ kaynak karakteri kapsıyor.
YEH-HAMZA + ünlü ligatürü son geçişi (v2.119.58): konumsal şekillendirmenin ardından
Allah ligatürü (v2.119.60): ALEF + LAM + LAM + HEH şeklindeki dört karakterli dizi, U+FDF2 ARABIC LIGATURE ALLAH ISOLATED FORM'a katlanır.
Bismillah ifadesi ligatürü (v2.119.62): standart 22 kod noktalı Bismillah ifadesi "بسم الله الرحمن الرحيم", tek bir glife katlanır: U+FDFD ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM.
Herkese açık sorgu yardımcıları
Çağıranlar nasıl kullanır Hattı bir kez
Yazı tipi gereksinimleri
Noto Sans Arabic (Latin + Arapça; Forms-A + Forms-B + Arabic Extended-A). Noto Naskh Arabic, Noto Naskh Arabic UI. Amiri (traditional Naskh, full Forms-A + Forms-B coverage). Scheherazade New (SIL; Müslüman dünyanın dilleri için tasarlanmıştır). Microsoft Arabic Typesetting / Tahoma / Times New Roman (Windows ile paketli, tam Forms-B; bazılarında Forms-A kapsamı vardır).
Kayıtlı yazı tipinde, türetilmiş bir sunum biçimi için glif yoksa HotPDF temel Unicode kod noktasına geri döner ve onu değiştirmeden yazar; okuyucular daha sonra kendi shaping'lerini deneyebilir (Acrobat, Foxit) ya da
Tipik iş akışı
PDF.RegisterUnicodeTTF('NotoArab', 'NotoSansArabic-Regular.ttf'); PDF.AutoShapeArabic:= True; PDF.BeginDoc; PDF.CurrentPage.SetFont('NotoArab', [], 14); PDF.CurrentPage.RtLTextOut(100, 700, 0, UnicodeString(#$0645#$0631#$062D#$0628#$0627)); // "marhaba" (hello) PDF.EndDoc;
Otomatik Phase 8 hattı entegrasyonu (v2.119.59 - v2.119.68) v2.119.59; shaping hattını statik son geçiş katlamasının ötesine taşıyıp otomatik GSUB güdümlü yazı tipine özgü ikameye yükselten, isteğe bağlı
ToUnicode CMap ligatürü ters eşlemesi (v2.119.61, v2.119.62, v2.119.65)
PUA sentetik kod noktası yazımı (v2.119.68)
OpenType GSUB motoruyla ilişkisi Yukarıda anlatılan statik son geçiş shaper'ı (v2.85.0 + v2.119.32 / 58 / 60 / 62) varsayılan olarak OpenType GSUB motorundan bağımsızdır.
Unicode kod noktası olmayan ikame glifler için çağıranlar,
Kapsam ve sınırlamalar BiDi algoritması bu sayfanın kapsamı dışındadır: çağıranlar, karışık LTR ve RTL dizilerini hâlâ kendileri sıralamalı ya da ayrı bir BiDi kitaplığı kullanmalı. GPOS, Indic/Tibetçe/Moğolca, İbranice, N'Ko, Adlam, Thai/Lao ve Cava desteği artık ayrı isteğe bağlı shaping bayrağı ve API sayfalarında yaşıyor; bu sayfa yalnızca statik ve GSUB tabanlı Arapça shaping'e odaklanıyor
Ayrıca bkz.: OpenType GSUB Substitution Engine, Otomatik shaping hattı (Phase 8), Süryanice / Moğolca / Devanagari shaping, THotPDF.AssignSyntheticCodepointForGID, THPDFPage.RtLTextOut, THPDFPage.UnicodeTextOut, CFF / OpenType yazı tipi alt kümeleme |